mirror of https://github.com/webpack/webpack.git
309 lines
5.6 KiB
JavaScript
309 lines
5.6 KiB
JavaScript
"use strict";
|
|
|
|
require("./helpers/warmup-webpack");
|
|
|
|
const { Volume, createFsFromVolume } = require("memfs");
|
|
|
|
const compile = (options) =>
|
|
new Promise((resolve, reject) => {
|
|
const webpack = require("..");
|
|
|
|
const compiler = webpack(options);
|
|
compiler.outputFileSystem = createFsFromVolume(new Volume());
|
|
compiler.run((err, stats) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(stats);
|
|
}
|
|
});
|
|
});
|
|
|
|
describe("MultiStats", () => {
|
|
it("should create JSON of children stats", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
const statsObject = stats.toJson();
|
|
expect(statsObject).toEqual(
|
|
expect.objectContaining({ children: expect.any(Array) })
|
|
);
|
|
expect(statsObject.children).toHaveLength(2);
|
|
});
|
|
|
|
it("should work with a boolean value", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
expect(stats.toJson(false)).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
],
|
|
}
|
|
`);
|
|
expect(stats.toString(false)).toMatchInlineSnapshot('""');
|
|
});
|
|
|
|
it("should work with a string value", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
expect(stats.toJson("none")).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
],
|
|
}
|
|
`);
|
|
expect(stats.toString("none")).toMatchInlineSnapshot('""');
|
|
});
|
|
|
|
it("should work with an object value", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
expect(
|
|
stats.toJson({
|
|
all: false,
|
|
version: false,
|
|
errorsCount: true,
|
|
warningsCount: true
|
|
})
|
|
).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"errorsCount": 0,
|
|
"name": undefined,
|
|
"warningsCount": 1,
|
|
},
|
|
Object {
|
|
"errorsCount": 0,
|
|
"name": undefined,
|
|
"warningsCount": 1,
|
|
},
|
|
],
|
|
"errorsCount": 0,
|
|
"warningsCount": 2,
|
|
}
|
|
`);
|
|
expect(
|
|
stats.toString({
|
|
all: false,
|
|
version: false,
|
|
errorsCount: true,
|
|
warningsCount: true
|
|
})
|
|
).toMatchInlineSnapshot(`
|
|
"webpack compiled with 1 warning
|
|
|
|
webpack compiled with 1 warning"
|
|
`);
|
|
});
|
|
|
|
it("should work with a boolean value for each children", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
const statsOptions = {
|
|
children: [false, false]
|
|
};
|
|
|
|
expect(stats.toJson(statsOptions)).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
],
|
|
}
|
|
`);
|
|
expect(stats.toString(statsOptions)).toMatchInlineSnapshot('""');
|
|
});
|
|
|
|
it("should work with a string value for each children", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
const statsOptions = {
|
|
children: ["none", "none"]
|
|
};
|
|
|
|
expect(stats.toJson(statsOptions)).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
],
|
|
}
|
|
`);
|
|
expect(stats.toString(statsOptions)).toMatchInlineSnapshot('""');
|
|
});
|
|
|
|
it("should work with an object value for each children", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
const statsOptions = {
|
|
children: [
|
|
{
|
|
all: false,
|
|
publicPath: true,
|
|
version: false,
|
|
errorsCount: true,
|
|
warningsCount: true
|
|
},
|
|
{
|
|
all: false,
|
|
version: false,
|
|
errorsCount: true,
|
|
warningsCount: true
|
|
}
|
|
]
|
|
};
|
|
|
|
expect(stats.toJson(statsOptions)).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"errorsCount": 0,
|
|
"name": undefined,
|
|
"publicPath": "auto",
|
|
"warningsCount": 1,
|
|
},
|
|
Object {
|
|
"errorsCount": 0,
|
|
"name": undefined,
|
|
"warningsCount": 1,
|
|
},
|
|
],
|
|
"errorsCount": 0,
|
|
"warningsCount": 2,
|
|
}
|
|
`);
|
|
expect(stats.toString(statsOptions)).toMatchInlineSnapshot(`
|
|
"PublicPath: auto
|
|
webpack compiled with 1 warning
|
|
|
|
webpack compiled with 1 warning"
|
|
`);
|
|
});
|
|
|
|
it("should work with an mixed values for each children", async () => {
|
|
const stats = await compile([
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/a"
|
|
},
|
|
{
|
|
context: __dirname,
|
|
entry: "./fixtures/b"
|
|
}
|
|
]);
|
|
|
|
const statsOptions = {
|
|
children: [
|
|
false,
|
|
{
|
|
all: false,
|
|
version: false,
|
|
errorsCount: true,
|
|
warningsCount: true
|
|
}
|
|
]
|
|
};
|
|
|
|
expect(stats.toJson(statsOptions)).toMatchInlineSnapshot(`
|
|
Object {
|
|
"children": Array [
|
|
Object {
|
|
"name": undefined,
|
|
},
|
|
Object {
|
|
"errorsCount": 0,
|
|
"name": undefined,
|
|
"warningsCount": 1,
|
|
},
|
|
],
|
|
}
|
|
`);
|
|
expect(stats.toString(statsOptions)).toMatchInlineSnapshot(
|
|
'"webpack compiled with 1 warning"'
|
|
);
|
|
});
|
|
});
|