161 lines
3.8 KiB
JavaScript
161 lines
3.8 KiB
JavaScript
"use strict";
|
|
|
|
/* globals describe it */
|
|
const path = require("path");
|
|
const MemoryFs = require("memory-fs");
|
|
const webpack = require("..");
|
|
|
|
const createMultiCompiler = () => {
|
|
const compiler = webpack([
|
|
{
|
|
context: path.join(__dirname, "fixtures"),
|
|
entry: "./a.js"
|
|
},
|
|
{
|
|
context: path.join(__dirname, "fixtures"),
|
|
entry: "./b.js"
|
|
}
|
|
]);
|
|
compiler.outputFileSystem = new MemoryFs();
|
|
return compiler;
|
|
};
|
|
|
|
describe("MultiCompiler", function() {
|
|
jest.setTimeout(20000);
|
|
|
|
it("should trigger 'run' for each child compiler", done => {
|
|
const compiler = createMultiCompiler();
|
|
let called = 0;
|
|
|
|
compiler.hooks.run.tap("MultiCompiler test", () => called++);
|
|
compiler.run(err => {
|
|
if (err) {
|
|
throw err;
|
|
} else {
|
|
expect(called).toBe(2);
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
|
|
it("should trigger 'watchRun' for each child compiler", done => {
|
|
const compiler = createMultiCompiler();
|
|
let called = 0;
|
|
|
|
compiler.hooks.watchRun.tap("MultiCompiler test", () => called++);
|
|
const watcher = compiler.watch(1000, err => {
|
|
if (err) {
|
|
throw err;
|
|
} else {
|
|
watcher.close();
|
|
expect(called).toBe(2);
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
|
|
it("should not be run twice at a time (run)", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
compiler.run((err, stats) => {
|
|
if (err) return done();
|
|
});
|
|
});
|
|
it("should not be run twice at a time (watch)", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
const watcher = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
compiler.watch({}, (err, stats) => {
|
|
if (err) return watcher.close(done);
|
|
});
|
|
});
|
|
it("should not be run twice at a time (run - watch)", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
compiler.watch({}, (err, stats) => {
|
|
if (err) return done();
|
|
});
|
|
});
|
|
it("should not be run twice at a time (watch - run)", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
let watcher;
|
|
watcher = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
compiler.run((err, stats) => {
|
|
if (err) return watcher.close(done);
|
|
});
|
|
});
|
|
it("should not be run twice at a time (instance cb)", function(done) {
|
|
const compiler = webpack(
|
|
{
|
|
context: __dirname,
|
|
mode: "production",
|
|
entry: "./c",
|
|
output: {
|
|
path: "/",
|
|
filename: "bundle.js"
|
|
}
|
|
},
|
|
() => {}
|
|
);
|
|
compiler.outputFileSystem = new MemoryFs();
|
|
compiler.run((err, stats) => {
|
|
if (err) return done();
|
|
});
|
|
});
|
|
it("should run again correctly after first compilation", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
it("should watch again correctly after first compilation", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
|
|
let watcher;
|
|
watcher = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
watcher.close(done);
|
|
});
|
|
});
|
|
});
|
|
it("should run again correctly after first closed watch", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
const watching = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
watching.close(() => {
|
|
compiler.run((err, stats) => {
|
|
if (err) return done(err);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
it("should watch again correctly after first closed watch", function(done) {
|
|
const compiler = createMultiCompiler();
|
|
const watching = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
});
|
|
watching.close(() => {
|
|
let watcher;
|
|
watcher = compiler.watch({}, (err, stats) => {
|
|
if (err) return done(err);
|
|
watcher.close(done);
|
|
});
|
|
});
|
|
});
|
|
});
|