| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*globals describe it before after  */ | 
					
						
							|  |  |  | const path = require("path"); | 
					
						
							| 
									
										
										
										
											2017-11-15 21:08:11 +08:00
										 |  |  | require("should"); | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 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 = () => { | 
					
						
							|  |  |  | 	return createCompiler([{ | 
					
						
							|  |  |  | 		context: path.join(__dirname, "fixtures"), | 
					
						
							|  |  |  | 		entry: "./a.js" | 
					
						
							|  |  |  | 	}]); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 16:52:30 +08:00
										 |  |  | describe("WatcherEvents", function() { | 
					
						
							|  |  |  | 	this.timeout(10000); | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	it("should emit 'watch-close' when using single-compiler mode and the compiler is not running", function(done) { | 
					
						
							|  |  |  | 		let called = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		const compiler = createSingleCompiler(); | 
					
						
							|  |  |  | 		const watcher = compiler.watch({}, (err, stats) => { | 
					
						
							|  |  |  | 			called.should.be.exactly(true); | 
					
						
							|  |  |  | 			done(err); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 16:52:30 +08:00
										 |  |  | 		compiler.plugin("watch-close", () => { | 
					
						
							|  |  |  | 			called = true; | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 16:52:30 +08:00
										 |  |  | 		compiler.plugin("done", () => { | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 			watcher.close(); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it("should emit 'watch-close' when using multi-compiler mode and the compiler is not running", function(done) { | 
					
						
							|  |  |  | 		let called = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		const compiler = createMultiCompiler(); | 
					
						
							|  |  |  | 		const watcher = compiler.watch({}, (err, stats) => { | 
					
						
							|  |  |  | 			called.should.be.exactly(true); | 
					
						
							|  |  |  | 			done(err); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 16:52:30 +08:00
										 |  |  | 		compiler.plugin("watch-close", () => { | 
					
						
							|  |  |  | 			called = true; | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 16:52:30 +08:00
										 |  |  | 		compiler.plugin("done", () => { | 
					
						
							| 
									
										
										
										
											2017-03-06 11:32:34 +08:00
										 |  |  | 			watcher.close(); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }); |