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