@rspack-debug/test-tools 1.4.9 → 1.6.2

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.
Files changed (257) hide show
  1. package/README.md +1 -1
  2. package/dist/case/builtin.d.ts +3 -0
  3. package/dist/case/builtin.js +152 -14
  4. package/dist/case/cache.d.ts +2 -2
  5. package/dist/case/cache.js +214 -12
  6. package/dist/case/common.d.ts +11 -0
  7. package/dist/case/common.js +249 -0
  8. package/dist/case/compiler.d.ts +17 -4
  9. package/dist/case/compiler.js +149 -12
  10. package/dist/case/config.d.ts +7 -2
  11. package/dist/case/config.js +106 -18
  12. package/dist/case/defaults.d.ts +13 -4
  13. package/dist/case/defaults.js +73 -18
  14. package/dist/case/diagnostic.d.ts +6 -0
  15. package/dist/case/diagnostic.js +121 -14
  16. package/dist/case/error.d.ts +15 -4
  17. package/dist/case/error.js +137 -12
  18. package/dist/case/esm-output.d.ts +1 -0
  19. package/dist/case/esm-output.js +117 -0
  20. package/dist/case/example.d.ts +1 -0
  21. package/dist/case/example.js +57 -0
  22. package/dist/case/hash.d.ts +2 -2
  23. package/dist/case/hash.js +72 -9
  24. package/dist/case/hook.d.ts +36 -4
  25. package/dist/case/hook.js +209 -20
  26. package/dist/case/hot-step.d.ts +2 -2
  27. package/dist/case/hot-step.js +309 -13
  28. package/dist/case/hot.d.ts +11 -2
  29. package/dist/case/hot.js +217 -12
  30. package/dist/case/incremental.d.ts +2 -2
  31. package/dist/case/incremental.js +24 -45
  32. package/dist/case/index.d.ts +31 -20
  33. package/dist/case/index.js +50 -34
  34. package/dist/case/multi-compiler.d.ts +19 -0
  35. package/dist/case/multi-compiler.js +97 -0
  36. package/dist/case/{nativeWatcher.js → native-watcher.js} +12 -25
  37. package/dist/case/normal.d.ts +3 -0
  38. package/dist/case/normal.js +202 -18
  39. package/dist/case/runner.d.ts +19 -0
  40. package/dist/case/runner.js +113 -0
  41. package/dist/case/serial.d.ts +2 -2
  42. package/dist/case/serial.js +10 -14
  43. package/dist/case/stats-api.d.ts +8 -3
  44. package/dist/case/stats-api.js +69 -10
  45. package/dist/case/stats-output.d.ts +11 -0
  46. package/dist/case/stats-output.js +199 -8
  47. package/dist/case/treeshaking.js +34 -7
  48. package/dist/case/watch.d.ts +27 -0
  49. package/dist/case/watch.js +318 -22
  50. package/dist/compiler.d.ts +16 -16
  51. package/dist/compiler.js +120 -15
  52. package/dist/helper/directory.d.ts +1 -1
  53. package/dist/helper/directory.js +2 -2
  54. package/dist/helper/expect/error.js +1 -1
  55. package/dist/helper/expect/placeholder.js +7 -7
  56. package/dist/helper/expect/to-match-file-snapshot.d.ts +1 -2
  57. package/dist/helper/expect/to-match-file-snapshot.js +3 -3
  58. package/dist/helper/hot-update/loader.d.ts +2 -1
  59. package/dist/helper/hot-update/loader.js +5 -30
  60. package/dist/helper/hot-update/plugin.d.ts +1 -1
  61. package/dist/helper/hot-update/plugin.js +15 -14
  62. package/dist/helper/index.d.ts +2 -1
  63. package/dist/helper/index.js +2 -1
  64. package/dist/helper/is.d.ts +2 -0
  65. package/dist/helper/is.js +15 -0
  66. package/dist/helper/legacy/LogTestPlugin.d.ts +6 -0
  67. package/dist/helper/legacy/LogTestPlugin.js +35 -0
  68. package/dist/helper/legacy/asModule.js +0 -2
  69. package/dist/helper/legacy/checkArrayExpectation.d.ts +1 -1
  70. package/dist/helper/legacy/checkArrayExpectation.js +8 -8
  71. package/dist/helper/legacy/createFakeWorker.d.ts +2 -2
  72. package/dist/helper/legacy/createFakeWorker.js +44 -20
  73. package/dist/helper/legacy/createLazyTestEnv.d.ts +3 -2
  74. package/dist/helper/legacy/createLazyTestEnv.js +3 -3
  75. package/dist/helper/legacy/deprecationTracking.d.ts +1 -0
  76. package/dist/helper/legacy/deprecationTracking.js +41 -0
  77. package/dist/helper/legacy/expectSource.d.ts +10 -0
  78. package/dist/helper/legacy/expectSource.js +23 -0
  79. package/dist/helper/legacy/findOutputFiles.d.ts +6 -0
  80. package/dist/helper/legacy/findOutputFiles.js +14 -0
  81. package/dist/helper/legacy/regexEscape.d.ts +2 -0
  82. package/dist/helper/legacy/regexEscape.js +5 -0
  83. package/dist/helper/legacy/supportDefaultAssignment.js +13 -0
  84. package/dist/helper/legacy/supportsTextDecoder.d.ts +2 -0
  85. package/dist/helper/legacy/supportsTextDecoder.js +9 -0
  86. package/dist/helper/legacy/supportsUsing.d.ts +2 -0
  87. package/dist/helper/legacy/supportsUsing.js +26 -0
  88. package/dist/helper/legacy/urlToRelativePath.js +5 -2
  89. package/dist/helper/read-config-file.d.ts +3 -2
  90. package/dist/helper/read-config-file.js +12 -2
  91. package/dist/helper/setup-env.js +15 -2
  92. package/dist/helper/setup-expect.js +2 -2
  93. package/dist/helper/setup-wasm.js +2 -2
  94. package/dist/helper/stringify-config.d.ts +2 -0
  95. package/dist/helper/stringify-config.js +43 -0
  96. package/dist/helper/util/checkStats.d.ts +0 -1
  97. package/dist/helper/util/checkStats.js +0 -18
  98. package/dist/helper/util/expectWarningFactory.js +2 -4
  99. package/dist/index.d.ts +0 -4
  100. package/dist/index.js +0 -4
  101. package/dist/plugin/index.d.ts +0 -3
  102. package/dist/plugin/index.js +0 -3
  103. package/dist/plugin/lazy-compilation-test-plugin.js +4 -4
  104. package/dist/runner/index.d.ts +2 -9
  105. package/dist/runner/index.js +2 -9
  106. package/dist/runner/node/index.d.ts +41 -0
  107. package/dist/runner/node/index.js +450 -0
  108. package/dist/runner/web/index.d.ts +30 -0
  109. package/dist/runner/web/index.js +343 -0
  110. package/dist/test/context.d.ts +15 -18
  111. package/dist/test/context.js +52 -57
  112. package/dist/test/creator.d.ts +20 -19
  113. package/dist/test/creator.js +69 -57
  114. package/dist/test/debug.d.ts +15 -0
  115. package/dist/test/debug.js +205 -0
  116. package/dist/test/tester.d.ts +1 -0
  117. package/dist/test/tester.js +44 -6
  118. package/dist/type.d.ts +94 -64
  119. package/dist/type.js +8 -12
  120. package/package.json +23 -62
  121. package/rstest.d.ts +24 -0
  122. package/dist/case/diff.d.ts +0 -3
  123. package/dist/case/diff.js +0 -126
  124. package/dist/compare/comparator.d.ts +0 -17
  125. package/dist/compare/comparator.js +0 -52
  126. package/dist/compare/compare.d.ts +0 -17
  127. package/dist/compare/compare.js +0 -175
  128. package/dist/compare/format-code.d.ts +0 -16
  129. package/dist/compare/format-code.js +0 -239
  130. package/dist/compare/index.d.ts +0 -5
  131. package/dist/compare/index.js +0 -21
  132. package/dist/compare/replace-module-argument.d.ts +0 -1
  133. package/dist/compare/replace-module-argument.js +0 -8
  134. package/dist/compare/replace-runtime-module-name.d.ts +0 -1
  135. package/dist/compare/replace-runtime-module-name.js +0 -71
  136. package/dist/helper/legacy/FakeDocument.d.ts +0 -54
  137. package/dist/helper/legacy/FakeDocument.js +0 -278
  138. package/dist/helper/legacy/createLogger.d.ts +0 -23
  139. package/dist/helper/legacy/createLogger.js +0 -20
  140. package/dist/helper/legacy/supportsImportFn.d.ts +0 -1
  141. package/dist/helper/legacy/supportsImportFn.js +0 -15
  142. package/dist/helper/legacy/supportsWorker.js +0 -17
  143. package/dist/helper/legacy/walkCssTokens.d.ts +0 -40
  144. package/dist/helper/legacy/walkCssTokens.js +0 -761
  145. package/dist/helper/legacy/warmup-webpack.d.ts +0 -1
  146. package/dist/helper/legacy/warmup-webpack.js +0 -26
  147. package/dist/helper/loaders/hot-update.d.ts +0 -1
  148. package/dist/helper/loaders/hot-update.js +0 -40
  149. package/dist/helper/plugins/hot-update.d.ts +0 -7
  150. package/dist/helper/plugins/hot-update.js +0 -40
  151. package/dist/helper/plugins/index.d.ts +0 -1
  152. package/dist/helper/plugins/index.js +0 -17
  153. package/dist/helper/util/currentWatchStep.d.ts +0 -1
  154. package/dist/helper/util/currentWatchStep.js +0 -2
  155. package/dist/helper/util/identifier.d.ts +0 -76
  156. package/dist/helper/util/identifier.js +0 -339
  157. package/dist/helper/util/replaceMitteDiagnostic.d.ts +0 -2
  158. package/dist/helper/util/replaceMitteDiagnostic.js +0 -17
  159. package/dist/plugin/rspack-diff-config-plugin.d.ts +0 -7
  160. package/dist/plugin/rspack-diff-config-plugin.js +0 -42
  161. package/dist/plugin/webpack-diff-config-plugin.d.ts +0 -7
  162. package/dist/plugin/webpack-diff-config-plugin.js +0 -41
  163. package/dist/plugin/webpack-module-placeholder-plugin.d.ts +0 -3
  164. package/dist/plugin/webpack-module-placeholder-plugin.js +0 -106
  165. package/dist/processor/basic.d.ts +0 -24
  166. package/dist/processor/basic.js +0 -146
  167. package/dist/processor/builtin.d.ts +0 -9
  168. package/dist/processor/builtin.js +0 -171
  169. package/dist/processor/cache.d.ts +0 -20
  170. package/dist/processor/cache.js +0 -127
  171. package/dist/processor/config.d.ts +0 -11
  172. package/dist/processor/config.js +0 -81
  173. package/dist/processor/defaults.d.ts +0 -30
  174. package/dist/processor/defaults.js +0 -72
  175. package/dist/processor/diagnostic.d.ts +0 -15
  176. package/dist/processor/diagnostic.js +0 -102
  177. package/dist/processor/diff.d.ts +0 -30
  178. package/dist/processor/diff.js +0 -140
  179. package/dist/processor/error.d.ts +0 -23
  180. package/dist/processor/error.js +0 -95
  181. package/dist/processor/hash.d.ts +0 -10
  182. package/dist/processor/hash.js +0 -63
  183. package/dist/processor/hook.d.ts +0 -44
  184. package/dist/processor/hook.js +0 -204
  185. package/dist/processor/hot-incremental.d.ts +0 -14
  186. package/dist/processor/hot-incremental.js +0 -43
  187. package/dist/processor/hot-step.d.ts +0 -18
  188. package/dist/processor/hot-step.js +0 -304
  189. package/dist/processor/hot.d.ts +0 -17
  190. package/dist/processor/hot.js +0 -140
  191. package/dist/processor/index.d.ts +0 -20
  192. package/dist/processor/index.js +0 -36
  193. package/dist/processor/multi.d.ts +0 -17
  194. package/dist/processor/multi.js +0 -73
  195. package/dist/processor/normal.d.ts +0 -12
  196. package/dist/processor/normal.js +0 -150
  197. package/dist/processor/simple.d.ts +0 -23
  198. package/dist/processor/simple.js +0 -49
  199. package/dist/processor/snapshot.d.ts +0 -12
  200. package/dist/processor/snapshot.js +0 -66
  201. package/dist/processor/stats-api.d.ts +0 -18
  202. package/dist/processor/stats-api.js +0 -48
  203. package/dist/processor/stats.d.ts +0 -18
  204. package/dist/processor/stats.js +0 -206
  205. package/dist/processor/treeshaking.d.ts +0 -10
  206. package/dist/processor/treeshaking.js +0 -33
  207. package/dist/processor/watch.d.ts +0 -30
  208. package/dist/processor/watch.js +0 -245
  209. package/dist/reporter/diff-html.d.ts +0 -15
  210. package/dist/reporter/diff-html.js +0 -69
  211. package/dist/reporter/diff-stats.d.ts +0 -24
  212. package/dist/reporter/diff-stats.js +0 -131
  213. package/dist/reporter/index.d.ts +0 -2
  214. package/dist/reporter/index.js +0 -18
  215. package/dist/runner/basic.d.ts +0 -10
  216. package/dist/runner/basic.js +0 -63
  217. package/dist/runner/cache.d.ts +0 -5
  218. package/dist/runner/cache.js +0 -90
  219. package/dist/runner/hot-step.d.ts +0 -5
  220. package/dist/runner/hot-step.js +0 -87
  221. package/dist/runner/hot.d.ts +0 -5
  222. package/dist/runner/hot.js +0 -83
  223. package/dist/runner/multiple.d.ts +0 -11
  224. package/dist/runner/multiple.js +0 -38
  225. package/dist/runner/normal.d.ts +0 -5
  226. package/dist/runner/normal.js +0 -20
  227. package/dist/runner/runner/basic.d.ts +0 -30
  228. package/dist/runner/runner/basic.js +0 -107
  229. package/dist/runner/runner/cjs.d.ts +0 -14
  230. package/dist/runner/runner/cjs.js +0 -151
  231. package/dist/runner/runner/esm.d.ts +0 -7
  232. package/dist/runner/runner/esm.js +0 -125
  233. package/dist/runner/runner/index.d.ts +0 -8
  234. package/dist/runner/runner/index.js +0 -24
  235. package/dist/runner/runner/normal.d.ts +0 -9
  236. package/dist/runner/runner/normal.js +0 -23
  237. package/dist/runner/runner/watch.d.ts +0 -16
  238. package/dist/runner/runner/watch.js +0 -27
  239. package/dist/runner/runner/web/fake.d.ts +0 -18
  240. package/dist/runner/runner/web/fake.js +0 -143
  241. package/dist/runner/runner/web/jsdom.d.ts +0 -26
  242. package/dist/runner/runner/web/jsdom.js +0 -219
  243. package/dist/runner/runner/web.d.ts +0 -15
  244. package/dist/runner/runner/web.js +0 -32
  245. package/dist/runner/type.d.ts +0 -42
  246. package/dist/runner/type.js +0 -9
  247. package/dist/runner/watch.d.ts +0 -7
  248. package/dist/runner/watch.js +0 -60
  249. package/dist/test/simple.d.ts +0 -5
  250. package/dist/test/simple.js +0 -43
  251. package/jest.d.ts +0 -25
  252. package/template/diff.bundle.css +0 -1
  253. package/template/diff.bundle.js +0 -144
  254. package/template/diff.html +0 -14
  255. package/template/editor.worker.js +0 -1
  256. /package/dist/case/{nativeWatcher.d.ts → native-watcher.d.ts} +0 -0
  257. /package/dist/helper/legacy/{supportsWorker.d.ts → supportDefaultAssignment.d.ts} +0 -0
