2018-01-19 00:14:19 +08:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const SideEffectsFlagPlugin = require("../lib/optimize/SideEffectsFlagPlugin");
|
|
|
|
|
|
|
|
describe("SideEffectsFlagPlugin", () => {
|
|
|
|
it("should assume true", () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", undefined)
|
|
|
|
).toBe(true);
|
2018-01-19 00:14:19 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should understand boolean values", () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", true)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./foo/bar.js", false)
|
|
|
|
).toBe(false);
|
2018-01-19 00:14:19 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should understand a glob", () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"./src/**/*.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./x.js", "./src/**/*.js")
|
|
|
|
).toBe(false);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"./**/src/x/y/z.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "**.js")
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"./src/**/z.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"./**/x/**/z.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"./**/src/**"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "./**/src/*")
|
|
|
|
).toBe(false);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "*.js")
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "x/**/z.js")
|
|
|
|
).toBe(false);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"src/**/z.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"src/**/{x,y,z}.js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"src/**/[x-z].js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
|
|
"./src/x/y/z.js",
|
|
|
|
"src/**/[[:lower:]].js"
|
|
|
|
)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "!*.js")
|
|
|
|
).toBe(false);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", "!**/*.js")
|
|
|
|
).toBe(false);
|
2018-01-19 00:14:19 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should understand arrays", () => {
|
2018-02-25 18:46:17 +08:00
|
|
|
const array = ["./src/**/*.js", "./dirty.js"];
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./src/x/y/z.js", array)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./dirty.js", array)
|
|
|
|
).toBe(true);
|
|
|
|
expect(
|
|
|
|
SideEffectsFlagPlugin.moduleHasSideEffects("./clean.js", array)
|
|
|
|
).toBe(false);
|
2018-01-19 00:14:19 +08:00
|
|
|
});
|
|
|
|
});
|