mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
"use strict";
 | 
						|
 | 
						|
require("./helpers/warmup-webpack");
 | 
						|
 | 
						|
const path = require("path");
 | 
						|
 | 
						|
describe("WatchClose", () => {
 | 
						|
	jest.setTimeout(5000);
 | 
						|
 | 
						|
	describe("multiple calls watcher", () => {
 | 
						|
		const fixturePath = path.join(__dirname, "fixtures");
 | 
						|
		const outputPath = path.join(__dirname, "js/WatchClose");
 | 
						|
		const filePath = path.join(fixturePath, "a.js");
 | 
						|
 | 
						|
		let compiler;
 | 
						|
		let watcher;
 | 
						|
 | 
						|
		beforeEach(() => {
 | 
						|
			const webpack = require("../");
 | 
						|
			compiler = webpack({
 | 
						|
				mode: "development",
 | 
						|
				entry: filePath,
 | 
						|
				output: {
 | 
						|
					path: outputPath,
 | 
						|
					filename: "bundle.js"
 | 
						|
				}
 | 
						|
			});
 | 
						|
			watcher = compiler.watch({ poll: 300 }, () => {});
 | 
						|
		});
 | 
						|
 | 
						|
		afterEach(() => {
 | 
						|
			watcher.close();
 | 
						|
			compiler = null;
 | 
						|
		});
 | 
						|
 | 
						|
		function close(watcher, callback) {
 | 
						|
			return new Promise(res => {
 | 
						|
				const onClose = () => {
 | 
						|
					callback();
 | 
						|
					res();
 | 
						|
				};
 | 
						|
				watcher.close(onClose);
 | 
						|
			});
 | 
						|
		}
 | 
						|
 | 
						|
		it("each callback should be called", async () => {
 | 
						|
			let num = 0;
 | 
						|
 | 
						|
			await Promise.all([
 | 
						|
				close(watcher, () => (num += 1)),
 | 
						|
				close(watcher, () => (num += 10))
 | 
						|
			]);
 | 
						|
			await Promise.all([
 | 
						|
				close(watcher, () => (num += 100)),
 | 
						|
				close(watcher, () => (num += 1000))
 | 
						|
			]);
 | 
						|
 | 
						|
			expect(num).toBe(1111);
 | 
						|
		});
 | 
						|
	});
 | 
						|
});
 |