mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| "use strict";
 | |
| 
 | |
| /* globals describe it */
 | |
| const path = require("path");
 | |
| const fs = require("fs");
 | |
| const webpack = require("../");
 | |
| 
 | |
| describe("Examples", () => {
 | |
| 	const basePath = path.join(__dirname, "..", "examples");
 | |
| 	const examples = require("../examples/examples.js");
 | |
| 
 | |
| 	examples.forEach((examplePath) => {
 | |
| 		const filterPath = path.join(examplePath, "test.filter.js");
 | |
| 		if(fs.existsSync(filterPath) && !require(filterPath)()) {
 | |
| 			describe.skip(path.relative(basePath, examplePath), () => it("filtered"));
 | |
| 			return;
 | |
| 		}
 | |
| 		it("should compile " + path.relative(basePath, examplePath), function(done) {
 | |
| 			jest.setTimeout(20000);
 | |
| 			let options = {};
 | |
| 			let webpackConfigPath = path.join(examplePath, "webpack.config.js");
 | |
| 			webpackConfigPath = webpackConfigPath.substr(0, 1).toUpperCase() + webpackConfigPath.substr(1);
 | |
| 			if(fs.existsSync(webpackConfigPath))
 | |
| 				options = require(webpackConfigPath);
 | |
| 			if(Array.isArray(options))
 | |
| 				options.forEach(processOptions);
 | |
| 			else
 | |
| 				processOptions(options);
 | |
| 
 | |
| 			function processOptions(options) {
 | |
| 				options.context = examplePath;
 | |
| 				options.output = options.output || {};
 | |
| 				options.output.pathinfo = true;
 | |
| 				options.output.path = path.join(examplePath, "dist");
 | |
| 				options.output.publicPath = "dist/";
 | |
| 				if(!options.entry)
 | |
| 					options.entry = "./example.js";
 | |
| 				if(!options.plugins)
 | |
| 					options.plugins = [];
 | |
| 				// To support deprecated loaders
 | |
| 				// TODO remove in webpack 5
 | |
| 				options.plugins.push(new webpack.LoaderOptionsPlugin({
 | |
| 					options: {}
 | |
| 				}));
 | |
| 			}
 | |
| 			webpack(options, (err, stats) => {
 | |
| 				if(err) return done(err);
 | |
| 				stats = stats.toJson({
 | |
| 					errorDetails: true
 | |
| 				});
 | |
| 				if(stats.errors.length > 0) {
 | |
| 					return done(new Error(stats.errors[0]));
 | |
| 				}
 | |
| 				done();
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| });
 |