@vitest/runner 2.1.0 → 2.1.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 (2) hide show
  1. package/dist/index.js +41 -25
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getSafeTimers, isObject, createDefer, isNegativeNaN, format, objDisplay, objectAttr, toArray, shuffle } from '@vitest/utils';
1
+ import { getSafeTimers, isObject, createDefer, isNegativeNaN, format, objDisplay, objectAttr, toArray, shuffle, assertTypes } from '@vitest/utils';
2
2
  import { processError } from '@vitest/utils/error';
3
3
  export { processError } from '@vitest/utils/error';
4
4
  import { l as createChainable, a as createFileTask, c as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, m as limitConcurrency, p as partitionSuiteChildren, h as hasTests, j as hasFailed } from './chunk-tasks.js';
@@ -224,7 +224,11 @@ function resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtur
224
224
  return pendingFixtures;
225
225
  }
226
226
  function getUsedProps(fn) {
227
- const match = fn.toString().match(/[^(]*\(([^)]*)/);
227
+ let fnString = fn.toString();
228
+ if (/__async\(this, (?:null|arguments|\[[_0-9, ]*\]), function\*/.test(fnString)) {
229
+ fnString = fnString.split("__async(this,")[1];
230
+ }
231
+ const match = fnString.match(/[^(]*\(([^)]*)/);
228
232
  if (!match) {
229
233
  return [];
230
234
  }
@@ -1017,6 +1021,24 @@ async function runTest(test, runner) {
1017
1021
  } catch (e) {
1018
1022
  failTask(test.result, e, runner.config.diffOptions);
1019
1023
  }
1024
+ try {
1025
+ await callTaskHooks(test, test.onFinished || [], "stack");
1026
+ } catch (e) {
1027
+ failTask(test.result, e, runner.config.diffOptions);
1028
+ }
1029
+ if (test.result.state === "fail") {
1030
+ try {
1031
+ await callTaskHooks(
1032
+ test,
1033
+ test.onFailed || [],
1034
+ runner.config.sequence.hooks
1035
+ );
1036
+ } catch (e) {
1037
+ failTask(test.result, e, runner.config.diffOptions);
1038
+ }
1039
+ }
1040
+ delete test.onFailed;
1041
+ delete test.onFinished;
1020
1042
  if (test.result.state === "pass") {
1021
1043
  break;
1022
1044
  }
@@ -1027,22 +1049,6 @@ async function runTest(test, runner) {
1027
1049
  updateTask(test, runner);
1028
1050
  }
1029
1051
  }
1030
- try {
1031
- await callTaskHooks(test, test.onFinished || [], "stack");
1032
- } catch (e) {
1033
- failTask(test.result, e, runner.config.diffOptions);
1034
- }
1035
- if (test.result.state === "fail") {
1036
- try {
1037
- await callTaskHooks(
1038
- test,
1039
- test.onFailed || [],
1040
- runner.config.sequence.hooks
1041
- );
1042
- } catch (e) {
1043
- failTask(test.result, e, runner.config.diffOptions);
1044
- }
1045
- }
1046
1052
  if (test.fails) {
1047
1053
  if (test.result.state === "pass") {
1048
1054
  const error = processError(new Error("Expect test to fail"));
@@ -1102,13 +1108,18 @@ async function runSuite(suite, runner) {
1102
1108
  suite.result.state = "todo";
1103
1109
  } else {
1104
1110
  try {
1105
- beforeAllCleanups = await callSuiteHook(
1106
- suite,
1107
- suite,
1108
- "beforeAll",
1109
- runner,
1110
- [suite]
1111
- );
1111
+ try {
1112
+ beforeAllCleanups = await callSuiteHook(
1113
+ suite,
1114
+ suite,
1115
+ "beforeAll",
1116
+ runner,
1117
+ [suite]
1118
+ );
1119
+ } catch (e) {
1120
+ markTasksAsSkipped(suite, runner);
1121
+ throw e;
1122
+ }
1112
1123
  if (runner.runSuite) {
1113
1124
  await runner.runSuite(suite);
1114
1125
  } else {
@@ -1211,24 +1222,28 @@ function getDefaultHookTimeout() {
1211
1222
  return getRunner().config.hookTimeout;
1212
1223
  }
1213
1224
  function beforeAll(fn, timeout) {
1225
+ assertTypes(fn, '"beforeAll" callback', ["function"]);
1214
1226
  return getCurrentSuite().on(
1215
1227
  "beforeAll",
1216
1228
  withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)
1217
1229
  );
1218
1230
  }
1219
1231
  function afterAll(fn, timeout) {
1232
+ assertTypes(fn, '"afterAll" callback', ["function"]);
1220
1233
  return getCurrentSuite().on(
1221
1234
  "afterAll",
1222
1235
  withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)
1223
1236
  );
1224
1237
  }
1225
1238
  function beforeEach(fn, timeout) {
1239
+ assertTypes(fn, '"beforeEach" callback', ["function"]);
1226
1240
  return getCurrentSuite().on(
1227
1241
  "beforeEach",
1228
1242
  withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)
1229
1243
  );
1230
1244
  }
1231
1245
  function afterEach(fn, timeout) {
1246
+ assertTypes(fn, '"afterEach" callback', ["function"]);
1232
1247
  return getCurrentSuite().on(
1233
1248
  "afterEach",
1234
1249
  withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)
@@ -1254,6 +1269,7 @@ const onTestFinished = createTestHook(
1254
1269
  );
1255
1270
  function createTestHook(name, handler) {
1256
1271
  return (fn, timeout) => {
1272
+ assertTypes(fn, `"${name}" callback`, ["function"]);
1257
1273
  const current = getCurrentTest();
1258
1274
  if (!current) {
1259
1275
  throw new Error(`Hook ${name}() can only be called inside a test`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/runner",
3
3
  "type": "module",
4
- "version": "2.1.0",
4
+ "version": "2.1.2",
5
5
  "description": "Vitest test runner",
6
6
  "license": "MIT",
7
7
  "funding": "https://opencollective.com/vitest",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  "dependencies": {
41
41
  "pathe": "^1.1.2",
42
- "@vitest/utils": "2.1.0"
42
+ "@vitest/utils": "2.1.2"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "rimraf dist && rollup -c",