mirror of https://github.com/webpack/webpack.git
move expectSourceToContain, expectSourceToMatch, regexEscape to helper files
This commit is contained in:
parent
19b46355fc
commit
f7d83a4a66
|
|
@ -6,17 +6,8 @@ import { baz as harmonyexport_harmonyimport_2 } from "./harmony-module-2";
|
|||
import * as mod3 from "./harmony-module-3";
|
||||
export { mod3 };
|
||||
|
||||
// This is necessary because 'source' contains the code for this test file, which will always contain the string
|
||||
// being tested for, so we have to use negative lookahead/lookbehind to exclude the actual testing code from the test.
|
||||
function expectSourceToContain(source, str) {
|
||||
expect(source).toMatch(new RegExp(`^.*?(?<!${escape("expectSourceToContain(")}.*?)${escape(str)}(?!.*?${escape(");")}).*?$`, "gm"));
|
||||
}
|
||||
function expectSourceToMatch(source, regexStr) {
|
||||
expect(source).toMatch(new RegExp(`^.*?(?<!${escape("expectSourceToMatch(")}.*?)${regexStr}(?!.*?${escape(");")}).*?$`, "gm"));
|
||||
}
|
||||
function escape(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
}
|
||||
const { expectSourceToContain, expectSourceToMatch } = require("../../../helpers/expectSource");
|
||||
const regexEscape = require("../../../helpers/regexEscape.js");
|
||||
|
||||
// It's important to use propertyName when generating object members to ensure that the exported property name
|
||||
// uses the same accessor syntax (quotes vs. dot notatation) as the imported property name on the other end
|
||||
|
|
@ -34,6 +25,8 @@ it("should use the same accessor syntax for import and export", function() {
|
|||
harmonyexport_harmonyimport_2;
|
||||
theDefault;
|
||||
|
||||
/*********** DO NOT MATCH BELOW THIS LINE ***********/
|
||||
|
||||
// Note that there are no quotes around the "a" and "b" properties in the following lines.
|
||||
|
||||
// Checking harmonyexportinitfragment.js formation of standard export fragment
|
||||
|
|
@ -41,7 +34,7 @@ it("should use the same accessor syntax for import and export", function() {
|
|||
|
||||
// Checking formation of imports
|
||||
expectSourceToContain(source, "harmony_module/* bar */.a;");
|
||||
expectSourceToMatch(source, `${escape("const { harmonyexport_cjsimport } = (__webpack_require__(/*! ./harmony-module */ ")}\\d+${escape(")/* .bar */ .a);")}`);
|
||||
expectSourceToMatch(source, `${regexEscape("const { harmonyexport_cjsimport } = (__webpack_require__(/*! ./harmony-module */ ")}\\d+${regexEscape(")/* .bar */ .a);")}`);
|
||||
|
||||
// Checking concatenatedmodule.js formation of exports
|
||||
expectSourceToContain(source, "a: () => (/* reexport */ harmony_module_3_namespaceObject)");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
var regexEscape = require("./regexEscape.js");
|
||||
|
||||
// These expect* methods are necessary because 'source' contains the code for this test file, which will always contain the string
|
||||
// being tested for, so we have to use the "DO NOT MATCH BELOW..." technique to exclude the actual testing code from the test.
|
||||
// Place your jest 'expect' calls below a line containing the DO NOT MATCH BELOW... string constructed below. See other tests for examples.
|
||||
|
||||
// Break up the match string so we don't match it in these expect* funtions either.
|
||||
const doNotMatch = ["DO", "NOT", "MATCH", "BELOW", "THIS", "LINE"].join(" ");
|
||||
|
||||
function expectSourceToContain(source, str) {
|
||||
expect(source).toMatch(new RegExp(regexEscape(str) + ".*" + doNotMatch, "s"));
|
||||
}
|
||||
function expectSourceToMatch(source, regexStr) {
|
||||
expect(source).toMatch(new RegExp(regexStr + ".*" + doNotMatch, "s"));
|
||||
}
|
||||
|
||||
module.exports = { expectSourceToContain, expectSourceToMatch };
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = function regexEscape(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||
};
|
||||
Loading…
Reference in New Issue