@fncts/test 0.0.31 → 0.0.33
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/_cjs/api.cjs +5 -5
- package/_cjs/api.cjs.map +1 -1
- package/_cjs/control/AbstractRunnableSpec.cjs +79 -5
- package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
- package/_cjs/control/Annotations/definition.cjs +11 -3
- package/_cjs/control/Annotations/definition.cjs.map +1 -1
- package/_cjs/control/Assertion/api.cjs +6 -5
- package/_cjs/control/Assertion/api.cjs.map +1 -1
- package/_cjs/control/DefaultRunnableSpec.cjs +3 -6
- package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter/render.cjs +1 -1
- package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
- package/_cjs/control/Gen/api.cjs +240 -81
- package/_cjs/control/Gen/api.cjs.map +1 -1
- package/_cjs/control/Live/definition.cjs +9 -8
- package/_cjs/control/Live/definition.cjs.map +1 -1
- package/_cjs/control/Sample/api.cjs +16 -16
- package/_cjs/control/Sample/api.cjs.map +1 -1
- package/_cjs/control/Spec/api.cjs +7 -7
- package/_cjs/control/Spec/api.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer/api.cjs +6 -5
- package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
- package/_cjs/control/TestAspect/api.cjs +2 -3
- package/_cjs/control/TestAspect/api.cjs.map +1 -1
- package/_cjs/control/TestClock/definition.cjs +6 -6
- package/_cjs/control/TestClock/definition.cjs.map +1 -1
- package/_cjs/data/AssertionResult.cjs +3 -2
- package/_cjs/data/AssertionResult.cjs.map +1 -1
- package/_cjs/data/AssertionValue/definition.cjs +2 -1
- package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra/api.cjs +5 -4
- package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
- package/_cjs/data/TestAnnotation/api.cjs +3 -2
- package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
- package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
- package/_cjs/demo.cjs +3 -1
- package/_cjs/demo.cjs.map +1 -1
- package/_mjs/api.mjs +5 -5
- package/_mjs/api.mjs.map +1 -1
- package/_mjs/control/AbstractRunnableSpec.mjs +78 -5
- package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
- package/_mjs/control/Annotations/definition.mjs +8 -1
- package/_mjs/control/Annotations/definition.mjs.map +1 -1
- package/_mjs/control/Assertion/api.mjs +6 -5
- package/_mjs/control/Assertion/api.mjs.map +1 -1
- package/_mjs/control/DefaultRunnableSpec.mjs +3 -6
- package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter/render.mjs +1 -1
- package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
- package/_mjs/control/Gen/api.mjs +219 -73
- package/_mjs/control/Gen/api.mjs.map +1 -1
- package/_mjs/control/Live/definition.mjs +10 -8
- package/_mjs/control/Live/definition.mjs.map +1 -1
- package/_mjs/control/Sample/api.mjs +16 -16
- package/_mjs/control/Sample/api.mjs.map +1 -1
- package/_mjs/control/Spec/api.mjs +7 -7
- package/_mjs/control/Spec/api.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer/api.mjs +6 -5
- package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
- package/_mjs/control/TestAspect/api.mjs +2 -3
- package/_mjs/control/TestAspect/api.mjs.map +1 -1
- package/_mjs/control/TestClock/definition.mjs +6 -6
- package/_mjs/control/TestClock/definition.mjs.map +1 -1
- package/_mjs/data/AssertionResult.mjs +3 -2
- package/_mjs/data/AssertionResult.mjs.map +1 -1
- package/_mjs/data/AssertionValue/definition.mjs +2 -1
- package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra/api.mjs +5 -4
- package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
- package/_mjs/data/TestAnnotation/api.mjs +3 -2
- package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
- package/_mjs/data/TestAnnotationMap.mjs +2 -1
- package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
- package/_mjs/demo.mjs +3 -1
- package/_mjs/demo.mjs.map +1 -1
- package/_src/api.ts +2 -2
- package/_src/control/AbstractRunnableSpec.ts +93 -11
- package/_src/control/Annotations/definition.ts +4 -0
- package/_src/control/DefaultRunnableSpec.ts +3 -7
- package/_src/control/Gen/api.ts +201 -7
- package/_src/control/Live/definition.ts +8 -9
- package/_src/control/TestAspect/api.ts +2 -2
- package/_src/demo.ts +4 -2
- package/api.d.ts +1 -1
- package/control/AbstractRunnableSpec.d.ts +22 -9
- package/control/Annotations/definition.d.ts +3 -0
- package/control/DefaultRunnableSpec.d.ts +4 -4
- package/control/Gen/api.d.ts +70 -1
- package/control/Live/definition.d.ts +6 -2
- package/package.json +3 -3
- package/_cjs/control/RunnableSpec.cjs +0 -52
- package/_cjs/control/RunnableSpec.cjs.map +0 -1
- package/_cjs/control/TestExecutor.cjs +0 -44
- package/_cjs/control/TestExecutor.cjs.map +0 -1
- package/_cjs/control/TestRunner.cjs +0 -28
- package/_cjs/control/TestRunner.cjs.map +0 -1
- package/_mjs/control/RunnableSpec.mjs +0 -42
- package/_mjs/control/RunnableSpec.mjs.map +0 -1
- package/_mjs/control/TestExecutor.mjs +0 -36
- package/_mjs/control/TestExecutor.mjs.map +0 -1
- package/_mjs/control/TestRunner.mjs +0 -19
- package/_mjs/control/TestRunner.mjs.map +0 -1
- package/_src/control/RunnableSpec.ts +0 -47
- package/_src/control/TestExecutor.ts +0 -52
- package/_src/control/TestRunner.ts +0 -31
- package/control/RunnableSpec.d.ts +0 -11
- package/control/TestExecutor.d.ts +0 -12
- package/control/TestRunner.d.ts +0 -17
package/_src/control/Gen/api.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
DateConstraints,
|
|
3
|
+
EqConstraint,
|
|
4
|
+
FloatConstraints,
|
|
5
|
+
LengthConstraints,
|
|
6
|
+
NumberConstraints,
|
|
7
|
+
ObjectConstraints,
|
|
8
|
+
} from "./constraints.js";
|
|
2
9
|
import type { _A, _R } from "@fncts/base/types.js";
|
|
3
10
|
import type { ArrayInt64 } from "@fncts/base/util/rand";
|
|
4
11
|
|
|
5
12
|
import { SortedMap } from "@fncts/base/collection/immutable/SortedMap";
|
|
6
13
|
import { IllegalArgumentError, NoSuchElementError } from "@fncts/base/data/exceptions";
|
|
7
|
-
import { tuple } from "@fncts/base/data/function";
|
|
8
14
|
import { identity } from "@fncts/base/data/function";
|
|
9
15
|
|
|
10
16
|
import {
|
|
@@ -27,6 +33,89 @@ import { Gen } from "./definition.js";
|
|
|
27
33
|
|
|
28
34
|
const gapSize = 0xdfff + 1 - 0xd800;
|
|
29
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @tsplus static fncts.test.GenOps anything
|
|
38
|
+
*/
|
|
39
|
+
export function anything<C extends ObjectConstraints>(
|
|
40
|
+
constraints: C = {} as C,
|
|
41
|
+
): Gen<
|
|
42
|
+
ObjectConstraints extends C
|
|
43
|
+
? Sized
|
|
44
|
+
: unknown extends C["key"]
|
|
45
|
+
? Sized
|
|
46
|
+
: _R<C["key"]> | C["values"] extends Array<infer A>
|
|
47
|
+
? _R<A>
|
|
48
|
+
: Sized,
|
|
49
|
+
unknown
|
|
50
|
+
> {
|
|
51
|
+
const key = constraints.key ?? Gen.alphaNumericString;
|
|
52
|
+
const maxDepth = constraints.maxDepth ?? 2;
|
|
53
|
+
const maxKeys = constraints.maxKeys ?? 5;
|
|
54
|
+
const values = constraints.values ?? [
|
|
55
|
+
Gen.boolean,
|
|
56
|
+
Gen.alphaNumericString,
|
|
57
|
+
Gen.double,
|
|
58
|
+
Gen.int,
|
|
59
|
+
Gen.oneOf(Gen.alphaNumericString, Gen.constant(null), Gen.constant(undefined)),
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
function mapOf<R, K, R1, V>(key: Gen<R, K>, value: Gen<R1, V>) {
|
|
63
|
+
return Gen.tuple(key, value)
|
|
64
|
+
.uniqueConc({
|
|
65
|
+
eq: Eq({
|
|
66
|
+
equals:
|
|
67
|
+
([k1]) =>
|
|
68
|
+
([k]) =>
|
|
69
|
+
Equatable.strictEquals(k, k1),
|
|
70
|
+
}),
|
|
71
|
+
maxLength: maxKeys,
|
|
72
|
+
})
|
|
73
|
+
.map((pairs) => new Map(pairs));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function setOf<R, V>(value: Gen<R, V>) {
|
|
77
|
+
return value
|
|
78
|
+
.uniqueConc({ eq: Eq({ equals: (v1) => (v) => Equatable.strictEquals(v, v1) }), maxLength: maxKeys })
|
|
79
|
+
.map((values) => new Set(values));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const base = Gen.oneOf(...values);
|
|
83
|
+
const arrayBase = Gen.oneOf(...values.map((gen) => gen.arrayWith({ maxLength: maxKeys })));
|
|
84
|
+
const arrayGen = Gen.memo((n) => Gen.oneOf(arrayBase, gen(n).arrayWith({ maxLength: maxKeys })));
|
|
85
|
+
const objectBase = Gen.oneOf(...values.map((gen) => Gen.record(key, gen)));
|
|
86
|
+
const objectGen = Gen.memo((n) => Gen.oneOf(objectBase, Gen.record(key, gen(n))));
|
|
87
|
+
const setBase = Gen.oneOf(...values.map(setOf));
|
|
88
|
+
const setGen = Gen.memo((n) => Gen.oneOf(setBase, setOf(gen(n))));
|
|
89
|
+
const mapBase = Gen.oneOf(...values.map((value) => mapOf(key, value)));
|
|
90
|
+
const mapGen = Gen.memo((n) => Gen.oneOf(mapBase, mapOf(Gen.oneOf(key, gen(n)), gen(n))));
|
|
91
|
+
|
|
92
|
+
const gen: (n: number) => Gen<any, any> = Gen.memo((n) => {
|
|
93
|
+
if (n <= 0) return base;
|
|
94
|
+
return Gen.oneOf(
|
|
95
|
+
base,
|
|
96
|
+
arrayGen(),
|
|
97
|
+
objectGen(),
|
|
98
|
+
...(constraints.withDate ? [Gen.date()] : []),
|
|
99
|
+
...(constraints.withSet ? [setGen()] : []),
|
|
100
|
+
...(constraints.withMap ? [mapGen()] : []),
|
|
101
|
+
...(constraints.withTypedArray
|
|
102
|
+
? [
|
|
103
|
+
Gen.oneOf(
|
|
104
|
+
Gen.int8Array(),
|
|
105
|
+
Gen.uint8Array(),
|
|
106
|
+
Gen.int16Array(),
|
|
107
|
+
Gen.uint16Array(),
|
|
108
|
+
Gen.int32Array(),
|
|
109
|
+
Gen.uint32Array(),
|
|
110
|
+
),
|
|
111
|
+
]
|
|
112
|
+
: []),
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
return gen(maxDepth);
|
|
117
|
+
}
|
|
118
|
+
|
|
30
119
|
/**
|
|
31
120
|
* @tsplus static fncts.test.GenOps size
|
|
32
121
|
*/
|
|
@@ -59,6 +148,7 @@ export function alphaNumericStringWith(constraints: LengthConstraints = {}): Gen
|
|
|
59
148
|
export const alphaNumericString: Gen<Sized, string> = alphaNumericChar.string();
|
|
60
149
|
|
|
61
150
|
/**
|
|
151
|
+
* @tsplus static fncts.test.GenOps array
|
|
62
152
|
* @tsplus getter fncts.test.Gen array
|
|
63
153
|
*/
|
|
64
154
|
export function array<R, A>(self: Gen<R, A>): Gen<R | Sized, ReadonlyArray<A>> {
|
|
@@ -183,6 +273,7 @@ export function concWith(constraints: LengthConstraints = {}) {
|
|
|
183
273
|
|
|
184
274
|
/**
|
|
185
275
|
* @tsplus getter fncts.test.Gen conc
|
|
276
|
+
* @tsplus static fncts.test.GenOps conc
|
|
186
277
|
*/
|
|
187
278
|
export function conc<R, A>(self: Gen<R, A>): Gen<R | Sized, Conc<A>> {
|
|
188
279
|
return self.conc();
|
|
@@ -347,6 +438,11 @@ export function floatWith(constraints: NumberConstraints & FloatConstraints = {}
|
|
|
347
438
|
);
|
|
348
439
|
}
|
|
349
440
|
|
|
441
|
+
/**
|
|
442
|
+
* @tsplus static fncts.test.GenOps float
|
|
443
|
+
*/
|
|
444
|
+
export const float: Gen<never, number> = floatWith();
|
|
445
|
+
|
|
350
446
|
/**
|
|
351
447
|
* @tsplus static fncts.test.GenOps fullUnicodeChar
|
|
352
448
|
*/
|
|
@@ -463,6 +559,9 @@ export function oneOf<A extends ReadonlyArray<Gen<any, any>>>(...gens: A): Gen<_
|
|
|
463
559
|
else return Gen.intWith({ min: 0, max: gens.length - 1 }).flatMap((i) => gens[i]!);
|
|
464
560
|
}
|
|
465
561
|
|
|
562
|
+
/**
|
|
563
|
+
* @tsplus static fncts.test.GenOps partial
|
|
564
|
+
*/
|
|
466
565
|
export function partial<P extends Record<string, Gen<any, any>>>(
|
|
467
566
|
properties: P,
|
|
468
567
|
): Gen<
|
|
@@ -540,6 +639,9 @@ export function stringN(n: number) {
|
|
|
540
639
|
};
|
|
541
640
|
}
|
|
542
641
|
|
|
642
|
+
/**
|
|
643
|
+
* @tsplus static fncts.test.GenOps struct
|
|
644
|
+
*/
|
|
543
645
|
export function struct<P extends Record<string, Gen<any, any>>>(
|
|
544
646
|
properties: P,
|
|
545
647
|
): Gen<
|
|
@@ -626,10 +728,13 @@ export function unwrap<R, R1, A>(effect: URIO<R, Gen<R1, A>>): Gen<R | R1, A> {
|
|
|
626
728
|
*/
|
|
627
729
|
export function weighted<R, A>(...gens: ReadonlyArray<readonly [Gen<R, A>, number]>): Gen<R, A> {
|
|
628
730
|
const sum = gens.map(([, weight]) => weight).foldLeft(0, (b, a) => b + a);
|
|
629
|
-
const [map] = gens.foldLeft(
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
731
|
+
const [map] = gens.foldLeft(
|
|
732
|
+
Function.tuple(SortedMap.make<number, Gen<R, A>>(Number.Ord), 0),
|
|
733
|
+
([map, acc], [gen, d]) => {
|
|
734
|
+
if ((acc + d) / sum > acc / sum) return Function.tuple(map.set((acc + d) / sum, gen), acc + d);
|
|
735
|
+
else return Function.tuple(map, acc);
|
|
736
|
+
},
|
|
737
|
+
);
|
|
633
738
|
return Gen.uniform.flatMap((n) =>
|
|
634
739
|
map.getGte(n).getOrElse(() => {
|
|
635
740
|
throw new NoSuchElementError("Gen.weighted");
|
|
@@ -651,10 +756,99 @@ export function zipWith<A, R1, B, C>(that: Gen<R1, B>, f: (a: A, b: B) => C) {
|
|
|
651
756
|
*/
|
|
652
757
|
export function zip<R1, B>(that: Gen<R1, B>) {
|
|
653
758
|
return <R, A>(self: Gen<R, A>): Gen<R | R1, readonly [A, B]> => {
|
|
654
|
-
return self.zipWith(that, tuple);
|
|
759
|
+
return self.zipWith(that, Function.tuple);
|
|
655
760
|
};
|
|
656
761
|
}
|
|
657
762
|
|
|
763
|
+
/**
|
|
764
|
+
* @tsplus static fncts.test.GenOps tuple
|
|
765
|
+
*/
|
|
766
|
+
export function tuple<A extends [...Gen<any, any>[]]>(
|
|
767
|
+
...components: A
|
|
768
|
+
): Gen<
|
|
769
|
+
{ [K in keyof A]: [A[K]] extends [Gen<infer R, any>] ? R : never }[keyof A & number],
|
|
770
|
+
{ [K in keyof A]: [A[K]] extends [Gen<any, infer A>] ? A : never }
|
|
771
|
+
> {
|
|
772
|
+
return components.foldLeft(Gen.constant<Array<any>>([]) as Gen<any, ReadonlyArray<any>>, (b, a) =>
|
|
773
|
+
b.zipWith(a, (vs, v) => [...vs, v]),
|
|
774
|
+
) as any;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* @tsplus static fncts.test.GenOps record
|
|
779
|
+
*/
|
|
780
|
+
export function record<R, R1, A>(
|
|
781
|
+
key: Gen<R, string>,
|
|
782
|
+
value: Gen<R1, A>,
|
|
783
|
+
constraints?: LengthConstraints,
|
|
784
|
+
): Gen<Sized | R | R1, Record<string, A>> {
|
|
785
|
+
return Gen.tuple(key, value)
|
|
786
|
+
.uniqueConc({ eq: String.Eq.contramap(([k]) => k), ...constraints })
|
|
787
|
+
.map((pairs) => pairs.foldLeft({} as Record<string, A>, (b, [k, v]) => ({ ...b, [k]: v })));
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* @tsplus static fncts.test.GenOps date
|
|
792
|
+
*/
|
|
793
|
+
export function date(constraints: DateConstraints = {}): Gen<never, Date> {
|
|
794
|
+
const min = constraints.min ? constraints.min.getTime() : -8_640_000_000_000_000;
|
|
795
|
+
const max = constraints.max ? constraints.max.getTime() : 8_640_000_000_000_000;
|
|
796
|
+
return Gen.intWith({ min, max }).map((n) => new Date(n));
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
function typedArray<A>(
|
|
800
|
+
constraints: LengthConstraints & NumberConstraints,
|
|
801
|
+
minBound: number,
|
|
802
|
+
maxBound: number,
|
|
803
|
+
ctor: { new (arg: ReadonlyArray<number>): A },
|
|
804
|
+
): Gen<Sized, A> {
|
|
805
|
+
const min = constraints.min ? clamp(constraints.min, minBound, maxBound) : minBound;
|
|
806
|
+
const max = constraints.max ? clamp(constraints.max, minBound, maxBound) : maxBound;
|
|
807
|
+
return Gen.array(Gen.intWith({ min, max })).map((n) => new ctor(n));
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* @tsplus static fncts.test.GenOps int8Array
|
|
812
|
+
*/
|
|
813
|
+
export function int8Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Int8Array> {
|
|
814
|
+
return typedArray(constraints, -128, 127, Int8Array);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* @tsplus static fncts.test.GenOps int16Array
|
|
819
|
+
*/
|
|
820
|
+
export function int16Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Int16Array> {
|
|
821
|
+
return typedArray(constraints, -32768, 32767, Int16Array);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
/**
|
|
825
|
+
* @tsplus static fncts.test.GenOps int32Array
|
|
826
|
+
*/
|
|
827
|
+
export function int32Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Int32Array> {
|
|
828
|
+
return typedArray(constraints, -0x80000000, 0x7fffffff, Int32Array);
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* @tsplus static fncts.test.GenOps uint8Array
|
|
833
|
+
*/
|
|
834
|
+
export function uint8Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Uint8Array> {
|
|
835
|
+
return typedArray(constraints, 0, 255, Uint8Array);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
/**
|
|
839
|
+
* @tsplus static fncts.test.GenOps uint16Array
|
|
840
|
+
*/
|
|
841
|
+
export function uint16Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Uint16Array> {
|
|
842
|
+
return typedArray(constraints, 0, 65535, Uint16Array);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
/**
|
|
846
|
+
* @tsplus static fncts.test.GenOps uint32Array
|
|
847
|
+
*/
|
|
848
|
+
export function uint32Array(constraints: LengthConstraints & NumberConstraints = {}): Gen<Sized, Uint32Array> {
|
|
849
|
+
return typedArray(constraints, 0, 0xffffffff, Uint32Array);
|
|
850
|
+
}
|
|
851
|
+
|
|
658
852
|
function _char(min: number, max: number, mapToCode: (v: number) => number): Gen<never, string> {
|
|
659
853
|
return Gen.intWith({ min, max }).map((n) => String.fromCharCode(mapToCode(n)));
|
|
660
854
|
}
|
|
@@ -21,23 +21,22 @@ export abstract class Live {
|
|
|
21
21
|
),
|
|
22
22
|
LiveTag,
|
|
23
23
|
);
|
|
24
|
-
static
|
|
24
|
+
static live<R extends Live, E, A>(io: IO<R, E, A>): IO<R | Live, E, A> {
|
|
25
25
|
return IO.serviceWithIO((live) => live.provide(io), LiveTag);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* @tsplus static fncts.
|
|
30
|
+
* @tsplus static fncts.io.IOOps liveWith
|
|
31
31
|
*/
|
|
32
|
-
export function
|
|
33
|
-
|
|
34
|
-
f: (_: IO<never, E, A>) => IO<IOEnv, E1, B>,
|
|
35
|
-
): IO<Exclude<R, Live>, E | E1, B> {
|
|
36
|
-
// @ts-expect-error
|
|
37
|
-
return IO.environment<R | Live>().flatMap((r) => Live.Live(f(io.provideEnvironment(r))));
|
|
32
|
+
export function liveWith<R, E, A>(f: (live: Live) => IO<R, E, A>): IO<R | Live, E, A> {
|
|
33
|
+
return IO.environmentWithIO((environment) => f(environment.get(Live.Tag)));
|
|
38
34
|
}
|
|
39
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @tsplus static fncts.test.LiveOps withLive
|
|
38
|
+
*/
|
|
40
39
|
export function withLive<R extends Live, E, A>(io: IO<R, E, A>) {
|
|
41
40
|
return <E1, B>(f: (_: IO<R, E, A>) => IO<R, E1, B>): IO<R | Live, E1, B> =>
|
|
42
|
-
IOEnv.services.getWith((services) => Live.
|
|
41
|
+
IOEnv.services.getWith((services) => Live.live(f(IOEnv.services.locally(services)(io))));
|
|
43
42
|
}
|
|
@@ -102,14 +102,14 @@ export function timeoutWarning(duration: Duration): TestAspect<Live, any> {
|
|
|
102
102
|
|
|
103
103
|
function warn<R, E>(labels: Vector<string>, test: IO<R, TestFailure<E>, TestSuccess>, duration: Duration) {
|
|
104
104
|
return test.raceWith(
|
|
105
|
-
Live.withLive(showWarning(labels, duration)
|
|
105
|
+
Live.withLive(showWarning(labels, duration))((io) => Clock.sleep(duration) > io),
|
|
106
106
|
(result, fiber) => fiber.interrupt > IO.fromExitNow(result),
|
|
107
107
|
(_, fiber) => fiber.join,
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
function showWarning(labels: Vector<string>, duration: Duration) {
|
|
112
|
-
return
|
|
112
|
+
return Console.print(renderWarning(labels, duration));
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
function renderWarning(labels: Vector<string>, duration: Duration) {
|
package/_src/demo.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { DefaultRunnableSpec } from "@fncts/test/control/DefaultRunnableSpec";
|
|
2
2
|
|
|
3
|
-
import { suite, test
|
|
3
|
+
import { suite, test } from "./api.js";
|
|
4
4
|
import { strictEqualTo } from "./control/Assertion.js";
|
|
5
|
+
|
|
5
6
|
const ServiceATag = Tag<{
|
|
6
7
|
x: number;
|
|
7
8
|
}>("fncts.test.demo.ServiceA");
|
|
9
|
+
|
|
8
10
|
class DemoSpec extends DefaultRunnableSpec {
|
|
9
11
|
spec = suite(
|
|
10
12
|
"TestSuite",
|
|
@@ -12,4 +14,4 @@ class DemoSpec extends DefaultRunnableSpec {
|
|
|
12
14
|
test("Demo failure", { a: { b: { c: { d: 100 } } } }.assert(strictEqualTo({ a: { b: { c: { d: 0 } } } }))),
|
|
13
15
|
);
|
|
14
16
|
}
|
|
15
|
-
new DemoSpec().
|
|
17
|
+
new DemoSpec().run().unsafeRunFiber();
|
package/api.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare function traverseResult<A>(value: A, assertResult: AssertResult<A
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function assert<A>(assertion: Assertion<A>): (value: A) => TestResult;
|
|
19
19
|
/**
|
|
20
|
-
* @tsplus pipeable
|
|
20
|
+
* @tsplus pipeable global assert
|
|
21
21
|
* @tsplus location "@fncts/test/api"
|
|
22
22
|
*/
|
|
23
23
|
export declare function assertIO<A>(assertion: AssertionIO<A>): <R, E>(io: import("@fncts/io/IO.js").IO<R, E, A>) => import("@fncts/io/IO.js").IO<R, E, TestResult>;
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Scope } from "@fncts/io/Scope/definition";
|
|
2
|
+
import { Layer } from "@fncts/io/Layer";
|
|
3
|
+
import { UIO, IO } from "@fncts/io/IO/definition";
|
|
4
|
+
import { Either } from "@fncts/base/data/Either/definition";
|
|
5
|
+
import { ExecutionStrategy } from "@fncts/base/data/ExecutionStrategy";
|
|
6
|
+
import { Clock } from "@fncts/io/Clock/definition";
|
|
2
7
|
import type { Spec } from "@fncts/test/control/Spec";
|
|
3
8
|
import type { TestAspect } from "@fncts/test/control/TestAspect";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
9
|
+
import { TestEnvironment } from "@fncts/test/control/TestEnvironment";
|
|
10
|
+
import { ExecutedSpec } from "@fncts/test/data/ExecutedSpec";
|
|
11
|
+
/**
|
|
12
|
+
* @tsplus type fncts.test.AbstractRunnableSpec
|
|
13
|
+
*/
|
|
7
14
|
export declare abstract class AbstractRunnableSpec<R, E> {
|
|
8
|
-
|
|
9
|
-
abstract
|
|
10
|
-
abstract
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
aspects: ReadonlyArray<TestAspect<R | TestEnvironment, any>>;
|
|
16
|
+
abstract spec: Spec<R | TestEnvironment | Scope, E>;
|
|
17
|
+
abstract bootstrap: Layer<never, never, R>;
|
|
18
|
+
runSpec(spec: Spec<R | TestEnvironment | Scope, E>, __tsplusTrace?: string): UIO<ExecutedSpec<E>>;
|
|
19
|
+
run(__tsplusTrace?: string): UIO<number>;
|
|
13
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* @tsplus pipeable fncts.test.AbstractRunnableSpec combine
|
|
23
|
+
* @tsplus pipeable-operator fncts.test.AbstractRunnableSpec +
|
|
24
|
+
* @tsplus location "@fncts/test/control/AbstractRunnableSpec"
|
|
25
|
+
*/
|
|
26
|
+
export declare function combine<R1, E1>(that: AbstractRunnableSpec<R1, E1>): <R, E>(self: AbstractRunnableSpec<R, E>) => AbstractRunnableSpec<R1 | R, E1 | E>;
|
|
@@ -3,12 +3,15 @@ import { HashSet } from "@fncts/base/collection/immutable/HashSet/definition";
|
|
|
3
3
|
import { Fiber } from "@fncts/io/Fiber/definition";
|
|
4
4
|
import type { TestAnnotation } from "../../data/TestAnnotation.js";
|
|
5
5
|
import type { TestAnnotationMap } from "../../data/TestAnnotationMap.js";
|
|
6
|
+
export declare const AnnotationsTypeId: unique symbol;
|
|
7
|
+
export type AnnotationsTypeId = typeof AnnotationsTypeId;
|
|
6
8
|
export type Annotated<A> = readonly [A, TestAnnotationMap];
|
|
7
9
|
/**
|
|
8
10
|
* @tsplus type fncts.test.Annotations
|
|
9
11
|
* @tsplus companion fncts.test.AnnotationsOps
|
|
10
12
|
*/
|
|
11
13
|
export declare abstract class Annotations {
|
|
14
|
+
readonly [AnnotationsTypeId]: AnnotationsTypeId;
|
|
12
15
|
abstract annotate<V>(key: TestAnnotation<V>, value: V): UIO<void>;
|
|
13
16
|
abstract get<V>(key: TestAnnotation<V>): UIO<V>;
|
|
14
17
|
abstract withAnnotation<R, E, A>(io: IO<R, E, A>): IO<R, Annotated<E>, Annotated<A>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Layer } from "@fncts/io/Layer";
|
|
2
|
+
import { AbstractRunnableSpec } from "@fncts/test/control/AbstractRunnableSpec";
|
|
2
3
|
import { TestEnvironment } from "@fncts/test/control/TestEnvironment";
|
|
3
|
-
|
|
4
|
-
export declare abstract class DefaultRunnableSpec extends RunnableSpec<TestEnvironment, any> {
|
|
4
|
+
export declare abstract class DefaultRunnableSpec extends AbstractRunnableSpec<TestEnvironment, any> {
|
|
5
5
|
aspects: import("@fncts/test/control/TestAspect").TestAspect<import("./Live").Live, any>[];
|
|
6
|
-
|
|
6
|
+
bootstrap: Layer<never, never, TestEnvironment>;
|
|
7
7
|
}
|
package/control/Gen/api.d.ts
CHANGED
|
@@ -6,12 +6,17 @@ import { IO, URIO } from "@fncts/io/IO/definition";
|
|
|
6
6
|
import { Stream } from "@fncts/io/Stream/definition";
|
|
7
7
|
import { Maybe } from "@fncts/base/data/Maybe/definition";
|
|
8
8
|
import { Eq } from "@fncts/base/data/Eq/definition";
|
|
9
|
-
import type { EqConstraint, FloatConstraints, LengthConstraints, NumberConstraints } from "./constraints.js";
|
|
9
|
+
import type { DateConstraints, EqConstraint, FloatConstraints, LengthConstraints, NumberConstraints, ObjectConstraints } from "./constraints.js";
|
|
10
10
|
import type { _A, _R } from "@fncts/base/types.js";
|
|
11
11
|
import type { ArrayInt64 } from "@fncts/base/util/rand";
|
|
12
12
|
import { Sample } from "../Sample.js";
|
|
13
13
|
import { Sized } from "../Sized.js";
|
|
14
14
|
import { Gen } from "./definition.js";
|
|
15
|
+
/**
|
|
16
|
+
* @tsplus static fncts.test.GenOps anything
|
|
17
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
18
|
+
*/
|
|
19
|
+
export declare function anything<C extends ObjectConstraints>(constraints?: C): Gen<ObjectConstraints extends C ? Sized : unknown extends C["key"] ? Sized : _R<C["key"]> | C["values"] extends Array<infer A> ? _R<A> : Sized, unknown>;
|
|
15
20
|
/**
|
|
16
21
|
* @tsplus static fncts.test.GenOps size
|
|
17
22
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
@@ -38,6 +43,7 @@ export declare function alphaNumericStringWith(constraints?: LengthConstraints):
|
|
|
38
43
|
*/
|
|
39
44
|
export declare const alphaNumericString: Gen<Sized, string>;
|
|
40
45
|
/**
|
|
46
|
+
* @tsplus static fncts.test.GenOps array
|
|
41
47
|
* @tsplus getter fncts.test.Gen array
|
|
42
48
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
43
49
|
*/
|
|
@@ -119,6 +125,7 @@ export declare const char16: Gen<never, string>;
|
|
|
119
125
|
export declare function concWith(constraints?: LengthConstraints): <R, A>(self: Gen<R, A>) => Gen<Sized | R, import("@fncts/base/collection/immutable/Conc.js").Conc<A>>;
|
|
120
126
|
/**
|
|
121
127
|
* @tsplus getter fncts.test.Gen conc
|
|
128
|
+
* @tsplus static fncts.test.GenOps conc
|
|
122
129
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
123
130
|
*/
|
|
124
131
|
export declare function conc<R, A>(self: Gen<R, A>): Gen<R | Sized, Conc<A>>;
|
|
@@ -193,6 +200,11 @@ export declare function fromIOSample<R, A>(effect: IO<R, never, Sample<R, A>>):
|
|
|
193
200
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
194
201
|
*/
|
|
195
202
|
export declare function floatWith(constraints?: NumberConstraints & FloatConstraints): Gen<never, number>;
|
|
203
|
+
/**
|
|
204
|
+
* @tsplus static fncts.test.GenOps float
|
|
205
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
206
|
+
*/
|
|
207
|
+
export declare const float: Gen<never, number>;
|
|
196
208
|
/**
|
|
197
209
|
* @tsplus static fncts.test.GenOps fullUnicodeChar
|
|
198
210
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
@@ -253,6 +265,10 @@ export declare function nat(max?: number): Gen<unknown, number>;
|
|
|
253
265
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
254
266
|
*/
|
|
255
267
|
export declare function oneOf<A extends ReadonlyArray<Gen<any, any>>>(...gens: A): Gen<_R<A[number]>, _A<A[number]>>;
|
|
268
|
+
/**
|
|
269
|
+
* @tsplus static fncts.test.GenOps partial
|
|
270
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
271
|
+
*/
|
|
256
272
|
export declare function partial<P extends Record<string, Gen<any, any>>>(properties: P): Gen<_R<P[keyof P]>, Partial<{
|
|
257
273
|
readonly [K in keyof P]: _A<P[K]>;
|
|
258
274
|
}>>;
|
|
@@ -291,6 +307,10 @@ export declare function string(constraints?: LengthConstraints): <R>(char: Gen<R
|
|
|
291
307
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
292
308
|
*/
|
|
293
309
|
export declare function stringN(n: number): <R>(char: Gen<R, string>) => Gen<R, string>;
|
|
310
|
+
/**
|
|
311
|
+
* @tsplus static fncts.test.GenOps struct
|
|
312
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
313
|
+
*/
|
|
294
314
|
export declare function struct<P extends Record<string, Gen<any, any>>>(properties: P): Gen<_R<P[keyof P]>, {
|
|
295
315
|
readonly [K in keyof P]: _A<P[K]>;
|
|
296
316
|
}>;
|
|
@@ -349,3 +369,52 @@ export declare function zipWith<A, R1, B, C>(that: Gen<R1, B>, f: (a: A, b: B) =
|
|
|
349
369
|
* @tsplus location "@fncts/test/control/Gen/api"
|
|
350
370
|
*/
|
|
351
371
|
export declare function zip<R1, B>(that: Gen<R1, B>): <R, A>(self: Gen<R, A>) => Gen<R1 | R, readonly [A, B]>;
|
|
372
|
+
/**
|
|
373
|
+
* @tsplus static fncts.test.GenOps tuple
|
|
374
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
375
|
+
*/
|
|
376
|
+
export declare function tuple<A extends [...Gen<any, any>[]]>(...components: A): Gen<{
|
|
377
|
+
[K in keyof A]: [A[K]] extends [Gen<infer R, any>] ? R : never;
|
|
378
|
+
}[keyof A & number], {
|
|
379
|
+
[K in keyof A]: [A[K]] extends [Gen<any, infer A>] ? A : never;
|
|
380
|
+
}>;
|
|
381
|
+
/**
|
|
382
|
+
* @tsplus static fncts.test.GenOps record
|
|
383
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
384
|
+
*/
|
|
385
|
+
export declare function record<R, R1, A>(key: Gen<R, string>, value: Gen<R1, A>, constraints?: LengthConstraints): Gen<Sized | R | R1, Record<string, A>>;
|
|
386
|
+
/**
|
|
387
|
+
* @tsplus static fncts.test.GenOps date
|
|
388
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
389
|
+
*/
|
|
390
|
+
export declare function date(constraints?: DateConstraints): Gen<never, Date>;
|
|
391
|
+
/**
|
|
392
|
+
* @tsplus static fncts.test.GenOps int8Array
|
|
393
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
394
|
+
*/
|
|
395
|
+
export declare function int8Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Int8Array>;
|
|
396
|
+
/**
|
|
397
|
+
* @tsplus static fncts.test.GenOps int16Array
|
|
398
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
399
|
+
*/
|
|
400
|
+
export declare function int16Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Int16Array>;
|
|
401
|
+
/**
|
|
402
|
+
* @tsplus static fncts.test.GenOps int32Array
|
|
403
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
404
|
+
*/
|
|
405
|
+
export declare function int32Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Int32Array>;
|
|
406
|
+
/**
|
|
407
|
+
* @tsplus static fncts.test.GenOps uint8Array
|
|
408
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
409
|
+
*/
|
|
410
|
+
export declare function uint8Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Uint8Array>;
|
|
411
|
+
/**
|
|
412
|
+
* @tsplus static fncts.test.GenOps uint16Array
|
|
413
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
414
|
+
*/
|
|
415
|
+
export declare function uint16Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Uint16Array>;
|
|
416
|
+
/**
|
|
417
|
+
* @tsplus static fncts.test.GenOps uint32Array
|
|
418
|
+
* @tsplus location "@fncts/test/control/Gen/api"
|
|
419
|
+
*/
|
|
420
|
+
export declare function uint32Array(constraints?: LengthConstraints & NumberConstraints): Gen<Sized, Uint32Array>;
|
|
@@ -12,11 +12,15 @@ export declare const LiveTag: import("@fncts/base/data/Tag").Tag<Live>;
|
|
|
12
12
|
export declare abstract class Live {
|
|
13
13
|
abstract provide<R, E, A>(io: IO<R, E, A>): IO<R, E, A>;
|
|
14
14
|
static Default: Layer<IOEnv, never, Live>;
|
|
15
|
-
static
|
|
15
|
+
static live<R extends Live, E, A>(io: IO<R, E, A>): IO<R | Live, E, A>;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* @tsplus static fncts.io.IOOps liveWith
|
|
19
|
+
* @tsplus location "@fncts/test/control/Live/definition"
|
|
20
|
+
*/
|
|
21
|
+
export declare function liveWith<R, E, A>(f: (live: Live) => IO<R, E, A>): IO<R | Live, E, A>;
|
|
17
22
|
/**
|
|
18
23
|
* @tsplus static fncts.test.LiveOps withLive
|
|
19
24
|
* @tsplus location "@fncts/test/control/Live/definition"
|
|
20
25
|
*/
|
|
21
|
-
export declare function withLive_<R, E, A, E1, B>(io: IO<R, E, A>, f: (_: IO<never, E, A>) => IO<IOEnv, E1, B>): IO<Exclude<R, Live>, E | E1, B>;
|
|
22
26
|
export declare function withLive<R extends Live, E, A>(io: IO<R, E, A>): <E1, B>(f: (_: IO<R, E, A>) => import("@fncts/io/IO").IO<R, E1, B>) => import("@fncts/io/IO").IO<Live | R, E1, B>;
|
package/package.json
CHANGED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.RunnableSpec = void 0;
|
|
7
|
-
exports.isRunnableSpec = isRunnableSpec;
|
|
8
|
-
var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/test/control/TestLogger"));
|
|
9
|
-
var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api"));
|
|
10
|
-
var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/test/control/SummaryBuilder"));
|
|
11
|
-
var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Either/api"));
|
|
12
|
-
var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/test/data/ExecutedSpec/api"));
|
|
13
|
-
var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Exit/api"));
|
|
14
|
-
var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/provideLayer"));
|
|
15
|
-
var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/runtime"));
|
|
16
|
-
var _pattern = /*#__PURE__*/require("@fncts/base/util/pattern");
|
|
17
|
-
var _predicates = /*#__PURE__*/require("@fncts/base/util/predicates");
|
|
18
|
-
var _AbstractRunnableSpec = /*#__PURE__*/require("@fncts/test/control/AbstractRunnableSpec");
|
|
19
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
const fileName_1 = "(@fncts/test) src/control/RunnableSpec.ts";
|
|
22
|
-
class RunnableSpec extends _AbstractRunnableSpec.AbstractRunnableSpec {
|
|
23
|
-
constructor() {
|
|
24
|
-
super(...arguments);
|
|
25
|
-
this._tag = "RunnableSpec";
|
|
26
|
-
}
|
|
27
|
-
run(spec) {
|
|
28
|
-
const self = this;
|
|
29
|
-
return tsplus_module_2.flatMap(results => {
|
|
30
|
-
const hasFailures = tsplus_module_5.some((0, _pattern.matchTag)({
|
|
31
|
-
Test: ({
|
|
32
|
-
test
|
|
33
|
-
}) => tsplus_module_4.isLeft(test)
|
|
34
|
-
}, () => false))(results);
|
|
35
|
-
const summary = tsplus_module_3.buildSummary(results);
|
|
36
|
-
return tsplus_module_2.map(() => hasFailures ? 1 : 0, fileName_1 + ":25:8")(tsplus_module_1.logLine(summary.summary));
|
|
37
|
-
}, fileName_1 + ":15:28")(self.runSpec(spec));
|
|
38
|
-
}
|
|
39
|
-
main(_args) {
|
|
40
|
-
// const filteredSpec = this.spec.filterByArgs(args);
|
|
41
|
-
tsplus_module_8.unsafeRunAsyncWith(tsplus_module_7.provideLayer(this.runner.bootstrap, fileName_1 + ":33:20")(this.run(this.spec)), exit => {
|
|
42
|
-
tsplus_module_6.match(() => {
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}, code => process.exit(code))(exit);
|
|
45
|
-
}, fileName_1 + ":34:26");
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.RunnableSpec = RunnableSpec;
|
|
49
|
-
function isRunnableSpec(u) {
|
|
50
|
-
return (0, _predicates.isObject)(u) && "_tag" in u && u["_tag"] === "RunnableSpec";
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=RunnableSpec.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunnableSpec.cjs","mappings":";;;;;;;;;;;;;;;AAGA;AACA;AACA;AAAgF;AAAA;;AAI1E,MAAgBA,YAAmB,SAAQC,0CAA0B;EAA3EC;;IACW,SAAI,GAAG,cAAc;EAgChC;EA/BEC,GAAG,CAACC,IAAgB;IAClB,MAAMC,IAAI,GAAG,IAAI;IACjB,+BACQC,OAAO;MACb,MAAMC,WAAW,GAAGC,qBAClB,qBAAQ,EACN;QACEC,IAAI,EAAE,CAAC;UAAEC;QAAI,CAAE,KAAKC,2BAAI;OACzB,EACD,MAAM,KAAK,CACZ,EANiBL,OAAO,CAO1B;MACD,MAAMM,OAAO,GAAGC,6BAA4BP,OAAO,CAAC;uCAE7CC,WAAW,GAAG,CAAC,GAAG,CAAC,wBADxBO,wBAAmBF,OAAO,CAACA,OAAO,CAAC;8BAVfP,IAAI,CAACU,OAAO,CAACX,IAAI,CAAC;EAa5C;EAEAY,IAAI,CAACC,KAAgB;IACnB;IACAC,gEACgB,IAAI,CAACC,MAAM,CAACC,SAAS,yBADrC,IAAI,CAACjB,GAAG,CAAC,IAAI,CAACC,IAAI,CAAC,CACmB,EACfiB,IAAI,IAAI;MAC3BC,sBACE,MAAK;QACHC,OAAO,CAACF,IAAI,CAAC,CAAC,CAAC;MACjB,CAAC,EACAG,IAAI,IAAKD,OAAO,CAACF,IAAI,CAACG,IAAI,CAAC,EAJ9BH,IAAI,CAKH;IACH,CAAC,wBAAC;EACN;;AACD;AAEK,SAAUI,cAAc,CAACC,CAAU;EACvC,OAAO,wBAAQ,EAACA,CAAC,CAAC,IAAI,MAAM,IAAIA,CAAC,IAAIA,CAAC,CAAC,MAAM,CAAC,KAAK,cAAc;AACnE","names":["RunnableSpec","AbstractRunnableSpec","constructor","run","spec","self","results","hasFailures","tsplus_module_5","Test","test","tsplus_module_4","summary","tsplus_module_3","tsplus_module_1","runSpec","main","_args","tsplus_module_8","runner","bootstrap","exit","tsplus_module_6","process","code","isRunnableSpec","u"],"sourceRoot":"","sources":["../../_src/control/RunnableSpec.ts"],"sourcesContent":[null]}
|