/
githubmirror
/
webpack
Обзор
Документация
Войти
/
githubmirror
/
webpack
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/cases/parsing/evaluate/index.js
105 строк
3 KB
Alexander Akait
fix: several small correctness fixes (formatSize, data URIs, CSS unescape, RegExp flags) (#21366)
08 июл 2026, 23:21
Не верифицирован
08 июл 2026, 23:21
2d60c44
Код
Авторство
О чём код?
it("should evaluate null", function () { const y = null ? require("fail") : require("./a"); if (null) require("fail"); }); it("should evaluate undefined", function () { const y = undefined ? require("fail") : require("./a"); if (undefined) require("fail"); undefined && require("fail"); }); it("should evaluate logical expression", function () { const value1 = "hello" || require("fail"); const value2 = typeof require === "function" || require("fail"); const value3 = "" && require("fail"); const value4 = typeof require !== "function" && require("fail"); const value5 = "hello" && (() => "value5")(); const value6 = "" || (() => "value6")(); const value7 = (function () { return'value7'===typeof 'value7'&&'value7'})(); const value8 = [] != [] || require("fail"); const value9 = null === 1 && require("fail"); const value91 = [] === [] && require("fail"); const value92 = /a/ === /a/ && require("fail"); const value93 = `hello${Math.random()}` === `world${Math.random()}` && require("fail"); const value94 = `${Math.random()}hello` != `${Math.random()}world` || require("fail"); let value95 = 1; const value96 = `${value95++}hello` != `${value95++}world` || require("fail"); if (`${value95++}hello` === `${value95++}world`) { require("fail"); } expect(value1).toBe("hello"); expect(value2).toBe(true); expect(value3).toBe(""); expect(value4).toBe(false); expect(value5).toBe("value5"); expect(value6).toBe("value6"); expect(value7).toBe(false); expect(value8).toBe(true); expect(value9).toBe(false); expect(value91).toBe(false); expect(value92).toBe(false); expect(value93).toBe(false); expect(value94).toBe(true); expect(value95).toBe(5); expect(value96).toBe(true); }); it("shouldn't evaluate expression", function () { const value = ""; const x = value + "" ? "fail" : "ok"; expect(x).toBe("ok"); }); it("should short-circuit evaluating", function () { let expr; const a = false && expr ? require("fail") : require("./a"); const b = true || expr ? require("./a") : require("fail"); }); it("should evaluate __dirname and __resourceQuery with replace and substr", function () { const result = require("./resourceQuery/index?" + __dirname); expect(result).toEqual("?resourceQuery"); }); it("should evaluate __dirname and __resourceFragment with replace and substr", function () { const result = require("./resourceFragment/index#" + __dirname); expect(result).toEqual("#resourceFragment"); }); it("should allow resourceFragment in context", function () { const fn = x => require(`./resourceFragment/${x}#..`); expect(fn("index")).toEqual("#resourceFragment"); expect(fn("returnRF")).toBe("#.."); }); it("should try to evaluate new RegExp()", function () { function expectAOnly (r) { r.keys().forEach(key => { expect(r(key)).toBe(1); }); } expectAOnly( require.context("./regexp", false, new RegExp("(?<!filtered)\\.js$", "")) ); expectAOnly( require.context("./regexp", false, new RegExp(`(?<!${"FILTERED"})\\.js$`, "i")) ); expectAOnly( require.context("./regexp", false, new RegExp("(?<!filtered)\\.js$")) ); // modern flags (d, s, u, v) must be recognized as valid expectAOnly( require.context("./regexp", false, new RegExp("(?<!filtered)\\.js$", "u")) ); }); it("should not evaluate new RegExp for redefined RegExp", () => { const RegExp = function() { return /other/; }; expect(require("./regexp/" + ("a".replace(new RegExp("a"), "wrong")))).toBe(1); });