mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
"use strict";
 | 
						|
 | 
						|
const path = require("path");
 | 
						|
const webpack = require("../lib/webpack");
 | 
						|
 | 
						|
describe("Integration", () => {
 | 
						|
	jest.setTimeout(10000);
 | 
						|
	it("should compile library1", done => {
 | 
						|
		webpack(
 | 
						|
			{
 | 
						|
				mode: "production",
 | 
						|
				entry: "library1",
 | 
						|
				bail: true,
 | 
						|
				context: path.join(__dirname, "browsertest"),
 | 
						|
				output: {
 | 
						|
					pathinfo: true,
 | 
						|
					path: path.join(__dirname, "browsertest", "js"),
 | 
						|
					filename: "library1.js",
 | 
						|
					library: "library1"
 | 
						|
				}
 | 
						|
			},
 | 
						|
			(err, stats) => {
 | 
						|
				if (err) throw err;
 | 
						|
				expect(stats.hasErrors()).toBe(false);
 | 
						|
				expect(stats.hasWarnings()).toBe(false);
 | 
						|
				done();
 | 
						|
			}
 | 
						|
		);
 | 
						|
	});
 | 
						|
	it("should compile library2", done => {
 | 
						|
		webpack(
 | 
						|
			{
 | 
						|
				mode: "production",
 | 
						|
				entry: "library2",
 | 
						|
				context: path.join(__dirname, "browsertest"),
 | 
						|
				output: {
 | 
						|
					pathinfo: true,
 | 
						|
					path: path.join(__dirname, "browsertest", "js"),
 | 
						|
					filename: "library2.js",
 | 
						|
					publicPath: "js/",
 | 
						|
					library: "library2"
 | 
						|
				},
 | 
						|
				bail: true,
 | 
						|
				module: {
 | 
						|
					rules: [
 | 
						|
						{
 | 
						|
							test: /extra2\.js/,
 | 
						|
							loader: "raw!extra!val?cacheable",
 | 
						|
							enforce: "post"
 | 
						|
						}
 | 
						|
					]
 | 
						|
				},
 | 
						|
				amd: {
 | 
						|
					fromOptions: true
 | 
						|
				},
 | 
						|
				optimization: {
 | 
						|
					minimize: false
 | 
						|
				},
 | 
						|
				plugins: [
 | 
						|
					new webpack.optimize.LimitChunkCountPlugin({
 | 
						|
						maxChunks: 1
 | 
						|
					}),
 | 
						|
					new webpack.DefinePlugin({
 | 
						|
						"typeof CONST_TYPEOF": JSON.stringify("typeof"),
 | 
						|
						CONST_TRUE: true,
 | 
						|
						CONST_FALSE: false,
 | 
						|
						CONST_FUNCTION: function() {
 | 
						|
							return "ok";
 | 
						|
						},
 | 
						|
						CONST_NUMBER: 123,
 | 
						|
						CONST_NUMBER_EXPR: "1*100+23",
 | 
						|
						CONST_OBJECT: {
 | 
						|
							A: 1,
 | 
						|
							B: JSON.stringify("B"),
 | 
						|
							C: function() {
 | 
						|
								return "C";
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}),
 | 
						|
					function() {
 | 
						|
						this.hooks.normalModuleFactory.tap("IntegrationTest", nmf => {
 | 
						|
							nmf.hooks.afterResolve.tapAsync(
 | 
						|
								"IntegrationTest",
 | 
						|
								(data, callback) => {
 | 
						|
									data.resource = data.resource.replace(
 | 
						|
										/extra\.js/,
 | 
						|
										"extra2.js"
 | 
						|
									);
 | 
						|
									setTimeout(() => callback(null, data), 50);
 | 
						|
								}
 | 
						|
							);
 | 
						|
						});
 | 
						|
					}
 | 
						|
				]
 | 
						|
			},
 | 
						|
			(err, stats) => {
 | 
						|
				if (err) throw err;
 | 
						|
				expect(stats.hasErrors()).toBe(false);
 | 
						|
				expect(stats.hasWarnings()).toBe(false);
 | 
						|
				done();
 | 
						|
			}
 | 
						|
		);
 | 
						|
	});
 | 
						|
});
 |