Skip to content

Commit

Permalink
fix discussions. add/update test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
vankop committed Feb 8, 2022
1 parent 9951d9d commit 41d6cfc
Show file tree
Hide file tree
Showing 12 changed files with 168 additions and 147 deletions.
8 changes: 4 additions & 4 deletions lib/ContextModule.js
Expand Up @@ -241,9 +241,9 @@ class ContextModule extends Module {
} else if (typeof this.options.resource === "string") {
identifier = requestShortener.shorten(this.options.resource) + "/";
} else {
identifier =
this.options.resource.map(r => requestShortener.shorten(r)).join("/") +
"/";
identifier = this.options.resource
.map(r => requestShortener.shorten(r) + "/")
.join(" ");
}
if (this.options.resourceQuery) {
identifier += ` ${this.options.resourceQuery}`;
Expand Down Expand Up @@ -315,7 +315,7 @@ class ContextModule extends Module {
contextify(options.context, res, options.associatedObjectForCache)
);
}
identifier = arr.join("|");
identifier = arr.join(" ");
}

if (this.layer) identifier = `(${this.layer})/${identifier}`;
Expand Down
6 changes: 3 additions & 3 deletions lib/ContextModuleFactory.js
Expand Up @@ -294,7 +294,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
addDirectory(
ctx,
directory,
(dir, callback) => {
(_, dir, callback) => {
if (recursionStack === undefined) {
recursionStack = new Set(visited);
recursionStack.add(realPath);
Expand Down Expand Up @@ -333,7 +333,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {

if (stat.isDirectory()) {
if (!recursive) return callback();
addSubDirectory(subResource, callback);
addSubDirectory(ctx, subResource, callback);
} else if (
stat.isFile() &&
(!include || subResource.match(include))
Expand Down Expand Up @@ -398,7 +398,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {

const visitResource = (resource, callback) => {
if (typeof fs.realpath === "function") {
addDirectoryChecked(resource, new Set(), callback);
addDirectoryChecked(resource, resource, new Set(), callback);
} else {
addDirectory(resource, resource, addSubDirectory, callback);
}
Expand Down
5 changes: 4 additions & 1 deletion test/ContextModule.unittest.js
Expand Up @@ -13,10 +13,13 @@ describe("contextModule", () => {
contextModule = new ContextModule(() => {}, {
type: "javascript/auto",
request,
resource: "a",
mode: "lazy",
regExp: /a|b/
});
expect(contextModule.identifier()).toContain("/a%7Cb/");
expect(contextModule.identifier()).toEqual(
expect.stringContaining("/a%7Cb/")
);
});
});
});
37 changes: 37 additions & 0 deletions test/ContextModuleFactory.unittest.js
Expand Up @@ -119,5 +119,42 @@ describe("ContextModuleFactory", () => {
}
);
});

it("should resolve correctly several resources", done => {
memfs.readdir = (dir, callback) => {
if (dir === "/a") setTimeout(() => callback(null, ["/B"]));
if (dir === "/b") setTimeout(() => callback(null, ["/A"]));
if (dir === "/a/B") setTimeout(() => callback(null, ["a"]));
if (dir === "/b/A") setTimeout(() => callback(null, ["b"]));
};
memfs.stat = (file, callback) => {
const resolvedValue = {
isDirectory: () => file !== "/a/B/a" && file !== "/b/A/b",
isFile: () => file === "/a/B/a" || file === "/b/A/b"
};
setTimeout(() => callback(null, resolvedValue));
};
memfs.realpath = undefined;
factory.resolveDependencies(
memfs,
{
resource: ["/a", "/b"],
resourceFragment: "#hash",
resourceQuery: "?query",
recursive: true,
regExp: /.*/
},
(err, res) => {
expect(res).not.toStrictEqual([]);
expect(Array.isArray(res)).toBe(true);
expect(res.map(r => r.request)).toEqual([
"/a/B/a?query#hash",
"/b/A/b?query#hash"
]);
expect(res.map(r => r.userRequest)).toEqual(["./B/a", "./A/b"]);
done();
}
);
});
});
});
110 changes: 78 additions & 32 deletions test/__snapshots__/StatsTestCases.basictest.js.snap
Expand Up @@ -737,62 +737,108 @@ exports[`StatsTestCases should print correct stats for concat-and-sideeffects 1`
`;

exports[`StatsTestCases should print correct stats for context-independence 1`] = `
"asset main-9eb37fb0850a854f8074.js 10.4 KiB [emitted] [immutable] (name: main)
sourceMap main-9eb37fb0850a854f8074.js.map 9.26 KiB [emitted] [dev] (auxiliary name: main)
"asset main-589bc1e057939ec92ac8.js 11.9 KiB [emitted] [immutable] (name: main)
sourceMap main-589bc1e057939ec92ac8.js.map 11 KiB [emitted] [dev] (auxiliary name: main)
asset 769-07530fdd52740602e70b.js 515 bytes [emitted] [immutable]
sourceMap 769-07530fdd52740602e70b.js.map 197 bytes [emitted] [dev]
asset 9-b4bccb21688edf45317d.js 509 bytes [emitted] [immutable]
sourceMap 9-b4bccb21688edf45317d.js.map 194 bytes [emitted] [dev]
asset 695-4dd37417c69a0af66bac.js 455 bytes [emitted] [immutable]
sourceMap 695-4dd37417c69a0af66bac.js.map 342 bytes [emitted] [dev]
runtime modules 6.29 KiB 8 modules
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./a/index.js (in Xdir/context-independence/a) 40 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./a/c/ ./a/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./a/c/a.js 18 bytes [optional] [built] [code generated]
./a/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/a) 240 bytes
./a/index.js (in Xdir/context-independence/a) 174 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms
asset main-9eb37fb0850a854f8074.js 10.4 KiB [emitted] [immutable] (name: main)
sourceMap main-9eb37fb0850a854f8074.js.map 9.26 KiB [emitted] [dev] (auxiliary name: main)
asset main-589bc1e057939ec92ac8.js 11.9 KiB [emitted] [immutable] (name: main)
sourceMap main-589bc1e057939ec92ac8.js.map 11 KiB [emitted] [dev] (auxiliary name: main)
asset 769-07530fdd52740602e70b.js 515 bytes [emitted] [immutable]
sourceMap 769-07530fdd52740602e70b.js.map 197 bytes [emitted] [dev]
asset 9-b4bccb21688edf45317d.js 509 bytes [emitted] [immutable]
sourceMap 9-b4bccb21688edf45317d.js.map 194 bytes [emitted] [dev]
asset 695-4dd37417c69a0af66bac.js 455 bytes [emitted] [immutable]
sourceMap 695-4dd37417c69a0af66bac.js.map 342 bytes [emitted] [dev]
runtime modules 6.29 KiB 8 modules
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./b/index.js (in Xdir/context-independence/b) 40 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./b/c/ ./b/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./b/c/a.js 18 bytes [optional] [built] [code generated]
./b/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/b) 240 bytes
./b/index.js (in Xdir/context-independence/b) 174 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms
asset main-180aaac92930f4aab865.js 11.6 KiB [emitted] [immutable] (name: main)
asset main-7f0549980a72a1b9fd5f.js 13.3 KiB [emitted] [immutable] (name: main)
asset 695-828eb5c7418e1b8270bb.js 1.5 KiB [emitted] [immutable]
runtime modules 6.29 KiB 8 modules
asset 769-659ad7401e6724cb15a1.js 1.37 KiB [emitted] [immutable]
asset 9-6c68097207ea7c07deed.js 1.36 KiB [emitted] [immutable]
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./a/index.js (in Xdir/context-independence/a) 40 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./a/c/ ./a/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./a/c/a.js 18 bytes [optional] [built] [code generated]
./a/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/a) 240 bytes
./a/index.js (in Xdir/context-independence/a) 174 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms
asset main-180aaac92930f4aab865.js 11.6 KiB [emitted] [immutable] (name: main)
asset main-7f0549980a72a1b9fd5f.js 13.3 KiB [emitted] [immutable] (name: main)
asset 695-828eb5c7418e1b8270bb.js 1.5 KiB [emitted] [immutable]
runtime modules 6.29 KiB 8 modules
asset 769-659ad7401e6724cb15a1.js 1.37 KiB [emitted] [immutable]
asset 9-6c68097207ea7c07deed.js 1.36 KiB [emitted] [immutable]
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./b/index.js (in Xdir/context-independence/b) 40 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./b/c/ ./b/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./b/c/a.js 18 bytes [optional] [built] [code generated]
./b/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/b) 240 bytes
./b/index.js (in Xdir/context-independence/b) 174 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms
asset main-633b38bd6be14d7e5f1e.js 11.3 KiB [emitted] [immutable] (name: main)
asset main-08902bb62cc1c5a8b5ba.js 12.8 KiB [emitted] [immutable] (name: main)
asset 769-3b995fff9a7c2e9ee43c.js 1.05 KiB [emitted] [immutable]
asset 9-839166a55905d163a772.js 1.05 KiB [emitted] [immutable]
asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable]
runtime modules 6.29 KiB 8 modules
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./a/index.js (in Xdir/context-independence/a) 40 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./a/c/ ./a/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./a/c/a.js 18 bytes [optional] [built] [code generated]
./a/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/a) 240 bytes
./a/index.js (in Xdir/context-independence/a) 174 bytes [built] [code generated]
./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms
asset main-633b38bd6be14d7e5f1e.js 11.3 KiB [emitted] [immutable] (name: main)
asset main-08902bb62cc1c5a8b5ba.js 12.8 KiB [emitted] [immutable] (name: main)
asset 769-3b995fff9a7c2e9ee43c.js 1.05 KiB [emitted] [immutable]
asset 9-839166a55905d163a772.js 1.05 KiB [emitted] [immutable]
asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable]
runtime modules 6.29 KiB 8 modules
runtime modules 6.67 KiB 9 modules
orphan modules 19 bytes [orphan] 1 module
cacheable modules 106 bytes
./b/index.js (in Xdir/context-independence/b) 40 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
built modules 436 bytes [built]
modules by layer 196 bytes
./b/c/ ./b/cc/ lazy ^\\\\.\\\\/.*$ namespace object 160 bytes [built] [code generated]
./b/c/a.js 18 bytes [optional] [built] [code generated]
./b/cc/b.js 18 bytes [optional] [built] [code generated]
modules by layer (in Xdir/context-independence/b) 240 bytes
./b/index.js (in Xdir/context-independence/b) 174 bytes [built] [code generated]
./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated]
webpack x.x.x compiled successfully in X ms"
`;

Expand Down
1 change: 1 addition & 0 deletions test/statsCases/context-independence/a/c/a.js
@@ -0,0 +1 @@
export default 2;
1 change: 1 addition & 0 deletions test/statsCases/context-independence/a/cc/b.js
@@ -0,0 +1 @@
export default 1;
2 changes: 2 additions & 0 deletions test/statsCases/context-independence/a/index.js
@@ -1,2 +1,4 @@
console.log("test");
import("./chunk");
const module = Math.round(Math.random() * 100) % 2 === 0 ? "a" : "b";
import(`c/${module}`).then(({ default: d }) => console.log(d));
1 change: 1 addition & 0 deletions test/statsCases/context-independence/b/c/a.js
@@ -0,0 +1 @@
export default 2;
1 change: 1 addition & 0 deletions test/statsCases/context-independence/b/cc/b.js
@@ -0,0 +1 @@
export default 1;
2 changes: 2 additions & 0 deletions test/statsCases/context-independence/b/index.js
@@ -1,2 +1,4 @@
console.log("test");
import("./chunk");
const module = Math.round(Math.random() * 100) % 2 === 0 ? "a" : "b";
import(`c/${module}`).then(({ default: d }) => console.log(d));

0 comments on commit 41d6cfc

Please sign in to comment.