forked from webpack/webpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExamples.test.js
49 lines (45 loc) · 1.41 KB
/
Examples.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"use strict";
/* globals describe it */
require("should");
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) => {
it("should compile " + path.relative(basePath, examplePath), function(done) {
this.timeout(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, "js");
options.output.publicPath = "js/";
if(!options.output.filename)
options.output.filename = "output.js";
if(!options.entry)
options.entry = "./example.js";
}
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();
});
});
});
});