"use strict"; const should = require("should"); const path = require("path"); const webpack = require("../lib/webpack"); describe("Integration", function() { this.timeout(5000); it("should compile library1", (done) => { webpack({ 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; stats.hasErrors().should.be.not.ok(); stats.hasWarnings().should.be.not.ok(); done(); }); }); it("should compile library2", (done) => { webpack({ 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 }, resolve: { // cannot resolve should outside the outermost node_modules // so it is injected here alias: { should: require.resolve("should") } }, 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.plugin("normal-module-factory", (nmf) => { nmf.plugin("after-resolve", (data, callback) => { data.resource = data.resource.replace(/extra\.js/, "extra2.js"); setTimeout(() => callback(null, data), 50); }); }); } ] }, (err, stats) => { if(err) throw err; stats.hasErrors().should.be.not.ok(); stats.hasWarnings().should.be.not.ok(); done(); }); }); });