@rspack-canary/test-tools 1.5.6-canary-e598f284-20250921173624 → 1.5.8-canary-e350b761-20250924173613
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/case/builtin.d.ts +2 -0
- package/dist/case/builtin.js +173 -13
- package/dist/case/cache.d.ts +1 -1
- package/dist/case/cache.js +210 -11
- package/dist/case/common.d.ts +10 -0
- package/dist/case/common.js +237 -0
- package/dist/case/compiler.d.ts +7 -4
- package/dist/case/compiler.js +144 -109
- package/dist/case/config.d.ts +5 -1
- package/dist/case/config.js +102 -16
- package/dist/case/defaults.d.ts +12 -4
- package/dist/case/defaults.js +67 -12
- package/dist/case/diagnostic.d.ts +6 -0
- package/dist/case/diagnostic.js +123 -14
- package/dist/case/diff.d.ts +17 -1
- package/dist/case/diff.js +170 -22
- package/dist/case/error.d.ts +14 -4
- package/dist/case/error.js +117 -10
- package/dist/case/hash.d.ts +1 -1
- package/dist/case/hash.js +70 -9
- package/dist/case/hook.d.ts +35 -4
- package/dist/case/hook.js +210 -21
- package/dist/case/hot-step.js +307 -9
- package/dist/case/hot.d.ts +8 -1
- package/dist/case/hot.js +235 -8
- package/dist/case/incremental.d.ts +1 -1
- package/dist/case/incremental.js +39 -41
- package/dist/case/index.d.ts +20 -20
- package/dist/case/index.js +44 -34
- package/dist/case/native-watcher.js +10 -23
- package/dist/case/normal.js +174 -12
- package/dist/case/runner.d.ts +18 -0
- package/dist/case/runner.js +108 -0
- package/dist/case/serial.d.ts +1 -1
- package/dist/case/serial.js +8 -12
- package/dist/case/stats-api.d.ts +0 -5
- package/dist/case/stats-api.js +71 -10
- package/dist/case/stats-output.js +197 -11
- package/dist/case/treeshaking.js +34 -7
- package/dist/case/watch.d.ts +27 -0
- package/dist/case/watch.js +321 -21
- package/dist/helper/plugins/hot-update.d.ts +2 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/runner/index.d.ts +2 -7
- package/dist/runner/index.js +2 -7
- package/dist/runner/{runner/node → node}/index.d.ts +1 -2
- package/dist/runner/{runner/node → node}/index.js +2 -2
- package/dist/runner/{runner/web → web}/fake.d.ts +1 -2
- package/dist/runner/{runner/web → web}/fake.js +7 -7
- package/dist/runner/{runner/web → web}/index.d.ts +2 -2
- package/dist/runner/{runner/web → web}/index.js +1 -1
- package/dist/runner/{runner/web → web}/jsdom.d.ts +1 -2
- package/dist/runner/{runner/web → web}/jsdom.js +4 -4
- package/dist/test/context.d.ts +3 -5
- package/dist/test/context.js +22 -12
- package/dist/test/creator.d.ts +13 -12
- package/dist/test/creator.js +52 -43
- package/dist/test/tester.js +4 -1
- package/dist/type.d.ts +42 -11
- package/dist/type.js +7 -1
- package/package.json +5 -5
- package/dist/processor/basic.d.ts +0 -24
- package/dist/processor/basic.js +0 -147
- package/dist/processor/builtin.d.ts +0 -9
- package/dist/processor/builtin.js +0 -171
- package/dist/processor/cache.d.ts +0 -20
- package/dist/processor/cache.js +0 -131
- package/dist/processor/config.d.ts +0 -11
- package/dist/processor/config.js +0 -88
- package/dist/processor/defaults.d.ts +0 -30
- package/dist/processor/defaults.js +0 -72
- package/dist/processor/diagnostic.d.ts +0 -15
- package/dist/processor/diagnostic.js +0 -104
- package/dist/processor/diff.d.ts +0 -30
- package/dist/processor/diff.js +0 -140
- package/dist/processor/error.d.ts +0 -23
- package/dist/processor/error.js +0 -95
- package/dist/processor/hash.d.ts +0 -10
- package/dist/processor/hash.js +0 -65
- package/dist/processor/hook.d.ts +0 -44
- package/dist/processor/hook.js +0 -206
- package/dist/processor/hot-incremental.d.ts +0 -14
- package/dist/processor/hot-incremental.js +0 -43
- package/dist/processor/hot-step.d.ts +0 -18
- package/dist/processor/hot-step.js +0 -307
- package/dist/processor/hot.d.ts +0 -17
- package/dist/processor/hot.js +0 -147
- package/dist/processor/index.d.ts +0 -20
- package/dist/processor/index.js +0 -36
- package/dist/processor/multi.d.ts +0 -17
- package/dist/processor/multi.js +0 -73
- package/dist/processor/normal.d.ts +0 -12
- package/dist/processor/normal.js +0 -170
- package/dist/processor/simple.d.ts +0 -24
- package/dist/processor/simple.js +0 -51
- package/dist/processor/snapshot.d.ts +0 -12
- package/dist/processor/snapshot.js +0 -66
- package/dist/processor/stats-api.d.ts +0 -18
- package/dist/processor/stats-api.js +0 -48
- package/dist/processor/stats.d.ts +0 -18
- package/dist/processor/stats.js +0 -206
- package/dist/processor/treeshaking.d.ts +0 -10
- package/dist/processor/treeshaking.js +0 -33
- package/dist/processor/watch.d.ts +0 -30
- package/dist/processor/watch.js +0 -252
- package/dist/runner/basic.d.ts +0 -10
- package/dist/runner/basic.js +0 -64
- package/dist/runner/cache.d.ts +0 -5
- package/dist/runner/cache.js +0 -92
- package/dist/runner/hot.d.ts +0 -5
- package/dist/runner/hot.js +0 -91
- package/dist/runner/multiple.d.ts +0 -11
- package/dist/runner/multiple.js +0 -52
- package/dist/runner/runner/index.d.ts +0 -2
- package/dist/runner/runner/index.js +0 -18
- package/dist/runner/type.d.ts +0 -42
- package/dist/runner/type.js +0 -9
- package/dist/runner/watch.d.ts +0 -7
- package/dist/runner/watch.js +0 -71
- package/dist/test/simple.d.ts +0 -5
- package/dist/test/simple.js +0 -43
package/dist/case/incremental.js
CHANGED
|
@@ -7,12 +7,30 @@ exports.createHotIncrementalCase = createHotIncrementalCase;
|
|
|
7
7
|
exports.createWatchIncrementalCase = createWatchIncrementalCase;
|
|
8
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const hot_incremental_1 = require("../processor/hot-incremental");
|
|
11
|
-
const watch_1 = require("../processor/watch");
|
|
12
|
-
const runner_1 = require("../runner");
|
|
13
10
|
const creator_1 = require("../test/creator");
|
|
14
11
|
const type_1 = require("../type");
|
|
12
|
+
const hot_1 = require("./hot");
|
|
13
|
+
const watch_1 = require("./watch");
|
|
15
14
|
const hotCreators = new Map();
|
|
15
|
+
function createHotIncrementalProcessor(name, target, webpackCases) {
|
|
16
|
+
const processor = (0, hot_1.createHotProcessor)(name, target, true);
|
|
17
|
+
processor.before = async (context) => {
|
|
18
|
+
context.setValue(name, "documentType", webpackCases ? type_1.EDocumentType.Fake : type_1.EDocumentType.JSDOM);
|
|
19
|
+
};
|
|
20
|
+
const originalAfterAll = processor.afterAll;
|
|
21
|
+
processor.afterAll = async function (context) {
|
|
22
|
+
try {
|
|
23
|
+
await originalAfterAll?.(context);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
const isFake = context.getValue(name, "documentType") === type_1.EDocumentType.Fake;
|
|
27
|
+
if (isFake && /Should run all hot steps/.test(e.message))
|
|
28
|
+
return;
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return processor;
|
|
33
|
+
}
|
|
16
34
|
function getHotCreator(target, webpackCases) {
|
|
17
35
|
const key = JSON.stringify({ target, webpackCases });
|
|
18
36
|
if (!hotCreators.has(key)) {
|
|
@@ -21,15 +39,12 @@ function getHotCreator(target, webpackCases) {
|
|
|
21
39
|
describe: true,
|
|
22
40
|
target,
|
|
23
41
|
steps: ({ name, target }) => [
|
|
24
|
-
|
|
25
|
-
name,
|
|
26
|
-
target: target,
|
|
27
|
-
compilerType: type_1.ECompilerType.Rspack,
|
|
28
|
-
configFiles: ["rspack.config.js", "webpack.config.js"],
|
|
29
|
-
webpackCases
|
|
30
|
-
})
|
|
42
|
+
createHotIncrementalProcessor(name, target, webpackCases)
|
|
31
43
|
],
|
|
32
|
-
runner:
|
|
44
|
+
runner: {
|
|
45
|
+
key: (context, name, file) => name,
|
|
46
|
+
runner: hot_1.createHotRunner
|
|
47
|
+
},
|
|
33
48
|
concurrent: true
|
|
34
49
|
}));
|
|
35
50
|
}
|
|
@@ -45,7 +60,10 @@ function getWatchCreator(options) {
|
|
|
45
60
|
if (!watchCreators.has(key)) {
|
|
46
61
|
watchCreators.set(key, new creator_1.BasicCaseCreator({
|
|
47
62
|
clean: true,
|
|
48
|
-
runner:
|
|
63
|
+
runner: {
|
|
64
|
+
key: watch_1.getWatchRunnerKey,
|
|
65
|
+
runner: watch_1.createWatchRunner
|
|
66
|
+
},
|
|
49
67
|
description: (name, index) => {
|
|
50
68
|
return index === 0
|
|
51
69
|
? `${name} should compile`
|
|
@@ -57,37 +75,17 @@ function getWatchCreator(options) {
|
|
|
57
75
|
const runs = node_fs_1.default
|
|
58
76
|
.readdirSync(src)
|
|
59
77
|
.sort()
|
|
60
|
-
.filter(name =>
|
|
61
|
-
return node_fs_1.default.statSync(node_path_1.default.join(src, name)).isDirectory();
|
|
62
|
-
})
|
|
78
|
+
.filter(name => node_fs_1.default.statSync(node_path_1.default.join(src, name)).isDirectory())
|
|
63
79
|
.map(name => ({ name }));
|
|
64
80
|
return runs.map((run, index) => index === 0
|
|
65
|
-
?
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
experiments: {
|
|
75
|
-
incremental: "advance"
|
|
76
|
-
},
|
|
77
|
-
ignoreWarnings: options.ignoreNotFriendlyForIncrementalWarnings
|
|
78
|
-
? [/is not friendly for incremental/]
|
|
79
|
-
: undefined
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}, watchState)
|
|
83
|
-
: new watch_1.WatchStepProcessor({
|
|
84
|
-
name,
|
|
85
|
-
stepName: run.name,
|
|
86
|
-
tempDir: temp,
|
|
87
|
-
runable: true,
|
|
88
|
-
compilerType: type_1.ECompilerType.Rspack,
|
|
89
|
-
configFiles: ["rspack.config.js", "webpack.config.js"]
|
|
90
|
-
}, watchState));
|
|
81
|
+
? (0, watch_1.createWatchInitialProcessor)(name, temp, run.name, watchState, {
|
|
82
|
+
incremental: true,
|
|
83
|
+
ignoreNotFriendlyForIncrementalWarnings: options.ignoreNotFriendlyForIncrementalWarnings
|
|
84
|
+
})
|
|
85
|
+
: (0, watch_1.createWatchStepProcessor)(name, temp, run.name, watchState, {
|
|
86
|
+
incremental: true,
|
|
87
|
+
ignoreNotFriendlyForIncrementalWarnings: options.ignoreNotFriendlyForIncrementalWarnings
|
|
88
|
+
}));
|
|
91
89
|
},
|
|
92
90
|
concurrent: true
|
|
93
91
|
}));
|
package/dist/case/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
1
|
+
export { createBuiltinCase } from "./builtin";
|
|
2
|
+
export { createCacheCase } from "./cache";
|
|
3
|
+
export { createCompilerCase } from "./compiler";
|
|
4
|
+
export { createConfigCase } from "./config";
|
|
5
|
+
export { createDefaultsCase, getRspackDefaultConfig } from "./defaults";
|
|
6
|
+
export { createDiagnosticCase } from "./diagnostic";
|
|
7
|
+
export { createDiffCase } from "./diff";
|
|
8
|
+
export { createErrorCase } from "./error";
|
|
9
|
+
export { createHashCase } from "./hash";
|
|
10
|
+
export { createHookCase } from "./hook";
|
|
11
|
+
export { createHotCase } from "./hot";
|
|
12
|
+
export { createHotStepCase } from "./hot-step";
|
|
13
|
+
export { createHotIncrementalCase, createWatchIncrementalCase } from "./incremental";
|
|
14
|
+
export { createNativeWatcher } from "./native-watcher";
|
|
15
|
+
export { createHotNormalCase, createNormalCase } from "./normal";
|
|
16
|
+
export { createSerialCase } from "./serial";
|
|
17
|
+
export { createStatsAPICase } from "./stats-api";
|
|
18
|
+
export { createStatsOutputCase } from "./stats-output";
|
|
19
|
+
export { createTreeShakingCase } from "./treeshaking";
|
|
20
|
+
export { createWatchCase } from "./watch";
|
package/dist/case/index.js
CHANGED
|
@@ -1,36 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
3
|
+
exports.createWatchCase = exports.createTreeShakingCase = exports.createStatsOutputCase = exports.createStatsAPICase = exports.createSerialCase = exports.createNormalCase = exports.createHotNormalCase = exports.createNativeWatcher = exports.createWatchIncrementalCase = exports.createHotIncrementalCase = exports.createHotStepCase = exports.createHotCase = exports.createHookCase = exports.createHashCase = exports.createErrorCase = exports.createDiffCase = exports.createDiagnosticCase = exports.getRspackDefaultConfig = exports.createDefaultsCase = exports.createConfigCase = exports.createCompilerCase = exports.createCacheCase = exports.createBuiltinCase = void 0;
|
|
4
|
+
var builtin_1 = require("./builtin");
|
|
5
|
+
Object.defineProperty(exports, "createBuiltinCase", { enumerable: true, get: function () { return builtin_1.createBuiltinCase; } });
|
|
6
|
+
var cache_1 = require("./cache");
|
|
7
|
+
Object.defineProperty(exports, "createCacheCase", { enumerable: true, get: function () { return cache_1.createCacheCase; } });
|
|
8
|
+
var compiler_1 = require("./compiler");
|
|
9
|
+
Object.defineProperty(exports, "createCompilerCase", { enumerable: true, get: function () { return compiler_1.createCompilerCase; } });
|
|
10
|
+
var config_1 = require("./config");
|
|
11
|
+
Object.defineProperty(exports, "createConfigCase", { enumerable: true, get: function () { return config_1.createConfigCase; } });
|
|
12
|
+
var defaults_1 = require("./defaults");
|
|
13
|
+
Object.defineProperty(exports, "createDefaultsCase", { enumerable: true, get: function () { return defaults_1.createDefaultsCase; } });
|
|
14
|
+
Object.defineProperty(exports, "getRspackDefaultConfig", { enumerable: true, get: function () { return defaults_1.getRspackDefaultConfig; } });
|
|
15
|
+
var diagnostic_1 = require("./diagnostic");
|
|
16
|
+
Object.defineProperty(exports, "createDiagnosticCase", { enumerable: true, get: function () { return diagnostic_1.createDiagnosticCase; } });
|
|
17
|
+
var diff_1 = require("./diff");
|
|
18
|
+
Object.defineProperty(exports, "createDiffCase", { enumerable: true, get: function () { return diff_1.createDiffCase; } });
|
|
19
|
+
var error_1 = require("./error");
|
|
20
|
+
Object.defineProperty(exports, "createErrorCase", { enumerable: true, get: function () { return error_1.createErrorCase; } });
|
|
21
|
+
var hash_1 = require("./hash");
|
|
22
|
+
Object.defineProperty(exports, "createHashCase", { enumerable: true, get: function () { return hash_1.createHashCase; } });
|
|
23
|
+
var hook_1 = require("./hook");
|
|
24
|
+
Object.defineProperty(exports, "createHookCase", { enumerable: true, get: function () { return hook_1.createHookCase; } });
|
|
25
|
+
var hot_1 = require("./hot");
|
|
26
|
+
Object.defineProperty(exports, "createHotCase", { enumerable: true, get: function () { return hot_1.createHotCase; } });
|
|
27
|
+
var hot_step_1 = require("./hot-step");
|
|
28
|
+
Object.defineProperty(exports, "createHotStepCase", { enumerable: true, get: function () { return hot_step_1.createHotStepCase; } });
|
|
29
|
+
var incremental_1 = require("./incremental");
|
|
30
|
+
Object.defineProperty(exports, "createHotIncrementalCase", { enumerable: true, get: function () { return incremental_1.createHotIncrementalCase; } });
|
|
31
|
+
Object.defineProperty(exports, "createWatchIncrementalCase", { enumerable: true, get: function () { return incremental_1.createWatchIncrementalCase; } });
|
|
32
|
+
var native_watcher_1 = require("./native-watcher");
|
|
33
|
+
Object.defineProperty(exports, "createNativeWatcher", { enumerable: true, get: function () { return native_watcher_1.createNativeWatcher; } });
|
|
34
|
+
var normal_1 = require("./normal");
|
|
35
|
+
Object.defineProperty(exports, "createHotNormalCase", { enumerable: true, get: function () { return normal_1.createHotNormalCase; } });
|
|
36
|
+
Object.defineProperty(exports, "createNormalCase", { enumerable: true, get: function () { return normal_1.createNormalCase; } });
|
|
37
|
+
var serial_1 = require("./serial");
|
|
38
|
+
Object.defineProperty(exports, "createSerialCase", { enumerable: true, get: function () { return serial_1.createSerialCase; } });
|
|
39
|
+
var stats_api_1 = require("./stats-api");
|
|
40
|
+
Object.defineProperty(exports, "createStatsAPICase", { enumerable: true, get: function () { return stats_api_1.createStatsAPICase; } });
|
|
41
|
+
var stats_output_1 = require("./stats-output");
|
|
42
|
+
Object.defineProperty(exports, "createStatsOutputCase", { enumerable: true, get: function () { return stats_output_1.createStatsOutputCase; } });
|
|
43
|
+
var treeshaking_1 = require("./treeshaking");
|
|
44
|
+
Object.defineProperty(exports, "createTreeShakingCase", { enumerable: true, get: function () { return treeshaking_1.createTreeShakingCase; } });
|
|
45
|
+
var watch_1 = require("./watch");
|
|
46
|
+
Object.defineProperty(exports, "createWatchCase", { enumerable: true, get: function () { return watch_1.createWatchCase; } });
|
|
@@ -6,13 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.createNativeWatcher = createNativeWatcher;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const watch_1 = require("../processor/watch");
|
|
10
|
-
const runner_1 = require("../runner");
|
|
11
9
|
const creator_1 = require("../test/creator");
|
|
12
|
-
const
|
|
10
|
+
const watch_1 = require("./watch");
|
|
13
11
|
const creator = new creator_1.BasicCaseCreator({
|
|
14
12
|
clean: true,
|
|
15
|
-
runner:
|
|
13
|
+
runner: {
|
|
14
|
+
key: watch_1.getWatchRunnerKey,
|
|
15
|
+
runner: watch_1.createWatchRunner
|
|
16
|
+
},
|
|
16
17
|
description: (name, index) => {
|
|
17
18
|
return index === 0
|
|
18
19
|
? `${name} should compile`
|
|
@@ -24,29 +25,15 @@ const creator = new creator_1.BasicCaseCreator({
|
|
|
24
25
|
const runs = node_fs_1.default
|
|
25
26
|
.readdirSync(src)
|
|
26
27
|
.sort()
|
|
27
|
-
.filter(name =>
|
|
28
|
-
return node_fs_1.default.statSync(node_path_1.default.join(src, name)).isDirectory();
|
|
29
|
-
})
|
|
28
|
+
.filter(name => node_fs_1.default.statSync(node_path_1.default.join(src, name)).isDirectory())
|
|
30
29
|
.map(name => ({ name }));
|
|
31
30
|
return runs.map((run, index) => index === 0
|
|
32
|
-
?
|
|
33
|
-
name,
|
|
34
|
-
stepName: run.name,
|
|
35
|
-
tempDir: temp,
|
|
36
|
-
runable: true,
|
|
37
|
-
compilerType: type_1.ECompilerType.Rspack,
|
|
38
|
-
configFiles: ["rspack.config.js", "webpack.config.js"],
|
|
31
|
+
? (0, watch_1.createWatchInitialProcessor)(name, temp, run.name, watchState, {
|
|
39
32
|
nativeWatcher: true
|
|
40
|
-
}
|
|
41
|
-
:
|
|
42
|
-
name,
|
|
43
|
-
stepName: run.name,
|
|
44
|
-
tempDir: temp,
|
|
45
|
-
runable: true,
|
|
46
|
-
compilerType: type_1.ECompilerType.Rspack,
|
|
47
|
-
configFiles: ["rspack.config.js", "webpack.config.js"],
|
|
33
|
+
})
|
|
34
|
+
: (0, watch_1.createWatchStepProcessor)(name, temp, run.name, watchState, {
|
|
48
35
|
nativeWatcher: true
|
|
49
|
-
}
|
|
36
|
+
}));
|
|
50
37
|
},
|
|
51
38
|
concurrent: true
|
|
52
39
|
});
|
package/dist/case/normal.js
CHANGED
|
@@ -5,29 +5,46 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createNormalCase = createNormalCase;
|
|
7
7
|
exports.createHotNormalCase = createHotNormalCase;
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
const core_1 = require("@rspack/core");
|
|
10
|
-
const normal_1 = require("../processor/normal");
|
|
11
|
-
const runner_1 = require("../runner");
|
|
12
11
|
const creator_1 = require("../test/creator");
|
|
13
|
-
const
|
|
12
|
+
const common_1 = require("./common");
|
|
13
|
+
const runner_1 = require("./runner");
|
|
14
14
|
const NORMAL_CASES_ROOT = node_path_1.default.resolve(__dirname, "../../../../tests/rspack-test/normalCases");
|
|
15
15
|
const createCaseOptions = (hot) => {
|
|
16
16
|
return {
|
|
17
17
|
clean: true,
|
|
18
18
|
describe: false,
|
|
19
19
|
steps: ({ name }) => [
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
{
|
|
21
|
+
config: async (context) => {
|
|
22
|
+
const compiler = (0, common_1.getCompiler)(context, name);
|
|
23
|
+
let options = defaultOptions(context, {
|
|
24
|
+
plugins: hot ? [new core_1.HotModuleReplacementPlugin()] : []
|
|
25
|
+
});
|
|
26
|
+
options = await (0, common_1.config)(context, name, ["rspack.config.js", "webpack.config.js"], options);
|
|
27
|
+
overrideOptions(context, options);
|
|
28
|
+
compiler.setOptions(options);
|
|
25
29
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
compiler: async (context) => {
|
|
31
|
+
await (0, common_1.compiler)(context, name);
|
|
32
|
+
},
|
|
33
|
+
build: async (context) => {
|
|
34
|
+
await (0, common_1.build)(context, name);
|
|
35
|
+
},
|
|
36
|
+
run: async (env, context) => {
|
|
37
|
+
await (0, common_1.run)(env, context, name, findBundle);
|
|
38
|
+
},
|
|
39
|
+
check: async (env, context) => {
|
|
40
|
+
await (0, common_1.check)(env, context, name);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
29
43
|
],
|
|
30
|
-
runner:
|
|
44
|
+
runner: {
|
|
45
|
+
key: (context, name, file) => name,
|
|
46
|
+
runner: runner_1.createRunner
|
|
47
|
+
},
|
|
31
48
|
concurrent: true
|
|
32
49
|
};
|
|
33
50
|
};
|
|
@@ -39,3 +56,148 @@ const hotCreator = new creator_1.BasicCaseCreator(createCaseOptions(true));
|
|
|
39
56
|
function createHotNormalCase(name, src, dist) {
|
|
40
57
|
hotCreator.create(name, src, dist);
|
|
41
58
|
}
|
|
59
|
+
function findBundle(context, options) {
|
|
60
|
+
const testConfig = context.getTestConfig();
|
|
61
|
+
if (typeof testConfig.findBundle === "function") {
|
|
62
|
+
return testConfig.findBundle(0, options);
|
|
63
|
+
}
|
|
64
|
+
const filename = options.output?.filename;
|
|
65
|
+
return typeof filename === "string" ? filename : undefined;
|
|
66
|
+
}
|
|
67
|
+
function defaultOptions(context, compilerOptions) {
|
|
68
|
+
let testConfig = {};
|
|
69
|
+
const testConfigPath = node_path_1.default.join(context.getSource(), "test.config.js");
|
|
70
|
+
if (node_fs_1.default.existsSync(testConfigPath)) {
|
|
71
|
+
testConfig = require(testConfigPath);
|
|
72
|
+
}
|
|
73
|
+
const TerserPlugin = require("terser-webpack-plugin");
|
|
74
|
+
const terserForTesting = new TerserPlugin({
|
|
75
|
+
parallel: false
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
amd: {},
|
|
79
|
+
context: NORMAL_CASES_ROOT,
|
|
80
|
+
entry: `./${node_path_1.default.relative(NORMAL_CASES_ROOT, context.getSource())}/`,
|
|
81
|
+
target: compilerOptions?.target || "async-node",
|
|
82
|
+
devtool: compilerOptions?.devtool,
|
|
83
|
+
mode: compilerOptions?.mode || "none",
|
|
84
|
+
optimization: compilerOptions?.mode
|
|
85
|
+
? {
|
|
86
|
+
// emitOnErrors: true,
|
|
87
|
+
minimizer: [terserForTesting],
|
|
88
|
+
...testConfig.optimization
|
|
89
|
+
}
|
|
90
|
+
: {
|
|
91
|
+
removeAvailableModules: true,
|
|
92
|
+
removeEmptyChunks: true,
|
|
93
|
+
mergeDuplicateChunks: true,
|
|
94
|
+
// CHANGE: rspack does not support `flagIncludedChunks` yet.
|
|
95
|
+
// flagIncludedChunks: true,
|
|
96
|
+
sideEffects: true,
|
|
97
|
+
providedExports: true,
|
|
98
|
+
usedExports: true,
|
|
99
|
+
mangleExports: true,
|
|
100
|
+
// CHANGE: rspack does not support `emitOnErrors` yet.
|
|
101
|
+
// emitOnErrors: true,
|
|
102
|
+
concatenateModules: !!testConfig?.optimization?.concatenateModules,
|
|
103
|
+
innerGraph: true,
|
|
104
|
+
// CHANGE: size is not supported yet
|
|
105
|
+
// moduleIds: "size",
|
|
106
|
+
// chunkIds: "size",
|
|
107
|
+
moduleIds: "named",
|
|
108
|
+
chunkIds: "named",
|
|
109
|
+
minimizer: [terserForTesting],
|
|
110
|
+
...compilerOptions?.optimization
|
|
111
|
+
},
|
|
112
|
+
// CHANGE: rspack does not support `performance` yet.
|
|
113
|
+
// performance: {
|
|
114
|
+
// hints: false
|
|
115
|
+
// },
|
|
116
|
+
node: {
|
|
117
|
+
__dirname: "mock",
|
|
118
|
+
__filename: "mock"
|
|
119
|
+
},
|
|
120
|
+
cache: compilerOptions?.cache && {
|
|
121
|
+
// cacheDirectory,
|
|
122
|
+
...compilerOptions.cache
|
|
123
|
+
},
|
|
124
|
+
output: {
|
|
125
|
+
pathinfo: "verbose",
|
|
126
|
+
path: context.getDist(),
|
|
127
|
+
filename: compilerOptions?.module ? "bundle.mjs" : "bundle.js"
|
|
128
|
+
},
|
|
129
|
+
resolve: {
|
|
130
|
+
modules: ["web_modules", "node_modules"],
|
|
131
|
+
mainFields: ["webpack", "browser", "web", "browserify", "main"],
|
|
132
|
+
aliasFields: ["browser"],
|
|
133
|
+
extensions: [".webpack.js", ".web.js", ".js", ".json"]
|
|
134
|
+
},
|
|
135
|
+
resolveLoader: {
|
|
136
|
+
modules: ["web_loaders", "web_modules", "node_loaders", "node_modules"],
|
|
137
|
+
mainFields: ["webpackLoader", "webLoader", "loader", "main"],
|
|
138
|
+
extensions: [".webpack-loader.js", ".web-loader.js", ".loader.js", ".js"]
|
|
139
|
+
},
|
|
140
|
+
module: {
|
|
141
|
+
rules: [
|
|
142
|
+
{
|
|
143
|
+
test: /\.coffee$/,
|
|
144
|
+
loader: "coffee-loader"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
test: /\.pug/,
|
|
148
|
+
loader: "@webdiscus/pug-loader"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
test: /\.wat$/i,
|
|
152
|
+
loader: "wast-loader",
|
|
153
|
+
type: "webassembly/async"
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
plugins: (compilerOptions?.plugins || [])
|
|
158
|
+
.concat(testConfig.plugins || [])
|
|
159
|
+
.concat(function () {
|
|
160
|
+
this.hooks.compilation.tap("TestCasesTest", compilation => {
|
|
161
|
+
const hooks = [
|
|
162
|
+
// CHANGE: the following hooks are not supported yet, so comment it out
|
|
163
|
+
// "optimize",
|
|
164
|
+
// "optimizeModules",
|
|
165
|
+
// "optimizeChunks",
|
|
166
|
+
// "afterOptimizeTree",
|
|
167
|
+
// "afterOptimizeAssets"
|
|
168
|
+
];
|
|
169
|
+
for (const hook of hooks) {
|
|
170
|
+
compilation.hooks[hook].tap("TestCasesTest", () => compilation.checkConstraints());
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}),
|
|
174
|
+
experiments: {
|
|
175
|
+
css: false,
|
|
176
|
+
rspackFuture: {
|
|
177
|
+
bundlerInfo: {
|
|
178
|
+
force: false
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
asyncWebAssembly: true,
|
|
182
|
+
topLevelAwait: true,
|
|
183
|
+
inlineConst: true,
|
|
184
|
+
lazyBarrel: true,
|
|
185
|
+
// CHANGE: rspack does not support `backCompat` yet.
|
|
186
|
+
// backCompat: false,
|
|
187
|
+
// CHANGE: Rspack enables `css` by default.
|
|
188
|
+
// Turning off here to fallback to webpack's default css processing logic.
|
|
189
|
+
...(compilerOptions?.module ? { outputModule: true } : {})
|
|
190
|
+
}
|
|
191
|
+
// infrastructureLogging: compilerOptions?.cache && {
|
|
192
|
+
// debug: true,
|
|
193
|
+
// console: createLogger(infraStructureLog)
|
|
194
|
+
// }
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function overrideOptions(context, options) {
|
|
198
|
+
if (!global.printLogger) {
|
|
199
|
+
options.infrastructureLogging = {
|
|
200
|
+
level: "error"
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ECompilerType, type ITestContext, type ITestEnv, type ITestRunner, type TCompilerStatsCompilation } from "../type";
|
|
2
|
+
export type THotStepRuntimeLangData = {
|
|
3
|
+
outdatedModules: string[];
|
|
4
|
+
outdatedDependencies: Record<string, string[]>;
|
|
5
|
+
updatedModules: string[];
|
|
6
|
+
updatedRuntime: string[];
|
|
7
|
+
acceptedModules: string[];
|
|
8
|
+
disposedModules: string[];
|
|
9
|
+
};
|
|
10
|
+
export type THotStepRuntimeData = {
|
|
11
|
+
javascript: THotStepRuntimeLangData;
|
|
12
|
+
css: THotStepRuntimeLangData;
|
|
13
|
+
statusPath: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function cachedStats<T extends ECompilerType = ECompilerType.Rspack>(context: ITestContext, name: string): () => TCompilerStatsCompilation<T>;
|
|
16
|
+
export declare function createRunner<T extends ECompilerType = ECompilerType.Rspack>(context: ITestContext, name: string, file: string, env: ITestEnv): ITestRunner;
|
|
17
|
+
export declare function getMultiCompilerRunnerKey(context: ITestContext, name: string, file: string): string;
|
|
18
|
+
export declare function createMultiCompilerRunner<T extends ECompilerType = ECompilerType.Rspack>(context: ITestContext, name: string, file: string, env: ITestEnv): ITestRunner;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cachedStats = cachedStats;
|
|
4
|
+
exports.createRunner = createRunner;
|
|
5
|
+
exports.getMultiCompilerRunnerKey = getMultiCompilerRunnerKey;
|
|
6
|
+
exports.createMultiCompilerRunner = createMultiCompilerRunner;
|
|
7
|
+
const runner_1 = require("../runner");
|
|
8
|
+
const type_1 = require("../type");
|
|
9
|
+
const common_1 = require("./common");
|
|
10
|
+
function cachedStats(context, name) {
|
|
11
|
+
const compiler = context.getCompiler(name);
|
|
12
|
+
const statsGetter = (() => {
|
|
13
|
+
let cached = null;
|
|
14
|
+
return () => {
|
|
15
|
+
if (cached) {
|
|
16
|
+
return cached;
|
|
17
|
+
}
|
|
18
|
+
cached = compiler.getStats().toJson({
|
|
19
|
+
errorDetails: true
|
|
20
|
+
});
|
|
21
|
+
return cached;
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
return statsGetter;
|
|
25
|
+
}
|
|
26
|
+
function createRunner(context, name, file, env) {
|
|
27
|
+
const compiler = (0, common_1.getCompiler)(context, name);
|
|
28
|
+
const compilerOptions = compiler.getOptions();
|
|
29
|
+
const runnerOptions = {
|
|
30
|
+
runInNewContext: false,
|
|
31
|
+
cachable: true,
|
|
32
|
+
env,
|
|
33
|
+
stats: cachedStats(context, name),
|
|
34
|
+
name,
|
|
35
|
+
testConfig: context.getTestConfig(),
|
|
36
|
+
source: context.getSource(),
|
|
37
|
+
dist: context.getDist(),
|
|
38
|
+
compilerOptions
|
|
39
|
+
};
|
|
40
|
+
if (compilerOptions.target === "web" ||
|
|
41
|
+
compilerOptions.target === "webworker") {
|
|
42
|
+
return new runner_1.WebRunner({
|
|
43
|
+
...runnerOptions,
|
|
44
|
+
runInNewContext: true,
|
|
45
|
+
dom: context.getValue(name, "documentType") || type_1.EDocumentType.Fake
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return new runner_1.NodeRunner(runnerOptions);
|
|
49
|
+
}
|
|
50
|
+
function getFileIndexHandler(context, name, file) {
|
|
51
|
+
const multiFileIndexMap = context.getValue(name, "multiFileIndexMap") || {};
|
|
52
|
+
const runned = context.getValue(name, "runned") || new Set();
|
|
53
|
+
if (typeof multiFileIndexMap[file] === "undefined") {
|
|
54
|
+
throw new Error("Unexpect file in multiple runner");
|
|
55
|
+
}
|
|
56
|
+
const indexList = multiFileIndexMap[file];
|
|
57
|
+
const seq = indexList.findIndex((index, n) => !runned.has(`${name}:${file}[${n}]`));
|
|
58
|
+
if (seq === -1) {
|
|
59
|
+
throw new Error(`File ${file} should run only ${indexList.length} times`);
|
|
60
|
+
}
|
|
61
|
+
const getIndex = () => [indexList[seq], seq];
|
|
62
|
+
const flagIndex = () => runned.add(`${name}:${file}[${seq}]`);
|
|
63
|
+
context.setValue(name, "runned", runned);
|
|
64
|
+
return { getIndex, flagIndex };
|
|
65
|
+
}
|
|
66
|
+
function getMultiCompilerRunnerKey(context, name, file) {
|
|
67
|
+
const { getIndex } = getFileIndexHandler(context, name, file);
|
|
68
|
+
const [index, seq] = getIndex();
|
|
69
|
+
return `${name}-${index}[${seq}]`;
|
|
70
|
+
}
|
|
71
|
+
function createMultiCompilerRunner(context, name, file, env) {
|
|
72
|
+
const { getIndex, flagIndex } = getFileIndexHandler(context, name, file);
|
|
73
|
+
const multiCompilerOptions = context.getValue(name, "multiCompilerOptions") || [];
|
|
74
|
+
const [index] = getIndex();
|
|
75
|
+
const compilerOptions = multiCompilerOptions[index];
|
|
76
|
+
let runner;
|
|
77
|
+
const runnerOptions = {
|
|
78
|
+
runInNewContext: false,
|
|
79
|
+
cachable: true,
|
|
80
|
+
env,
|
|
81
|
+
stats: () => {
|
|
82
|
+
const s = cachedStats(context, name)();
|
|
83
|
+
if (s.children?.length && s.children.length > 1) {
|
|
84
|
+
s.__index__ = index;
|
|
85
|
+
return s;
|
|
86
|
+
}
|
|
87
|
+
return s.children[index];
|
|
88
|
+
},
|
|
89
|
+
name,
|
|
90
|
+
testConfig: context.getTestConfig(),
|
|
91
|
+
source: context.getSource(),
|
|
92
|
+
dist: context.getDist(),
|
|
93
|
+
compilerOptions
|
|
94
|
+
};
|
|
95
|
+
if (compilerOptions.target === "web" ||
|
|
96
|
+
compilerOptions.target === "webworker") {
|
|
97
|
+
runner = new runner_1.WebRunner({
|
|
98
|
+
...runnerOptions,
|
|
99
|
+
runInNewContext: true,
|
|
100
|
+
dom: context.getValue(name, "documentType") || type_1.EDocumentType.Fake
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
runner = new runner_1.NodeRunner(runnerOptions);
|
|
105
|
+
}
|
|
106
|
+
flagIndex();
|
|
107
|
+
return runner;
|
|
108
|
+
}
|
package/dist/case/serial.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ECompilerType,
|
|
1
|
+
import type { ECompilerType, TTestConfig } from "../type";
|
|
2
2
|
export type TSerialCaseConfig = Omit<TTestConfig<ECompilerType.Rspack>, "validate">;
|
|
3
3
|
export declare function createSerialCase(name: string, src: string, dist: string): void;
|