2017-03-06 11:32:34 +08:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
/*globals describe it before after */
|
|
|
|
const path = require("path");
|
|
|
|
const MemoryFs = require("memory-fs");
|
|
|
|
const webpack = require("../");
|
|
|
|
|
|
|
|
const createCompiler = config => {
|
|
|
|
const compiler = webpack(config);
|
|
|
|
compiler.outputFileSystem = new MemoryFs();
|
|
|
|
return compiler;
|
|
|
|
};
|
|
|
|
|
|
|
|
const createSingleCompiler = () => {
|
|
|
|
return createCompiler({
|
|
|
|
context: path.join(__dirname, "fixtures"),
|
|
|
|
entry: "./a.js"
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const createMultiCompiler = () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
return createCompiler([
|
|
|
|
{
|
|
|
|
context: path.join(__dirname, "fixtures"),
|
|
|
|
entry: "./a.js"
|
|
|
|
}
|
|
|
|
]);
|
2017-03-06 11:32:34 +08:00
|
|
|
};
|
|
|
|
|
2018-01-24 23:00:43 +08:00
|
|
|
describe("WatcherEvents", () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
if (process.env.NO_WATCH_TESTS) {
|
2017-12-20 23:53:56 +08:00
|
|
|
it("long running tests excluded");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-01-24 23:00:43 +08:00
|
|
|
jest.setTimeout(10000);
|
2017-03-06 11:32:34 +08:00
|
|
|
|
2018-02-25 18:46:17 +08:00
|
|
|
it("should emit 'watch-close' when using single-compiler mode and the compiler is not running", done => {
|
2017-03-06 11:32:34 +08:00
|
|
|
let called = false;
|
|
|
|
|
|
|
|
const compiler = createSingleCompiler();
|
|
|
|
const watcher = compiler.watch({}, (err, stats) => {
|
2018-01-24 23:00:43 +08:00
|
|
|
expect(called).toBe(true);
|
2017-03-06 11:32:34 +08:00
|
|
|
done(err);
|
|
|
|
});
|
|
|
|
|
2017-12-20 23:51:24 +08:00
|
|
|
compiler.hooks.watchClose.tap("WatcherEventsTest", () => {
|
2017-05-29 16:52:30 +08:00
|
|
|
called = true;
|
2017-03-06 11:32:34 +08:00
|
|
|
});
|
|
|
|
|
2017-12-20 23:51:24 +08:00
|
|
|
compiler.hooks.done.tap("WatcherEventsTest", () => {
|
2017-03-06 11:32:34 +08:00
|
|
|
watcher.close();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-04-11 05:36:20 +08:00
|
|
|
it("should emit 'watch-close' when using multi-compiler mode and the compiler is not running", done => {
|
2017-03-06 11:32:34 +08:00
|
|
|
let called = false;
|
|
|
|
|
|
|
|
const compiler = createMultiCompiler();
|
|
|
|
const watcher = compiler.watch({}, (err, stats) => {
|
2018-01-24 23:00:43 +08:00
|
|
|
expect(called).toBe(true);
|
2017-03-06 11:32:34 +08:00
|
|
|
done(err);
|
|
|
|
});
|
|
|
|
|
2017-12-20 23:51:24 +08:00
|
|
|
compiler.hooks.watchClose.tap("WatcherEventsTest", () => {
|
2017-05-29 16:52:30 +08:00
|
|
|
called = true;
|
2017-03-06 11:32:34 +08:00
|
|
|
});
|
|
|
|
|
2017-12-20 23:51:24 +08:00
|
|
|
compiler.hooks.done.tap("WatcherEventsTest", () => {
|
2017-03-06 11:32:34 +08:00
|
|
|
watcher.close();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|