@@ -1,28 +1,38 @@
1
- "use strict";
2
1
  // @ts-nocheck
3
- const path = require("node:path");
2
+ "use strict";
3
+ const path = require("path");
4
4
  module.exports = (env, { outputDirectory }) => class Worker {
5
- constructor(url, options = {}) {
6
- env.expect(url).toBeInstanceOf(URL);
7
- env.expect(url.origin).toBe("https://test.cases");
8
- env.expect(url.pathname.startsWith("/path/")).toBe(true);
9
- this.url = url;
10
- const file = url.pathname.slice(6);
5
+ constructor(resource, options = {}) {
6
+ const isFileURL = /^file:/i.test(resource);
7
+ const isBlobURL = /^blob:/i.test(resource);
8
+ if (!isFileURL && !isBlobURL) {
9
+ env.expect(resource.origin).toBe("https://test.cases");
10
+ env.expect(resource.pathname.startsWith("/path/")).toBe(true);
11
+ }
12
+ this.url = resource;
13
+ const file = isFileURL
14
+ ? resource
15
+ : path.resolve(outputDirectory, isBlobURL
16
+ ? options.originalURL.pathname.slice(6)
17
+ : resource.pathname.slice(6));
11
18
  const workerBootstrap = `
12
19
  const { parentPort } = require("worker_threads");
13
- const { URL } = require("url");
20
+ const { URL, fileURLToPath } = require("url");
14
21
  const path = require("path");
15
22
  const fs = require("fs");
16
23
  global.self = global;
17
24
  self.URL = URL;
18
- self.location = new URL(${JSON.stringify(url.toString())});
25
+ self.location = new URL(${JSON.stringify(isBlobURL
26
+ ? resource.toString().replace("nodedata:", "https://test.cases/path/")
27
+ : resource.toString())});
19
28
  const urlToPath = url => {
20
- if(url.startsWith("https://test.cases/path/")) url = url.slice(24);
29
+ if (/^file:/i.test(url)) return fileURLToPath(url);
30
+ if (url.startsWith("https://test.cases/path/")) url = url.slice(24);
21
31
  return path.resolve(${JSON.stringify(outputDirectory)}, \`./\${url}\`);
22
32
  };
23
33
  self.importScripts = url => {
24
34
  ${options.type === "module"
25
- ? `throw new Error("importScripts is not supported in module workers")`
35
+ ? 'throw new Error("importScripts is not supported in module workers")'
26
36
  : "require(urlToPath(url))"};
27
37
  };
28
38
  self.fetch = async url => {
@@ -33,8 +43,10 @@ self.fetch = async url => {
33
43
  )
34
44
  );
35
45
  return {
46
+ headers: { get(name) { } },
36
47
  status: 200,
37
48
  ok: true,
49
+ arrayBuffer() { return buffer; },
38
50
  json: async () => JSON.parse(buffer.toString("utf-8"))
39
51
  };
40
52
  } catch(err) {
@@ -47,25 +59,37 @@ self.fetch = async url => {
47
59
  throw err;
48
60
  }
49
61
  };
50
- parentPort.on("message", data => {
51
- if(self.onmessage) self.onmessage({
52
- data
53
- });
54
- });
62
+
55
63
  self.postMessage = data => {
56
64
  parentPort.postMessage(data);
57
65
  };
58
- require(${JSON.stringify(path.resolve(outputDirectory, file))});
66
+ if (${options.type === "module"}) {
67
+ import(${JSON.stringify(file)}).then(() => {
68
+ parentPort.on("message", data => {
69
+ if(self.onmessage) self.onmessage({
70
+ data
71
+ });
72
+ });
73
+ });
74
+ } else {
75
+ parentPort.on("message", data => {
76
+ if(self.onmessage) self.onmessage({
77
+ data
78
+ });
79
+ });
80
+ require(${JSON.stringify(file)});
81
+ }
59
82
  `;
60
- this.worker = new (require("node:worker_threads").Worker)(workerBootstrap, {
83
+ this.worker = new (require("worker_threads").Worker)(workerBootstrap, {
61
84
  eval: true
62
85
  });
63
86
  this._onmessage = undefined;
64
87
  }
88
+ // eslint-disable-next-line accessor-pairs
65
89
  set onmessage(value) {
66
90
  if (this._onmessage)
67
91
  this.worker.off("message", this._onmessage);
68
- this.worker.on("message", (this._onmessage = data => {
92
+ this.worker.on("message", (this._onmessage = (data) => {
69
93
  value({
70
94
  data
71
95
  });
@@ -4,7 +4,8 @@ declare function _exports(globalTimeout?: number, nameSuffix?: string): {
4
4
  it(...args: any[]): void;
5
5
  beforeEach(...args: any[]): void;
6
6
  afterEach(...args: any[]): void;
7
- expect: jest.Expect;
8
- jest: typeof jest;
7
+ /** @type {import('@rstest/core').Expect} */
8
+ expect: import("@rstest/core").Expect;
9
+ rstest: import("@rstest/core", { with: { "resolution-mode": "import" } }).RstestUtilities;
9
10
  };
10
11
  export = _exports;
@@ -39,11 +39,10 @@ module.exports = (globalTimeout = 2000, nameSuffix = "") => {
39
39
  it("should run the exported tests", () => {
40
40
  runTests++;
41
41
  });
42
- afterAll(done => {
42
+ afterAll(() => {
43
43
  for (const dispose of disposables) {
44
44
  dispose();
45
45
  }
46
- done();
47
46
  });
48
47
  currentDescribeBlock = state.currentDescribeBlock;
49
48
  currentlyRunningTest = state.currentlyRunningTest;
@@ -110,7 +109,8 @@ module.exports = (globalTimeout = 2000, nameSuffix = "") => {
110
109
  fixAsyncError(currentDescribeBlock.hooks[currentDescribeBlock.hooks.length - 1]);
111
110
  });
112
111
  },
112
+ /** @type {import('@rstest/core').Expect} */
113
113
  expect,
114
- jest
114
+ rstest,
115
115
  };
116
116
  };
@@ -0,0 +1 @@
1
+ export function start(handler: any): () => any[];
@@ -0,0 +1,41 @@
1
+ // @ts-nocheck
2
+ /*
3
+ MIT License http://www.opensource.org/licenses/mit-license.php
4
+ Author Tobias Koppers @sokra
5
+ */
6
+ "use strict";
7
+ const util = require("util");
8
+ let interception = undefined;
9
+ const originalDeprecate = util.deprecate;
10
+ util.deprecate = (fn, message, code) => {
11
+ const original = originalDeprecate(fn, message, code);
12
+ return function (...args) {
13
+ if (interception) {
14
+ interception.set(`${code}: ${message}`, {
15
+ code,
16
+ message,
17
+ stack: new Error(message).stack
18
+ });
19
+ return fn.apply(this, args);
20
+ }
21
+ else {
22
+ return original.apply(this, args);
23
+ }
24
+ };
25
+ };
26
+ exports.start = handler => {
27
+ interception = new Map();
28
+ return () => {
29
+ const map = interception;
30
+ interception = undefined;
31
+ return Array.from(map || [])
32
+ .sort(([a], [b]) => {
33
+ if (a < b)
34
+ return -1;
35
+ if (a > b)
36
+ return 1;
37
+ return 0;
38
+ })
39
+ .map(([key, data]) => data);
40
+ };
41
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @param {string} source value
3
+ * @param {string} str string for searching
4
+ */
5
+ export function expectSourceToContain(source: string, str: string): void;
6
+ /**
7
+ * @param {string} source value
8
+ * @param {RegExp} regexStr regexp
9
+ */
10
+ export function expectSourceToMatch(source: string, regexStr: RegExp): void;
@@ -0,0 +1,23 @@
1
+ // @ts-nocheck
2
+ "use strict";
3
+ const regexEscape = require("./regexEscape");
4
+ // These expect* methods are necessary because 'source' contains the code for this test file, which will always contain the string
5
+ // being tested for, so we have to use the "DO NOT MATCH BELOW..." technique to exclude the actual testing code from the test.
6
+ // Place your jest 'expect' calls below a line containing the DO NOT MATCH BELOW... string constructed below. See other tests for examples.
7
+ // Break up the match string so we don't match it in these expect* functions either.
8
+ const doNotMatch = ["DO", "NOT", "MATCH", "BELOW", "THIS", "LINE"].join(" ");
9
+ /**
10
+ * @param {string} source value
11
+ * @param {string} str string for searching
12
+ */
13
+ function expectSourceToContain(source, str) {
14
+ expect(source).toMatch(new RegExp(`${regexEscape(str)}.*${doNotMatch}`, "s"));
15
+ }
16
+ /**
17
+ * @param {string} source value
18
+ * @param {RegExp} regexStr regexp
19
+ */
20
+ function expectSourceToMatch(source, regexStr) {
21
+ expect(source).toMatch(new RegExp(`${regexStr}.*${doNotMatch}`, "s"));
22
+ }
23
+ module.exports = { expectSourceToContain, expectSourceToMatch };
@@ -0,0 +1,6 @@
1
+ declare function _exports(options: {
2
+ output: {
3
+ path: string;
4
+ };
5
+ }, regexp: RegExp, subpath?: string | undefined): string[];
6
+ export = _exports;
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+ "use strict";
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ /**
6
+ * @param {{output: {path: string}}} options options
7
+ * @param {RegExp} regexp regexp
8
+ * @param {string=} subpath path in output directory
9
+ * @returns {string[]} files
10
+ */
11
+ module.exports = function findOutputFiles(options, regexp, subpath) {
12
+ const files = fs.readdirSync(subpath ? path.join(options.output.path, subpath) : options.output.path);
13
+ return files.filter(file => regexp.test(file));
14
+ };
@@ -0,0 +1,2 @@
1
+ declare function _exports(string: any): any;
2
+ export = _exports;
@@ -0,0 +1,5 @@
1
+ // @ts-nocheck
2
+ "use strict";
3
+ module.exports = function regexEscape(string) {
4
+ return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ module.exports = function supportDefaultAssignment() {
4
+ try {
5
+ // eslint-disable-next-line no-unused-vars
6
+ var E = eval("class E { toString() { return 'default' } }");
7
+ var f1 = eval("(function f1({a, b = E}) {return new b().toString();})");
8
+ return f1({ a: "test" }) === "default";
9
+ }
10
+ catch (e) {
11
+ return false;
12
+ }
13
+ };
@@ -0,0 +1,2 @@
1
+ declare function _exports(): boolean;
2
+ export = _exports;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ module.exports = function supportsTextDecoder() {
3
+ try {
4
+ return typeof TextDecoder !== "undefined";
5
+ }
6
+ catch (_err) {
7
+ return false;
8
+ }
9
+ };
@@ -0,0 +1,2 @@
1
+ declare function _exports(): boolean;
2
+ export = _exports;
@@ -0,0 +1,26 @@
1
+ // @ts-nocheck
2
+ "use strict";
3
+ module.exports = function supportsUsing() {
4
+ try {
5
+ const f = eval(`(function f() {
6
+ let disposed = false;
7
+
8
+ {
9
+ const getResource = () => {
10
+ return {
11
+ [Symbol.dispose]: () => {
12
+ disposed = true;
13
+ }
14
+ }
15
+ }
16
+ using resource = getResource();
17
+ }
18
+
19
+ return disposed;
20
+ })`);
21
+ return f() === true;
22
+ }
23
+ catch (_err) {
24
+ return false;
25
+ }
26
+ };
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  // @ts-nocheck
3
+ const URL = require("url").URL;
3
4
  module.exports = function urlToRelativePath(url) {
4
- if (url.startsWith("https://test.cases/path/"))
5
- url = url.slice(24);
5
+ if (url.startsWith("https://") || url.startsWith("file://")) {
6
+ const urlObj = new URL(url);
7
+ return `./${urlObj.pathname.split("/").pop()}`;
8
+ }
6
9
  return `./${url}`;
7
10
  };
@@ -1,2 +1,3 @@
1
- import type { ECompilerType, TCompilerOptions } from "../type";
2
- export declare function readConfigFile<T extends ECompilerType>(files: string[], functionApply?: (config: (TCompilerOptions<T> | ((...args: unknown[]) => TCompilerOptions<T>))[]) => TCompilerOptions<T>[]): TCompilerOptions<T>[];
1
+ import type { RspackOptions } from "@rspack/core";
2
+ import type { ITestContext } from "../type";
3
+ export declare function readConfigFile(files: string[], context: ITestContext, prevOption?: RspackOptions, functionApply?: (config: (RspackOptions | ((...args: unknown[]) => RspackOptions))[]) => RspackOptions[]): RspackOptions[];
@@ -5,9 +5,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readConfigFile = readConfigFile;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
- function readConfigFile(files, functionApply) {
8
+ const debug_1 = require("../test/debug");
9
+ function readConfigFile(files, context, prevOption, functionApply) {
9
10
  const existsFile = files.find(i => fs_extra_1.default.existsSync(i));
10
- const fileConfig = existsFile ? require(existsFile) : {};
11
+ let fileConfig = existsFile ? require(existsFile) : {};
12
+ if (typeof fileConfig === "function") {
13
+ fileConfig = fileConfig({ config: prevOption }, { testPath: context.getDist(), tempPath: context.getTemp() });
14
+ }
11
15
  const configArr = Array.isArray(fileConfig) ? fileConfig : [fileConfig];
16
+ if (existsFile) {
17
+ context.setValue(debug_1.DEBUG_SCOPES.CompilerOptionsReadConfigFile, {
18
+ file: existsFile,
19
+ config: fileConfig
20
+ });
21
+ }
12
22
  return functionApply ? functionApply(configArr) : configArr;
13
23
  }
@@ -6,6 +6,18 @@ const path = require("node:path");
6
6
  if (process.env.RSPACK_BINDING_BUILDER_TESTING) {
7
7
  process.env.RSPACK_BINDING = path.resolve(__dirname, "../../node_modules/@rspack/binding-testing");
8
8
  }
9
+ if (process.env.RSTEST) {
10
+ global.printLogger ??= process.env.printLogger === "true";
11
+ global.__TEST_FIXTURES_PATH__ ??= process.env.__TEST_FIXTURES_PATH__;
12
+ global.updateSnapshot ??= process.env.updateSnapshot === "true";
13
+ global.testFilter ??= process.env.testFilter;
14
+ global.__TEST_PATH__ ??= process.env.__TEST_PATH__;
15
+ global.__TEST_DIST_PATH__ ??= process.env.__TEST_DIST_PATH__;
16
+ global.__ROOT_PATH__ ??= process.env.__ROOT_PATH__;
17
+ global.__RSPACK_PATH__ ??= process.env.__RSPACK_PATH__;
18
+ global.__RSPACK_TEST_TOOLS_PATH__ ??= process.env.__RSPACK_TEST_TOOLS_PATH__;
19
+ global.__DEBUG__ ??= process.env.DEBUG === "test";
20
+ }
9
21
  if (process.env.ALTERNATIVE_SORT) {
10
22
  const oldSort = Array.prototype.sort;
11
23
  Array.prototype.sort = function (cmp) {
@@ -58,7 +70,8 @@ if (process.env.DEBUG_INFO) {
58
70
  }, timeout);
59
71
  }
60
72
  else {
61
- it(name, done => {
73
+ it(name, () => new Promise((resolve, reject) => {
74
+ const done = err => (err ? reject(err) : resolve());
62
75
  process.stdout.write(`START2 ${name}\n`);
63
76
  return fn(err => {
64
77
  if (err) {
@@ -69,7 +82,7 @@ if (process.env.DEBUG_INFO) {
69
82
  }
70
83
  return done(err);
71
84
  });
72
- }, timeout);
85
+ }), timeout);
73
86
  }
74
87
  };
75
88
  };
@@ -6,8 +6,8 @@ const to_match_file_snapshot_1 = require("./expect/to-match-file-snapshot");
6
6
  const serializers_1 = require("./serializers");
7
7
  expect.extend({
8
8
  // CHANGE: new test matcher for `rspack-test-tools`
9
- // @ts-ignore
10
- toMatchFileSnapshot: to_match_file_snapshot_1.toMatchFileSnapshot,
9
+ // @ts-expect-error
10
+ toMatchFileSnapshotSync: to_match_file_snapshot_1.toMatchFileSnapshotSync,
11
11
  toBeTypeOf: to_be_typeof_1.toBeTypeOf,
12
12
  toEndWith: to_end_with_1.toEndWith
13
13
  });
@@ -9,11 +9,11 @@ function toMatchSnapshot() {
9
9
  function toMatchInlineSnapshot() {
10
10
  return { pass: true, message: () => "" };
11
11
  }
12
- function toMatchFileSnapshot() {
12
+ function toMatchFileSnapshotSync() {
13
13
  return { pass: true, message: () => "" };
14
14
  }
15
15
  expect.extend({
16
16
  toMatchSnapshot,
17
17
  toMatchInlineSnapshot,
18
- toMatchFileSnapshot
18
+ toMatchFileSnapshotSync
19
19
  });
@@ -0,0 +1,2 @@
1
+ import type { RspackOptions } from "@rspack/core";
2
+ export default function stringifyConfig(config: RspackOptions, verbose?: boolean): string | undefined;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = stringifyConfig;
4
+ const javascript_stringify_1 = require("javascript-stringify");
5
+ function stringifyConfig(config, verbose = false) {
6
+ return (0, javascript_stringify_1.stringify)(config, (value, indent, stringify) => {
7
+ // improve plugin output
8
+ if (value?.__pluginName) {
9
+ const prefix = `/* config.${value.__pluginType}('${value.__pluginName}') */\n`;
10
+ const constructorExpression = value.__pluginPath
11
+ ? // The path is stringified to ensure special characters are escaped
12
+ // (such as the backslashes in Windows-style paths).
13
+ `(require(${stringify(value.__pluginPath)}))`
14
+ : value.__pluginConstructorName;
15
+ if (constructorExpression) {
16
+ // get correct indentation for args by stringifying the args array and
17
+ // discarding the square brackets.
18
+ const args = stringify(value.__pluginArgs)?.slice(1, -1);
19
+ return `${prefix}new ${constructorExpression}(${args})`;
20
+ }
21
+ return (prefix +
22
+ stringify(value.__pluginArgs?.length ? { args: value.__pluginArgs } : {}));
23
+ }
24
+ // improve rule/use output
25
+ if (value?.__ruleNames) {
26
+ const ruleTypes = value.__ruleTypes;
27
+ const prefix = `/* config.module${value.__ruleNames
28
+ .map((r, index) => `.${ruleTypes ? ruleTypes[index] : "rule"}('${r}')`)
29
+ .join("")}${value.__useName ? `.use('${value.__useName}')` : ``} */\n`;
30
+ return prefix + stringify(value);
31
+ }
32
+ if (value?.__expression) {
33
+ return value.__expression;
34
+ }
35
+ // shorten long functions
36
+ if (typeof value === "function") {
37
+ if (!verbose && value.toString().length > 100) {
38
+ return `function () { /* omitted long function */ }`;
39
+ }
40
+ }
41
+ return stringify(value);
42
+ }, 2);
43
+ }
@@ -1,2 +1 @@
1
1
  export function checkChunkModules(statsJson: any, chunkModulesMap: any, strict?: boolean): boolean;
2
- export function checkChunkRuntime(statsJson: any, chunkModulesMap: any, strict?: boolean): boolean;
@@ -16,24 +16,6 @@ exports.checkChunkModules = function checkChunkModules(statsJson, chunkModulesMa
16
16
  }
17
17
  return true;
18
18
  };
19
- exports.checkChunkRuntime = function checkChunkModules(statsJson, chunkModulesMap, strict = true) {
20
- for (const chunkId of Reflect.ownKeys(chunkModulesMap)) {
21
- const chunk = getChunk(statsJson, chunkId);
22
- const expectedRuntime = chunkModulesMap[chunkId];
23
- const chunkRuntime = chunk.runtime;
24
- if (strict) {
25
- expectedRuntime.length === chunkRuntime.length;
26
- }
27
- for (let i = 0; i < expectedRuntime.length; i++) {
28
- const expected = expectedRuntime[i];
29
- const rt = chunkRuntime[i];
30
- if (expected !== rt) {
31
- throw new Error(`chunk ${chunkId} runtime not equal, expected: ${expectedRuntime}, but got: ${chunkRuntime}`);
32
- }
33
- }
34
- }
35
- return true;
36
- };
37
19
  function getChunk(statsJson, id) {
38
20
  const chunk = statsJson.chunks.find(chunk => chunk.id.includes(id));
39
21
  if (!chunk) {
@@ -3,15 +3,13 @@
3
3
  module.exports = () => {
4
4
  const warnings = [];
5
5
  let oldWarn;
6
- beforeEach(done => {
6
+ beforeEach(() => {
7
7
  oldWarn = console.warn;
8
8
  console.warn = m => warnings.push(m);
9
- done();
10
9
  });
11
- afterEach(done => {
10
+ afterEach(() => {
12
11
  expectWarning();
13
12
  console.warn = oldWarn;
14
- done();
15
13
  });
16
14
  const expectWarning = (...regexp) => {
17
15
  expect(warnings).toEqual(regexp.map(r => expect.stringMatching(r)));
package/dist/index.d.ts CHANGED
@@ -1,12 +1,8 @@
1
1
  export * from "./case";
2
- export * from "./compare";
3
2
  export * from "./helper";
4
3
  export * from "./plugin";
5
- export * from "./processor";
6
- export * from "./reporter";
7
4
  export * from "./runner";
8
5
  export * from "./test/context";
9
6
  export * from "./test/creator";
10
- export * from "./test/simple";
11
7
  export * from "./test/tester";
12
8
  export * from "./type";
package/dist/index.js CHANGED
@@ -15,14 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./case"), exports);
18
- __exportStar(require("./compare"), exports);
19
18
  __exportStar(require("./helper"), exports);
20
19
  __exportStar(require("./plugin"), exports);
21
- __exportStar(require("./processor"), exports);
22
- __exportStar(require("./reporter"), exports);
23
20
  __exportStar(require("./runner"), exports);
24
21
  __exportStar(require("./test/context"), exports);
25
22
  __exportStar(require("./test/creator"), exports);
26
- __exportStar(require("./test/simple"), exports);
27
23
  __exportStar(require("./test/tester"), exports);
28
24
  __exportStar(require("./type"), exports);
@@ -1,4 +1 @@
1
1
  export * from "./lazy-compilation-test-plugin";
2
- export * from "./rspack-diff-config-plugin";
3
- export * from "./webpack-diff-config-plugin";
4
- export * from "./webpack-module-placeholder-plugin";
@@ -15,6 +15,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lazy-compilation-test-plugin"), exports);
18
- __exportStar(require("./rspack-diff-config-plugin"), exports);
19
- __exportStar(require("./webpack-diff-config-plugin"), exports);
20
- __exportStar(require("./webpack-module-placeholder-plugin"), exports);
@@ -21,13 +21,13 @@ class LazyCompilationTestPlugin {
21
21
  : `${protocol}://${addr.address}:${addr.port}`;
22
22
  if (compiler instanceof core_1.MultiCompiler) {
23
23
  for (const c of compiler.compilers) {
24
- if (c.options.experiments.lazyCompilation) {
25
- c.options.experiments.lazyCompilation.serverUrl = urlBase;
24
+ if (c.options.lazyCompilation) {
25
+ c.options.lazyCompilation.serverUrl = urlBase;
26
26
  }
27
27
  }
28
28
  }
29
- else if (compiler.options.experiments.lazyCompilation) {
30
- compiler.options.experiments.lazyCompilation.serverUrl = urlBase;
29
+ else if (compiler.options.lazyCompilation) {
30
+ compiler.options.lazyCompilation.serverUrl = urlBase;
31
31
  }
32
32
  middleware = core_1.experiments.lazyCompilationMiddleware(compiler);
33
33
  resolve(null);
@@ -1,9 +1,2 @@
1
- export * from "./basic";
2
- export * from "./cache";
3
- export * from "./hot";
4
- export * from "./hot-step";
5
- export * from "./multiple";
6
- export * from "./normal";
7
- export * from "./runner";
8
- export * from "./type";
9
- export * from "./watch";
1
+ export * from "./node";
2
+ export * from "./web";
@@ -14,12 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./basic"), exports);
18
- __exportStar(require("./cache"), exports);
19
- __exportStar(require("./hot"), exports);
20
- __exportStar(require("./hot-step"), exports);
21
- __exportStar(require("./multiple"), exports);
22
- __exportStar(require("./normal"), exports);
23
- __exportStar(require("./runner"), exports);
24
- __exportStar(require("./type"), exports);
25
- __exportStar(require("./watch"), exports);
17
+ __exportStar(require("./node"), exports);
18
+ __exportStar(require("./web"), exports);