webpack/test/Examples.test.js

63 lines
1.8 KiB
JavaScript
Raw Normal View History

2017-01-18 18:33:28 +08:00
"use strict";
2019-08-06 14:55:00 +08:00
/* describe it */
2017-01-18 18:33:28 +08:00
const path = require("path");
const fs = require("graceful-fs");
2018-12-09 21:26:35 +08:00
const webpack = require("..");
2013-12-03 20:01:03 +08:00
2017-01-18 18:33:28 +08:00
describe("Examples", () => {
const basePath = path.join(__dirname, "..", "examples");
const examples = require("../examples/examples.js");
2013-12-03 20:01:03 +08:00
2018-02-25 18:46:17 +08:00
examples.forEach(examplePath => {
const filterPath = path.join(examplePath, "test.filter.js");
const relativePath = path.relative(basePath, examplePath);
2018-02-25 18:46:17 +08:00
if (fs.existsSync(filterPath) && !require(filterPath)()) {
describe.skip(relativePath, () => it("filtered"));
return;
}
2018-02-25 18:46:17 +08:00
it(
"should compile " + relativePath,
2020-03-29 06:10:15 +08:00
function (done) {
2018-02-25 18:46:17 +08:00
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 (typeof options === "function") options = options();
2018-02-25 18:46:17 +08:00
if (Array.isArray(options)) options.forEach(processOptions);
else processOptions(options);
2015-08-09 18:42:43 +08:00
2018-02-25 18:46:17 +08:00
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 = [];
2015-01-13 00:45:30 +08:00
}
2018-02-25 18:46:17 +08:00
webpack(options, (err, stats) => {
if (err) return done(err);
2019-11-11 03:57:14 +08:00
if (stats.hasErrors()) {
return done(
new Error(
stats.toString({
all: false,
errors: true,
errorDetails: true,
errorStacks: true
})
)
);
2018-02-25 18:46:17 +08:00
}
done();
});
},
2018-04-27 18:01:45 +08:00
45000
2018-02-25 18:46:17 +08:00
);
2013-12-03 20:01:03 +08:00
});
2015-08-09 18:42:43 +08:00
});