| 
									
										
										
										
											2018-01-19 00:14:19 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const SideEffectsFlagPlugin = require("../lib/optimize/SideEffectsFlagPlugin"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("SideEffectsFlagPlugin", () => { | 
					
						
							|  |  |  | 	it("should assume true", () => { | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", undefined) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							| 
									
										
										
										
											2018-01-19 00:14:19 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it("should understand boolean values", () => { | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", true) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", false) | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							| 
									
										
										
										
											2018-01-19 00:14:19 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it("should understand a glob", () => { | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"./src/**/*.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./x.js", "./src/**/*.js") | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"./**/src/x/y/z.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "**.js") | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"./src/**/z.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"./**/x/**/z.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"./**/src/**" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "./**/src/*") | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "*.js") | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "x/**/z.js") | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"src/**/z.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"src/**/{x,y,z}.js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"src/**/[x-z].js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects( | 
					
						
							|  |  |  | 				"./src/x/y/z.js", | 
					
						
							|  |  |  | 				"src/**/[[:lower:]].js" | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "!*.js") | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "!**/*.js") | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							| 
									
										
										
										
											2018-01-19 00:14:19 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	it("should understand arrays", () => { | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		const array = ["./src/**/*.js", "./dirty.js"]; | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", array) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./dirty.js", array) | 
					
						
							|  |  |  | 		).toBe(true); | 
					
						
							|  |  |  | 		expect( | 
					
						
							|  |  |  | 			SideEffectsFlagPlugin.moduleHasSideEffects("./clean.js", array) | 
					
						
							|  |  |  | 		).toBe(false); | 
					
						
							| 
									
										
										
										
											2018-01-19 00:14:19 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }); |