vest 5.1.4 → 5.2.0
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/cjs/vest.development.js +147 -119
- package/dist/cjs/vest.development.js.map +1 -1
- package/dist/cjs/vest.production.js +1 -1
- package/dist/cjs/vest.production.js.map +1 -1
- package/dist/es/vest.development.js +149 -121
- package/dist/es/vest.development.js.map +1 -1
- package/dist/es/vest.production.js +1 -1
- package/dist/es/vest.production.js.map +1 -1
- package/dist/umd/vest.development.js +147 -119
- package/dist/umd/vest.development.js.map +1 -1
- package/dist/umd/vest.production.js +1 -1
- package/dist/umd/vest.production.js.map +1 -1
- package/package.json +6 -6
- package/types/SuiteSerializer.d.ts +12 -12
- package/types/SuiteSerializer.d.ts.map +1 -1
- package/types/classnames.d.ts +12 -12
- package/types/classnames.d.ts.map +1 -1
- package/types/parser.d.ts +12 -12
- package/types/parser.d.ts.map +1 -1
- package/types/promisify.d.ts +12 -12
- package/types/promisify.d.ts.map +1 -1
- package/types/vest.d.ts +12 -12
- package/types/vest.d.ts.map +1 -1
|
@@ -200,25 +200,68 @@
|
|
|
200
200
|
useExpireSuiteResultCache();
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
203
|
+
const CommonStates = {
|
|
204
|
+
PENDING: 'PENDING',
|
|
205
|
+
};
|
|
206
|
+
const State = {
|
|
207
|
+
[CommonStates.PENDING]: CommonStates.PENDING,
|
|
208
|
+
INITIAL: 'INITIAL',
|
|
209
|
+
DONE: 'DONE',
|
|
210
|
+
};
|
|
211
|
+
const machine$1 = {
|
|
212
|
+
initial: State.INITIAL,
|
|
213
|
+
states: {
|
|
214
|
+
[State.DONE]: {},
|
|
215
|
+
[State.INITIAL]: {
|
|
216
|
+
[State.PENDING]: State.PENDING,
|
|
217
|
+
[State.DONE]: State.DONE,
|
|
218
|
+
},
|
|
219
|
+
[State.PENDING]: {
|
|
220
|
+
[State.DONE]: State.DONE,
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
function transition(from, to) {
|
|
225
|
+
return CommonStateMachine.staticTransition(from !== null && from !== void 0 ? from : State.INITIAL, to);
|
|
226
|
+
}
|
|
227
|
+
function setDone(isolate) {
|
|
228
|
+
isolate.status = transition(isolate.status, State.DONE);
|
|
229
|
+
}
|
|
230
|
+
function setPending(isolate) {
|
|
231
|
+
isolate.status = transition(isolate.status, State.PENDING);
|
|
232
|
+
}
|
|
233
|
+
const CommonStateMachine = vestUtils.StateMachine(machine$1);
|
|
234
|
+
|
|
235
|
+
var ErrorStrings;
|
|
236
|
+
(function (ErrorStrings) {
|
|
237
|
+
ErrorStrings["HOOK_CALLED_OUTSIDE"] = "hook called outside of a running suite.";
|
|
238
|
+
ErrorStrings["EXPECTED_VEST_TEST"] = "Expected value to be an instance of IsolateTest";
|
|
239
|
+
ErrorStrings["FIELD_NAME_REQUIRED"] = "Field name must be passed";
|
|
240
|
+
ErrorStrings["SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION"] = "Suite must be initialized with a function";
|
|
241
|
+
ErrorStrings["PROMISIFY_REQUIRE_FUNCTION"] = "Vest.Promisify must be called with a function";
|
|
242
|
+
ErrorStrings["PARSER_EXPECT_RESULT_OBJECT"] = "Vest parser: expected argument at position 0 to be Vest's result object.";
|
|
243
|
+
ErrorStrings["WARN_MUST_BE_CALLED_FROM_TEST"] = "Warn must be called from within the body of a test function";
|
|
244
|
+
ErrorStrings["EACH_CALLBACK_MUST_BE_A_FUNCTION"] = "Each must be called with a function";
|
|
245
|
+
ErrorStrings["INVALID_PARAM_PASSED_TO_FUNCTION"] = "Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}";
|
|
246
|
+
ErrorStrings["TESTS_CALLED_IN_DIFFERENT_ORDER"] = "Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\n This can happen on one of two reasons:\n 1. You're using if/else statements to conditionally select tests. Instead, use \"skipWhen\".\n 2. You are iterating over a list of tests, and their order changed. Use \"each\" and a custom key prop so that Vest retains their state.";
|
|
247
|
+
ErrorStrings["UNEXPECTED_TEST_REGISTRATION_ERROR"] = "Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.";
|
|
248
|
+
ErrorStrings["UNEXPECTED_TEST_RUN_ERROR"] = "Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.";
|
|
249
|
+
ErrorStrings["INCLUDE_SELF"] = "Trying to call include.when on the same field.";
|
|
250
|
+
})(ErrorStrings || (ErrorStrings = {}));
|
|
251
|
+
|
|
252
|
+
const TestStatus = {
|
|
253
|
+
[CommonStates.PENDING]: CommonStates.PENDING,
|
|
254
|
+
CANCELED: 'CANCELED',
|
|
255
|
+
FAILED: 'FAILED',
|
|
256
|
+
OMITTED: 'OMITTED',
|
|
257
|
+
PASSING: 'PASSING',
|
|
258
|
+
SKIPPED: 'SKIPPED',
|
|
259
|
+
UNTESTED: 'UNTESTED',
|
|
260
|
+
WARNING: 'WARNING',
|
|
261
|
+
};
|
|
262
|
+
const TestAction = {
|
|
263
|
+
RESET: 'RESET',
|
|
264
|
+
};
|
|
222
265
|
const machine = {
|
|
223
266
|
initial: TestStatus.UNTESTED,
|
|
224
267
|
states: {
|
|
@@ -252,7 +295,7 @@
|
|
|
252
295
|
[TestStatus.OMITTED]: {},
|
|
253
296
|
},
|
|
254
297
|
};
|
|
255
|
-
|
|
298
|
+
const IsolateTestStateMachine = vestUtils.StateMachine(machine);
|
|
256
299
|
|
|
257
300
|
var Severity;
|
|
258
301
|
(function (Severity) {
|
|
@@ -275,13 +318,22 @@
|
|
|
275
318
|
TestSeverity["Warning"] = "warning";
|
|
276
319
|
})(TestSeverity || (TestSeverity = {}));
|
|
277
320
|
|
|
278
|
-
const TestStateMachine = createTestStateMachine();
|
|
279
321
|
class VestTest {
|
|
280
322
|
// Read
|
|
281
323
|
static getData(test) {
|
|
282
324
|
vestUtils.invariant(test.data);
|
|
283
325
|
return test.data;
|
|
284
326
|
}
|
|
327
|
+
static is(isolate) {
|
|
328
|
+
return vestjsRuntime.IsolateSelectors.isIsolateType(isolate, VestIsolateType.Test);
|
|
329
|
+
}
|
|
330
|
+
static isX(isolate) {
|
|
331
|
+
vestUtils.invariant(VestTest.is(isolate), ErrorStrings.EXPECTED_VEST_TEST);
|
|
332
|
+
}
|
|
333
|
+
static cast(isolate) {
|
|
334
|
+
VestTest.isX(isolate);
|
|
335
|
+
return isolate;
|
|
336
|
+
}
|
|
285
337
|
static warns(test) {
|
|
286
338
|
return VestTest.getData(test).severity === TestSeverity.Warning;
|
|
287
339
|
}
|
|
@@ -331,7 +383,7 @@
|
|
|
331
383
|
return vestUtils.isPromise(VestTest.getData(test).asyncTest);
|
|
332
384
|
}
|
|
333
385
|
static statusEquals(test, status) {
|
|
334
|
-
return
|
|
386
|
+
return test.status === status;
|
|
335
387
|
}
|
|
336
388
|
// Mutate
|
|
337
389
|
static setPending(test) {
|
|
@@ -364,7 +416,7 @@
|
|
|
364
416
|
}
|
|
365
417
|
static cancel(test) {
|
|
366
418
|
VestTest.setStatus(test, TestStatus.CANCELED);
|
|
367
|
-
|
|
419
|
+
vestjsRuntime.IsolateMutator.abort(test, TestStatus.CANCELED);
|
|
368
420
|
}
|
|
369
421
|
static omit(test) {
|
|
370
422
|
VestTest.setStatus(test, TestStatus.OMITTED);
|
|
@@ -373,80 +425,80 @@
|
|
|
373
425
|
VestTest.setStatus(test, TestAction.RESET);
|
|
374
426
|
}
|
|
375
427
|
static setStatus(test, status, payload) {
|
|
376
|
-
|
|
428
|
+
test.status = IsolateTestStateMachine.staticTransition(test.status, status, payload);
|
|
377
429
|
}
|
|
378
430
|
}
|
|
379
431
|
|
|
380
|
-
function isIsolateTest(isolate) {
|
|
381
|
-
return vestjsRuntime.IsolateSelectors.isIsolateType(isolate, VestIsolateType.Test);
|
|
382
|
-
}
|
|
383
|
-
function isIsolateTestX(isolate) {
|
|
384
|
-
vestUtils.invariant(isIsolateTest(isolate));
|
|
385
|
-
}
|
|
386
|
-
function castIsolateTest(isolate) {
|
|
387
|
-
isIsolateTestX(isolate);
|
|
388
|
-
return isolate;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
432
|
function nonMatchingFieldName(WithFieldName, fieldName) {
|
|
392
433
|
return !!fieldName && !matchingFieldName(WithFieldName, fieldName);
|
|
393
434
|
}
|
|
394
435
|
function matchingFieldName(WithFieldName, fieldName) {
|
|
395
436
|
return !!(fieldName && WithFieldName.fieldName === fieldName);
|
|
396
437
|
}
|
|
438
|
+
function matchesOrHasNoFieldName(WithFieldName, fieldName) {
|
|
439
|
+
if (fieldName) {
|
|
440
|
+
return matchingFieldName(WithFieldName, fieldName);
|
|
441
|
+
}
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
class SuiteWalker {
|
|
446
|
+
static hasPending(predicate) {
|
|
447
|
+
const root = SuiteWalker.defaultRoot();
|
|
448
|
+
if (!root) {
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
return vestjsRuntime.Walker.some(root, vestUtils.Predicates.all(isPendingStatus, predicate !== null && predicate !== void 0 ? predicate : true));
|
|
452
|
+
}
|
|
453
|
+
// Checks whether there are pending isolates in the tree.
|
|
454
|
+
// If a fieldname is provided, will only check tests with a matching fieldname.
|
|
455
|
+
static hasRemainingWithTestNameMatching(fieldName) {
|
|
456
|
+
return SuiteWalker.hasPending(vestUtils.Predicates.any(vestUtils.isNullish(fieldName), vestUtils.Predicates.all(VestTest.is, (testObject) => {
|
|
457
|
+
return matchesOrHasNoFieldName(VestTest.getData(testObject), fieldName);
|
|
458
|
+
})));
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
SuiteWalker.defaultRoot = vestjsRuntime.VestRuntime.useAvailableRoot;
|
|
462
|
+
function isPendingStatus(isolate) {
|
|
463
|
+
return isolate.status === CommonStates.PENDING;
|
|
464
|
+
}
|
|
397
465
|
|
|
398
466
|
class TestWalker {
|
|
399
467
|
static hasNoTests(root = TestWalker.defaultRoot()) {
|
|
400
468
|
if (!root)
|
|
401
469
|
return true;
|
|
402
|
-
return !vestjsRuntime.Walker.has(root,
|
|
403
|
-
}
|
|
404
|
-
static someIncompleteTests(predicate, root = TestWalker.defaultRoot()) {
|
|
405
|
-
if (!root)
|
|
406
|
-
return false;
|
|
407
|
-
return vestjsRuntime.Walker.some(root, isolate => {
|
|
408
|
-
isIsolateTestX(isolate);
|
|
409
|
-
return VestTest.isPending(isolate) && predicate(isolate);
|
|
410
|
-
}, isIsolateTest);
|
|
470
|
+
return !vestjsRuntime.Walker.has(root, VestTest.is);
|
|
411
471
|
}
|
|
412
472
|
static someTests(predicate, root = TestWalker.defaultRoot()) {
|
|
413
473
|
if (!root)
|
|
414
474
|
return false;
|
|
415
475
|
return vestjsRuntime.Walker.some(root, isolate => {
|
|
416
|
-
|
|
476
|
+
VestTest.isX(isolate);
|
|
417
477
|
return predicate(isolate);
|
|
418
|
-
},
|
|
478
|
+
}, VestTest.is);
|
|
419
479
|
}
|
|
420
480
|
static everyTest(predicate, root = TestWalker.defaultRoot()) {
|
|
421
481
|
if (!root)
|
|
422
482
|
return false;
|
|
423
483
|
return vestjsRuntime.Walker.every(root, isolate => {
|
|
424
|
-
|
|
484
|
+
VestTest.isX(isolate);
|
|
425
485
|
return predicate(isolate);
|
|
426
|
-
},
|
|
486
|
+
}, VestTest.is);
|
|
427
487
|
}
|
|
428
488
|
static walkTests(callback, root = TestWalker.defaultRoot()) {
|
|
429
489
|
if (!root)
|
|
430
490
|
return;
|
|
431
491
|
vestjsRuntime.Walker.walk(root, (isolate, breakout) => {
|
|
432
|
-
callback(
|
|
433
|
-
},
|
|
434
|
-
}
|
|
435
|
-
static hasRemainingTests(fieldName) {
|
|
436
|
-
return TestWalker.someIncompleteTests(testObject => {
|
|
437
|
-
if (fieldName) {
|
|
438
|
-
return matchingFieldName(VestTest.getData(testObject), fieldName);
|
|
439
|
-
}
|
|
440
|
-
return true;
|
|
441
|
-
});
|
|
492
|
+
callback(VestTest.cast(isolate), breakout);
|
|
493
|
+
}, VestTest.is);
|
|
442
494
|
}
|
|
443
495
|
static pluckTests(predicate, root = TestWalker.defaultRoot()) {
|
|
444
496
|
if (!root)
|
|
445
497
|
return;
|
|
446
498
|
vestjsRuntime.Walker.pluck(root, isolate => {
|
|
447
|
-
|
|
499
|
+
VestTest.isX(isolate);
|
|
448
500
|
return predicate(isolate);
|
|
449
|
-
},
|
|
501
|
+
}, VestTest.is);
|
|
450
502
|
}
|
|
451
503
|
static resetField(fieldName) {
|
|
452
504
|
TestWalker.walkTests(testObject => {
|
|
@@ -520,7 +572,7 @@
|
|
|
520
572
|
function useRunFieldCallbacks(fieldName) {
|
|
521
573
|
const [fieldCallbacks] = useFieldCallbacks();
|
|
522
574
|
if (fieldName &&
|
|
523
|
-
!
|
|
575
|
+
!SuiteWalker.hasRemainingWithTestNameMatching(fieldName) &&
|
|
524
576
|
vestUtils.isArray(fieldCallbacks[fieldName])) {
|
|
525
577
|
vestUtils.callEach(fieldCallbacks[fieldName]);
|
|
526
578
|
}
|
|
@@ -544,14 +596,26 @@
|
|
|
544
596
|
}
|
|
545
597
|
const { fieldName } = VestTest.getData(testObject);
|
|
546
598
|
useRunFieldCallbacks(fieldName);
|
|
547
|
-
if (!TestWalker.hasRemainingTests()) {
|
|
548
|
-
// When no more tests are running, emit the done event
|
|
549
|
-
VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
|
|
550
|
-
}
|
|
551
599
|
});
|
|
552
600
|
on(Events.TEST_RUN_STARTED, () => {
|
|
553
601
|
/* Let's just invalidate the suite cache for now */
|
|
554
602
|
});
|
|
603
|
+
on(vestjsRuntime.RuntimeEvents.ISOLATE_PENDING, (isolate) => {
|
|
604
|
+
if (VestTest.is(isolate)) {
|
|
605
|
+
VestTest.setPending(isolate);
|
|
606
|
+
}
|
|
607
|
+
setPending(isolate);
|
|
608
|
+
});
|
|
609
|
+
on(vestjsRuntime.RuntimeEvents.ISOLATE_DONE, (isolate) => {
|
|
610
|
+
if (VestTest.is(isolate)) {
|
|
611
|
+
VestBus.emit(Events.TEST_COMPLETED, isolate);
|
|
612
|
+
}
|
|
613
|
+
setDone(isolate);
|
|
614
|
+
if (!SuiteWalker.hasPending()) {
|
|
615
|
+
// When no more tests are running, emit the done event
|
|
616
|
+
VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
|
|
617
|
+
}
|
|
618
|
+
});
|
|
555
619
|
on(Events.DONE_TEST_OMISSION_PASS, () => {
|
|
556
620
|
/* We NEED to refresh the cache here. Don't ask */
|
|
557
621
|
});
|
|
@@ -599,23 +663,6 @@
|
|
|
599
663
|
}
|
|
600
664
|
}
|
|
601
665
|
|
|
602
|
-
var ErrorStrings;
|
|
603
|
-
(function (ErrorStrings) {
|
|
604
|
-
ErrorStrings["HOOK_CALLED_OUTSIDE"] = "hook called outside of a running suite.";
|
|
605
|
-
ErrorStrings["EXPECTED_VEST_TEST"] = "Expected value to be an instance of IsolateTest";
|
|
606
|
-
ErrorStrings["FIELD_NAME_REQUIRED"] = "Field name must be passed";
|
|
607
|
-
ErrorStrings["SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION"] = "Suite must be initialized with a function";
|
|
608
|
-
ErrorStrings["PROMISIFY_REQUIRE_FUNCTION"] = "Vest.Promisify must be called with a function";
|
|
609
|
-
ErrorStrings["PARSER_EXPECT_RESULT_OBJECT"] = "Vest parser: expected argument at position 0 to be Vest's result object.";
|
|
610
|
-
ErrorStrings["WARN_MUST_BE_CALLED_FROM_TEST"] = "Warn must be called from within the body of a test function";
|
|
611
|
-
ErrorStrings["EACH_CALLBACK_MUST_BE_A_FUNCTION"] = "Each must be called with a function";
|
|
612
|
-
ErrorStrings["INVALID_PARAM_PASSED_TO_FUNCTION"] = "Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}";
|
|
613
|
-
ErrorStrings["TESTS_CALLED_IN_DIFFERENT_ORDER"] = "Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\n This can happen on one of two reasons:\n 1. You're using if/else statements to conditionally select tests. Instead, use \"skipWhen\".\n 2. You are iterating over a list of tests, and their order changed. Use \"each\" and a custom key prop so that Vest retains their state.";
|
|
614
|
-
ErrorStrings["UNEXPECTED_TEST_REGISTRATION_ERROR"] = "Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.";
|
|
615
|
-
ErrorStrings["UNEXPECTED_TEST_RUN_ERROR"] = "Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.";
|
|
616
|
-
ErrorStrings["INCLUDE_SELF"] = "Trying to call include.when on the same field.";
|
|
617
|
-
})(ErrorStrings || (ErrorStrings = {}));
|
|
618
|
-
|
|
619
666
|
class IsolateReconciler {
|
|
620
667
|
static match(_currentNode, _historyNode) {
|
|
621
668
|
return false;
|
|
@@ -968,24 +1015,11 @@
|
|
|
968
1015
|
}
|
|
969
1016
|
// Does the given field have any pending tests that are not optional?
|
|
970
1017
|
function useHasNonOptionalIncomplete(fieldName) {
|
|
971
|
-
return
|
|
972
|
-
if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {
|
|
973
|
-
return false;
|
|
974
|
-
}
|
|
975
|
-
return !useIsOptionalFieldApplied(fieldName);
|
|
976
|
-
});
|
|
1018
|
+
return SuiteWalker.hasPending(vestUtils.Predicates.all(VestTest.is, (testObject) => !nonMatchingFieldName(VestTest.getData(testObject), fieldName), () => !useIsOptionalFieldApplied(fieldName)));
|
|
977
1019
|
}
|
|
978
1020
|
// Do the given group/field have any pending tests that are not optional?
|
|
979
1021
|
function useHasNonOptionalIncompleteByGroup(groupName, fieldName) {
|
|
980
|
-
return
|
|
981
|
-
if (nonMatchingGroupName(testObject, groupName)) {
|
|
982
|
-
return false;
|
|
983
|
-
}
|
|
984
|
-
if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {
|
|
985
|
-
return false;
|
|
986
|
-
}
|
|
987
|
-
return !useIsOptionalFieldApplied(fieldName);
|
|
988
|
-
});
|
|
1022
|
+
return SuiteWalker.hasPending(vestUtils.Predicates.all(VestTest.is, (testObject) => !nonMatchingGroupName(testObject, groupName), (testObject) => !nonMatchingFieldName(VestTest.getData(testObject), fieldName), () => !useIsOptionalFieldApplied(fieldName)));
|
|
989
1023
|
}
|
|
990
1024
|
// Did all of the tests for the provided field run/omit?
|
|
991
1025
|
// This makes sure that the fields are not skipped or pending.
|
|
@@ -1332,7 +1366,7 @@
|
|
|
1332
1366
|
|
|
1333
1367
|
class IsolateTestReconciler extends IsolateReconciler {
|
|
1334
1368
|
static match(currentNode, historyNode) {
|
|
1335
|
-
return
|
|
1369
|
+
return VestTest.is(currentNode) && VestTest.is(historyNode);
|
|
1336
1370
|
}
|
|
1337
1371
|
static reconcile(currentNode, historyNode) {
|
|
1338
1372
|
const reconcilerOutput = usePickNode(historyNode, currentNode);
|
|
@@ -1346,13 +1380,13 @@
|
|
|
1346
1380
|
}
|
|
1347
1381
|
function handleCollision(newNode, prevNode) {
|
|
1348
1382
|
if (vestjsRuntime.IsolateInspector.usesKey(newNode)) {
|
|
1349
|
-
return
|
|
1383
|
+
return VestTest.cast(vestjsRuntime.Reconciler.handleIsolateNodeWithKey(newNode));
|
|
1350
1384
|
}
|
|
1351
1385
|
if (vestjsRuntime.Reconciler.dropNextNodesOnReorder(nodeReorderDetected, newNode, prevNode)) {
|
|
1352
1386
|
throwTestOrderError(newNode, prevNode);
|
|
1353
1387
|
return newNode;
|
|
1354
1388
|
}
|
|
1355
|
-
if (!
|
|
1389
|
+
if (!VestTest.is(prevNode)) {
|
|
1356
1390
|
// I believe we cannot actually reach this point.
|
|
1357
1391
|
// Because it should already be handled by nodeReorderDetected.
|
|
1358
1392
|
/* istanbul ignore next */
|
|
@@ -1370,12 +1404,12 @@
|
|
|
1370
1404
|
return prevNode;
|
|
1371
1405
|
}
|
|
1372
1406
|
function cancelOverriddenPendingTestOnTestReRun(nextNode, currentNode, prevTestObject) {
|
|
1373
|
-
if (nextNode === currentNode &&
|
|
1407
|
+
if (nextNode === currentNode && VestTest.is(currentNode)) {
|
|
1374
1408
|
cancelOverriddenPendingTest(prevTestObject, currentNode);
|
|
1375
1409
|
}
|
|
1376
1410
|
}
|
|
1377
1411
|
function nodeReorderDetected(newNode, prevNode) {
|
|
1378
|
-
return
|
|
1412
|
+
return VestTest.is(prevNode) && !isSameProfileTest(prevNode, newNode);
|
|
1379
1413
|
}
|
|
1380
1414
|
function throwTestOrderError(newNode, prevNode) {
|
|
1381
1415
|
if (vestjsRuntime.IsolateInspector.canReorder(newNode)) {
|
|
@@ -1383,7 +1417,7 @@
|
|
|
1383
1417
|
}
|
|
1384
1418
|
vestUtils.deferThrow(vestUtils.text(ErrorStrings.TESTS_CALLED_IN_DIFFERENT_ORDER, {
|
|
1385
1419
|
fieldName: VestTest.getData(newNode).fieldName,
|
|
1386
|
-
prevName:
|
|
1420
|
+
prevName: VestTest.is(prevNode)
|
|
1387
1421
|
? VestTest.getData(prevNode).fieldName
|
|
1388
1422
|
: undefined,
|
|
1389
1423
|
}));
|
|
@@ -1456,8 +1490,7 @@
|
|
|
1456
1490
|
function IsolateTestBase() {
|
|
1457
1491
|
return {
|
|
1458
1492
|
severity: TestSeverity.Error,
|
|
1459
|
-
status:
|
|
1460
|
-
abortController: new AbortController(),
|
|
1493
|
+
status: IsolateTestStateMachine.initial(),
|
|
1461
1494
|
};
|
|
1462
1495
|
}
|
|
1463
1496
|
|
|
@@ -1484,9 +1517,9 @@
|
|
|
1484
1517
|
function runSyncTest(testObject) {
|
|
1485
1518
|
return SuiteContext.run({ currentTest: testObject }, () => {
|
|
1486
1519
|
let result;
|
|
1487
|
-
const { message, testFn
|
|
1520
|
+
const { message, testFn } = VestTest.getData(testObject);
|
|
1488
1521
|
try {
|
|
1489
|
-
result = testFn({ signal: abortController.signal });
|
|
1522
|
+
result = testFn({ signal: testObject.abortController.signal });
|
|
1490
1523
|
}
|
|
1491
1524
|
catch (error) {
|
|
1492
1525
|
if (shouldUseErrorAsMessage(message, error)) {
|
|
@@ -1504,7 +1537,6 @@
|
|
|
1504
1537
|
* runs test, if async - adds to pending array
|
|
1505
1538
|
*/
|
|
1506
1539
|
function useRunTest(testObject) {
|
|
1507
|
-
const VestBus = vestjsRuntime.Bus.useBus();
|
|
1508
1540
|
// Run test callback.
|
|
1509
1541
|
// If a promise is returned, set as async and
|
|
1510
1542
|
// Move to pending list.
|
|
@@ -1514,11 +1546,9 @@
|
|
|
1514
1546
|
// in case object is an enforce chain
|
|
1515
1547
|
if (vestUtils.isPromise(result)) {
|
|
1516
1548
|
VestTest.getData(testObject).asyncTest = result;
|
|
1517
|
-
useRunAsyncTest(testObject);
|
|
1518
|
-
}
|
|
1519
|
-
else {
|
|
1520
|
-
onTestCompleted(VestBus, testObject);
|
|
1549
|
+
return useRunAsyncTest(testObject);
|
|
1521
1550
|
}
|
|
1551
|
+
onTestCompleted(testObject);
|
|
1522
1552
|
}
|
|
1523
1553
|
catch (e) {
|
|
1524
1554
|
// Probably unreachable. If we get here, it means that
|
|
@@ -1537,10 +1567,9 @@
|
|
|
1537
1567
|
const { asyncTest, message } = VestTest.getData(testObject);
|
|
1538
1568
|
if (!vestUtils.isPromise(asyncTest))
|
|
1539
1569
|
return;
|
|
1540
|
-
VestTest.setPending(testObject);
|
|
1541
|
-
const VestBus = vestjsRuntime.Bus.useBus();
|
|
1570
|
+
// VestTest.setPending(testObject);
|
|
1542
1571
|
const done = vestjsRuntime.VestRuntime.persist(() => {
|
|
1543
|
-
onTestCompleted(
|
|
1572
|
+
onTestCompleted(testObject);
|
|
1544
1573
|
});
|
|
1545
1574
|
const fail = vestjsRuntime.VestRuntime.persist((rejectionMessage) => {
|
|
1546
1575
|
if (VestTest.isCanceled(testObject)) {
|
|
@@ -1552,13 +1581,12 @@
|
|
|
1552
1581
|
VestTest.fail(testObject);
|
|
1553
1582
|
done();
|
|
1554
1583
|
});
|
|
1555
|
-
asyncTest.then(done, fail);
|
|
1584
|
+
return asyncTest.then(done, fail);
|
|
1556
1585
|
}
|
|
1557
|
-
function onTestCompleted(
|
|
1586
|
+
function onTestCompleted(testObject) {
|
|
1558
1587
|
// Attempts passing if the test is not already failed.
|
|
1559
1588
|
// or is not canceled/omitted.
|
|
1560
1589
|
VestTest.pass(testObject);
|
|
1561
|
-
VestBus.emit(Events.TEST_COMPLETED, testObject);
|
|
1562
1590
|
}
|
|
1563
1591
|
|
|
1564
1592
|
// @vx-allow use-use
|
|
@@ -1675,7 +1703,7 @@
|
|
|
1675
1703
|
return output;
|
|
1676
1704
|
}
|
|
1677
1705
|
const useDoneCallback = () => callback(useCreateSuiteResult());
|
|
1678
|
-
if (!
|
|
1706
|
+
if (!SuiteWalker.hasRemainingWithTestNameMatching(fieldName)) {
|
|
1679
1707
|
useDoneCallback();
|
|
1680
1708
|
return output;
|
|
1681
1709
|
}
|