mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| var should = require("should");
 | |
| var sinon = require("sinon");
 | |
| var PluginEnvironment = require("./helpers/PluginEnvironment");
 | |
| var applyPluginWithOptions = require("./helpers/applyPluginWithOptions");
 | |
| var WarnCaseSensitiveModulesPlugin = require("../lib/WarnCaseSensitiveModulesPlugin");
 | |
| 
 | |
| describe("WarnCaseSensitiveModulesPlugin", function() {
 | |
| 	var env;
 | |
| 
 | |
| 	beforeEach(function() {
 | |
| 		env = {};
 | |
| 	});
 | |
| 
 | |
| 	it("has apply function", function() {
 | |
| 		(new WarnCaseSensitiveModulesPlugin()).apply.should.be.a.Function();
 | |
| 	});
 | |
| 
 | |
| 	describe("when applied", function() {
 | |
| 		beforeEach(function() {
 | |
| 			env.eventBindings = applyPluginWithOptions(WarnCaseSensitiveModulesPlugin);
 | |
| 		});
 | |
| 
 | |
| 		it("binds one event handler", function() {
 | |
| 			env.eventBindings.length.should.be.exactly(1);
 | |
| 		});
 | |
| 
 | |
| 		describe("compilation handler", function() {
 | |
| 			beforeEach(function() {
 | |
| 				env.pluginEnvironment = new PluginEnvironment();
 | |
| 				env.eventBinding = env.eventBindings[0];
 | |
| 				env.eventBinding.handler(env.pluginEnvironment.getEnvironmentStub());
 | |
| 				env.compilationEventBindings = env.pluginEnvironment.getEventBindings();
 | |
| 			});
 | |
| 
 | |
| 			it("binds to compilation event", function() {
 | |
| 				env.eventBinding.name.should.be.exactly("compilation");
 | |
| 			});
 | |
| 
 | |
| 			it("binds one compilation event handler", function() {
 | |
| 				env.compilationEventBindings.length.should.be.exactly(1);
 | |
| 			});
 | |
| 
 | |
| 			describe("seal handler", function() {
 | |
| 				beforeEach(function() {
 | |
| 					env.compilationEventContext = {
 | |
| 						modules: [{
 | |
| 								identifier: () => "Foo",
 | |
| 								reasons: []
 | |
| 							},
 | |
| 							{
 | |
| 								identifier: () => "Bar",
 | |
| 								reasons: []
 | |
| 							},
 | |
| 							{
 | |
| 								identifier: () => "fOO",
 | |
| 								reasons: []
 | |
| 							}
 | |
| 						],
 | |
| 						warnings: []
 | |
| 					};
 | |
| 					env.compilationEventBinding = env.compilationEventBindings[0];
 | |
| 					env.compilationEventBinding.handler.call(env.compilationEventContext);
 | |
| 				});
 | |
| 
 | |
| 				it("binds to seal event", function() {
 | |
| 					env.compilationEventBinding.name.should.be.exactly("seal");
 | |
| 				});
 | |
| 
 | |
| 				it("adds warning for each plugin with case insensitive name", function() {
 | |
| 					env.compilationEventContext.warnings.length.should.be.exactly(1);
 | |
| 					env.compilationEventContext.warnings[0].message.should.be.exactly(`
 | |
| There are multiple modules with names that only differ in casing.
 | |
| This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
 | |
| Use equal casing. Compare these module identifiers:
 | |
| * Foo
 | |
| * fOO
 | |
| `.trim());
 | |
| 				});
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| });
 |