@creative-introvert/tons-of-tests 2.1.0 → 3.0.0-rc.1
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/README.md +143 -37
- package/dist/cjs/Classify.js +1 -2
- package/dist/cjs/Classify.js.map +1 -1
- package/dist/cjs/RepositoryError.js +42 -33
- package/dist/cjs/RepositoryError.js.map +1 -1
- package/dist/cjs/Show.js +18 -0
- package/dist/cjs/Show.js.map +1 -1
- package/dist/cjs/Test.js +40 -2
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/Test.repository.js +25 -22
- package/dist/cjs/Test.repository.js.map +1 -1
- package/dist/cjs/TestRun.js +28 -0
- package/dist/cjs/TestRun.js.map +1 -0
- package/dist/cjs/TestValueError.js +23 -0
- package/dist/cjs/TestValueError.js.map +1 -0
- package/dist/cjs/index.js +0 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/Classify.js +1 -9
- package/dist/cjs/internal/Classify.js.map +1 -1
- package/dist/cjs/internal/Test.js +235 -95
- package/dist/cjs/internal/Test.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.js +487 -356
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/cjs/internal/Test.serialization.js +128 -0
- package/dist/cjs/internal/Test.serialization.js.map +1 -0
- package/dist/cjs/internal/common.js.map +1 -1
- package/dist/cjs/internal/stats.js +29 -1
- package/dist/cjs/internal/stats.js.map +1 -1
- package/dist/cjs/internal/summarize.js +143 -29
- package/dist/cjs/internal/summarize.js.map +1 -1
- package/dist/cjs/internal/test-repository-fixtures.js +31 -0
- package/dist/cjs/internal/test-repository-fixtures.js.map +1 -0
- package/dist/cjs/internal/test-repository-schema.js +98 -0
- package/dist/cjs/internal/test-repository-schema.js.map +1 -0
- package/dist/cjs/internal/test-result-stats.js +89 -0
- package/dist/cjs/internal/test-result-stats.js.map +1 -0
- package/dist/dts/Classify.d.ts +0 -1
- package/dist/dts/Classify.d.ts.map +1 -1
- package/dist/dts/RepositoryError.d.ts +47 -20
- package/dist/dts/RepositoryError.d.ts.map +1 -1
- package/dist/dts/Show.d.ts +5 -5
- package/dist/dts/Show.d.ts.map +1 -1
- package/dist/dts/Test.d.ts +136 -13
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/Test.repository.d.ts +132 -9
- package/dist/dts/Test.repository.d.ts.map +1 -1
- package/dist/dts/TestRun.d.ts +22 -0
- package/dist/dts/TestRun.d.ts.map +1 -0
- package/dist/dts/TestValueError.d.ts +17 -0
- package/dist/dts/TestValueError.d.ts.map +1 -0
- package/dist/dts/index.d.ts +0 -1
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/Classify.d.ts +0 -1
- package/dist/dts/internal/Classify.d.ts.map +1 -1
- package/dist/dts/internal/Test.d.ts +64 -30
- package/dist/dts/internal/Test.d.ts.map +1 -1
- package/dist/dts/internal/Test.repository.sqlite.d.ts +92 -11
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
- package/dist/dts/internal/Test.serialization.d.ts +34 -0
- package/dist/dts/internal/Test.serialization.d.ts.map +1 -0
- package/dist/dts/internal/common.d.ts +1 -1
- package/dist/dts/internal/common.d.ts.map +1 -1
- package/dist/dts/internal/stats.d.ts +16 -1
- package/dist/dts/internal/stats.d.ts.map +1 -1
- package/dist/dts/internal/summarize.d.ts +39 -7
- package/dist/dts/internal/summarize.d.ts.map +1 -1
- package/dist/dts/internal/test-repository-fixtures.d.ts +33 -0
- package/dist/dts/internal/test-repository-fixtures.d.ts.map +1 -0
- package/dist/dts/internal/test-repository-schema.d.ts +16 -0
- package/dist/dts/internal/test-repository-schema.d.ts.map +1 -0
- package/dist/dts/internal/test-result-stats.d.ts +7 -0
- package/dist/dts/internal/test-result-stats.d.ts.map +1 -0
- package/dist/esm/Classify.js +0 -1
- package/dist/esm/Classify.js.map +1 -1
- package/dist/esm/RepositoryError.js +29 -29
- package/dist/esm/RepositoryError.js.map +1 -1
- package/dist/esm/Show.js +2 -2
- package/dist/esm/Show.js.map +1 -1
- package/dist/esm/Test.js +37 -1
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/Test.repository.js +26 -21
- package/dist/esm/Test.repository.js.map +1 -1
- package/dist/esm/TestRun.js +22 -0
- package/dist/esm/TestRun.js.map +1 -0
- package/dist/esm/TestValueError.js +16 -0
- package/dist/esm/TestValueError.js.map +1 -0
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/Classify.js +0 -7
- package/dist/esm/internal/Classify.js.map +1 -1
- package/dist/esm/internal/Test.js +231 -94
- package/dist/esm/internal/Test.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.js +486 -356
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/esm/internal/Test.serialization.js +119 -0
- package/dist/esm/internal/Test.serialization.js.map +1 -0
- package/dist/esm/internal/common.js.map +1 -1
- package/dist/esm/internal/stats.js +27 -0
- package/dist/esm/internal/stats.js.map +1 -1
- package/dist/esm/internal/summarize.js +143 -28
- package/dist/esm/internal/summarize.js.map +1 -1
- package/dist/esm/internal/test-repository-fixtures.js +25 -0
- package/dist/esm/internal/test-repository-fixtures.js.map +1 -0
- package/dist/esm/internal/test-repository-schema.js +92 -0
- package/dist/esm/internal/test-repository-schema.js.map +1 -0
- package/dist/esm/internal/test-result-stats.js +83 -0
- package/dist/esm/internal/test-result-stats.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/Test.repository.types.js +0 -14
- package/dist/cjs/Test.repository.types.js.map +0 -1
- package/dist/cjs/internal/lib/Schema.js +0 -14
- package/dist/cjs/internal/lib/Schema.js.map +0 -1
- package/dist/dts/Test.repository.types.d.ts +0 -62
- package/dist/dts/Test.repository.types.d.ts.map +0 -1
- package/dist/dts/internal/lib/Schema.d.ts +0 -4
- package/dist/dts/internal/lib/Schema.d.ts.map +0 -1
- package/dist/esm/Test.repository.types.js +0 -7
- package/dist/esm/Test.repository.types.js.map +0 -1
- package/dist/esm/internal/lib/Schema.js +0 -7
- package/dist/esm/internal/lib/Schema.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TestValueError = void 0;
|
|
7
|
+
var _effect = /*#__PURE__*/require("effect");
|
|
8
|
+
/** A suite value could not be converted without losing information. */
|
|
9
|
+
class TestValueError extends /*#__PURE__*/_effect.Schema.TaggedError()('TestValueError', {
|
|
10
|
+
suite: _effect.Schema.String,
|
|
11
|
+
caseNumber: _effect.Schema.Int,
|
|
12
|
+
key: /*#__PURE__*/_effect.Schema.optionalKey(_effect.Schema.String),
|
|
13
|
+
field: /*#__PURE__*/_effect.Schema.Literals(['testCase.input', 'testCase.expected', 'evaluation.result', 'evaluation.expected']),
|
|
14
|
+
operation: /*#__PURE__*/_effect.Schema.Literals(['encode', 'decode', 'roundTrip']),
|
|
15
|
+
cause: /*#__PURE__*/_effect.Schema.instanceOf(_effect.Schema.SchemaError)
|
|
16
|
+
}) {
|
|
17
|
+
get message() {
|
|
18
|
+
const key = this.key === undefined ? '' : `, result ${this.key}`;
|
|
19
|
+
return `${this.suite}, case ${this.caseNumber}${key}, ${this.field} (${this.operation}): ${this.cause.message}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.TestValueError = TestValueError;
|
|
23
|
+
//# sourceMappingURL=TestValueError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestValueError.js","names":["_effect","require","TestValueError","Schema","TaggedError","suite","String","caseNumber","Int","key","optionalKey","field","Literals","operation","cause","instanceOf","SchemaError","message","undefined","exports"],"sources":["../../src/TestValueError.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAEA;AACM,MAAOC,cAAe,sBAAQC,cAAM,CAACC,WAAW,EAGnD,CAAC,gBAAgB,EAAE;EAClBC,KAAK,EAAEF,cAAM,CAACG,MAAM;EACpBC,UAAU,EAAEJ,cAAM,CAACK,GAAG;EACtBC,GAAG,eAAEN,cAAM,CAACO,WAAW,CAACP,cAAM,CAACG,MAAM,CAAC;EACtCK,KAAK,eAAER,cAAM,CAACS,QAAQ,CAAC,CACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,CACxB,CAAC;EACFC,SAAS,eAAEV,cAAM,CAACS,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;EAC7DE,KAAK,eAAEX,cAAM,CAACY,UAAU,CAACZ,cAAM,CAACa,WAAW;CAC9C,CAAC;EACE,IAAaC,OAAOA,CAAA;IAChB,MAAMR,GAAG,GAAG,IAAI,CAACA,GAAG,KAAKS,SAAS,GAAG,EAAE,GAAG,YAAY,IAAI,CAACT,GAAG,EAAE;IAChE,OAAO,GAAG,IAAI,CAACJ,KAAK,UAAU,IAAI,CAACE,UAAU,GAAGE,GAAG,KAAK,IAAI,CAACE,KAAK,KAAK,IAAI,CAACE,SAAS,MAAM,IAAI,CAACC,KAAK,CAACG,OAAO,EAAE;EACnH;;AACHE,OAAA,CAAAjB,cAAA,GAAAA,cAAA","ignoreList":[]}
|
package/dist/cjs/index.js
CHANGED
|
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.TestRepository = exports.Test = exports.Show = exports.Error = exports.DisplayConfig = exports.Classify = void 0;
|
|
7
|
-
Object.defineProperty(exports, "pack", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: function () {
|
|
10
|
-
return _pack.pack;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
7
|
var _Classify = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Classify.js"));
|
|
14
8
|
exports.Classify = _Classify;
|
|
15
9
|
var _DisplayConfig = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./DisplayConfig.js"));
|
|
16
10
|
exports.DisplayConfig = _DisplayConfig;
|
|
17
11
|
var _Error = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./RepositoryError.js"));
|
|
18
12
|
exports.Error = _Error;
|
|
19
|
-
var _pack = /*#__PURE__*/require("./internal/pack.js");
|
|
20
13
|
var _Show = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Show.js"));
|
|
21
14
|
exports.Show = _Show;
|
|
22
15
|
var _Test = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Test.js"));
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.values = exports.recall = exports.precision = exports.min = exports.median = exports.mean = exports.max = exports.makeClassify = exports.defaultIsNil = exports.
|
|
7
|
-
var _nodeUtil = /*#__PURE__*/require("node:util");
|
|
6
|
+
exports.values = exports.recall = exports.precision = exports.min = exports.median = exports.mean = exports.max = exports.makeClassify = exports.defaultIsNil = exports.LabelSchema = void 0;
|
|
8
7
|
var _effect = /*#__PURE__*/require("effect");
|
|
9
8
|
const values = exports.values = {
|
|
10
9
|
TN: 'TN',
|
|
@@ -13,13 +12,6 @@ const values = exports.values = {
|
|
|
13
12
|
FN: 'FN'
|
|
14
13
|
};
|
|
15
14
|
const LabelSchema = exports.LabelSchema = /*#__PURE__*/_effect.Schema.Literals(['TP', 'TN', 'FP', 'FN']);
|
|
16
|
-
const defaultIsEqual = (a, b) =>
|
|
17
|
-
// FIXME: Expensive, but don't know how else to cheaply remove
|
|
18
|
-
// `undefined`, which is a common source of false results.
|
|
19
|
-
// Parsing the output w/ a schema would be better, or
|
|
20
|
-
// forbidding `undefined`.
|
|
21
|
-
(0, _nodeUtil.isDeepStrictEqual)(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)));
|
|
22
|
-
exports.defaultIsEqual = defaultIsEqual;
|
|
23
15
|
const defaultIsNil = x => x === null || x === undefined;
|
|
24
16
|
exports.defaultIsNil = defaultIsNil;
|
|
25
17
|
const makeClassify = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Classify.js","names":["
|
|
1
|
+
{"version":3,"file":"Classify.js","names":["_effect","require","values","exports","TN","TP","FP","FN","LabelSchema","Schema","Literals","defaultIsNil","x","undefined","makeClassify","isEqual","isOutputNil","isExpectedNil","output","expected","oNil","eNil","precision","m","r","Number","isNaN","recall","min","xs","reduce","POSITIVE_INFINITY","max","NEGATIVE_INFINITY","mean","length","a","b","median","Option","none","sorted","slice","sort","index","Math","floor","fromNullishOr"],"sources":["../../../src/internal/Classify.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,69 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.all = all;
|
|
7
|
+
exports.runCollectRecord = exports.resultKey = exports.makeSha256 = exports.filterResults = exports.diff = exports.compareRuns = void 0;
|
|
8
|
+
exports.selectVariant = selectVariant;
|
|
9
|
+
exports.test = exports.summarizeRun = void 0;
|
|
7
10
|
var _nodeCrypto = /*#__PURE__*/require("node:crypto");
|
|
8
11
|
var _effect = /*#__PURE__*/require("effect");
|
|
9
12
|
var _Classify = /*#__PURE__*/require("../Classify.js");
|
|
13
|
+
var _Test = /*#__PURE__*/require("../Test.js");
|
|
14
|
+
var _TestRepository = /*#__PURE__*/require("../Test.repository.js");
|
|
15
|
+
var _RepositoryError = /*#__PURE__*/require("../RepositoryError.js");
|
|
16
|
+
var _TestSerialization = /*#__PURE__*/require("./Test.serialization.js");
|
|
10
17
|
var _Classify2 = /*#__PURE__*/require("./Classify.js");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return (0, _nodeCrypto.createHash)('sha256').update(JSON.stringify(input)).digest('hex');
|
|
14
|
-
};
|
|
18
|
+
/** Hash already encoded JSON. Object key order does not affect identity. */
|
|
19
|
+
const makeSha256 = input => (0, _nodeCrypto.createHash)('sha256').update((0, _TestSerialization.stringifyJson)(input)).digest('hex');
|
|
15
20
|
exports.makeSha256 = makeSha256;
|
|
16
|
-
const TestResult = {
|
|
17
|
-
make: args => {
|
|
18
|
-
const {
|
|
19
|
-
hashTestCase,
|
|
20
|
-
key,
|
|
21
|
-
label,
|
|
22
|
-
input,
|
|
23
|
-
result,
|
|
24
|
-
expected
|
|
25
|
-
} = args;
|
|
26
|
-
// Reordering cases or evaluations must not change a result's identity.
|
|
27
|
-
// Tags and timing also stay out of the ID.
|
|
28
|
-
const id = makeSha256({
|
|
29
|
-
hashTestCase,
|
|
30
|
-
key,
|
|
31
|
-
label,
|
|
32
|
-
input,
|
|
33
|
-
result,
|
|
34
|
-
expected
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
...args,
|
|
38
|
-
id
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
21
|
const resultKey = ({
|
|
43
22
|
hashTestCase,
|
|
44
23
|
key
|
|
45
24
|
}) => JSON.stringify([hashTestCase, key]);
|
|
46
25
|
exports.resultKey = resultKey;
|
|
47
|
-
const defaultClassify = /*#__PURE__*/(0, _Classify2.makeClassify)({
|
|
48
|
-
isEqual: _Classify2.defaultIsEqual
|
|
49
|
-
});
|
|
50
|
-
const defaultEvaluate = (result, expected) => [{
|
|
51
|
-
key: 'result',
|
|
52
|
-
result,
|
|
53
|
-
expected,
|
|
54
|
-
label: defaultClassify(result, expected)
|
|
55
|
-
}];
|
|
56
|
-
const TestResultSchema = exports.TestResultSchema = /*#__PURE__*/_effect.Schema.Struct({
|
|
57
|
-
id: _effect.Schema.String,
|
|
58
|
-
hashTestCase: _effect.Schema.String,
|
|
59
|
-
key: _effect.Schema.String,
|
|
60
|
-
ordering: _effect.Schema.Int,
|
|
61
|
-
resultOrdering: _effect.Schema.Int,
|
|
62
|
-
input: _effect.Schema.Unknown,
|
|
63
|
-
result: _effect.Schema.Unknown,
|
|
64
|
-
expected: _effect.Schema.Unknown,
|
|
65
|
-
label: _Classify2.LabelSchema,
|
|
66
|
-
tags: /*#__PURE__*/_effect.Schema.Array(_effect.Schema.String),
|
|
67
|
-
timeMillis: _effect.Schema.Finite
|
|
68
|
-
});
|
|
69
26
|
const test = exports.test = /*#__PURE__*/_effect.Effect.fnUntraced(function* ({
|
|
70
27
|
testCase: {
|
|
71
28
|
input,
|
|
@@ -73,13 +30,11 @@ const test = exports.test = /*#__PURE__*/_effect.Effect.fnUntraced(function* ({
|
|
|
73
30
|
tags,
|
|
74
31
|
ordering
|
|
75
32
|
},
|
|
33
|
+
hashTestCase,
|
|
76
34
|
program,
|
|
77
|
-
evaluate
|
|
35
|
+
evaluate,
|
|
36
|
+
encodeResult
|
|
78
37
|
}) {
|
|
79
|
-
const hashTestCase = makeSha256({
|
|
80
|
-
input,
|
|
81
|
-
expected
|
|
82
|
-
});
|
|
83
38
|
const t0 = yield* _effect.Clock.currentTimeNanos;
|
|
84
39
|
const result = yield* program(input);
|
|
85
40
|
const t1 = yield* _effect.Clock.currentTimeNanos;
|
|
@@ -96,55 +51,174 @@ const test = exports.test = /*#__PURE__*/_effect.Effect.fnUntraced(function* ({
|
|
|
96
51
|
}
|
|
97
52
|
keys.add(key);
|
|
98
53
|
}
|
|
99
|
-
return
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
54
|
+
return yield* _effect.Effect.forEach(evaluations, (evaluation, resultOrdering) => _effect.Effect.gen(function* () {
|
|
55
|
+
const args = {
|
|
56
|
+
...evaluation,
|
|
57
|
+
hashTestCase,
|
|
58
|
+
ordering,
|
|
59
|
+
resultOrdering,
|
|
60
|
+
input,
|
|
61
|
+
tags: tags ?? [],
|
|
62
|
+
timeMillis: Number(t1 - t0) / 1_000_000
|
|
63
|
+
};
|
|
64
|
+
const encoded = yield* encodeResult(args);
|
|
65
|
+
// Ordering, tags, and timing do not change result identity.
|
|
66
|
+
return {
|
|
67
|
+
...args,
|
|
68
|
+
id: makeSha256({
|
|
69
|
+
hashTestCase,
|
|
70
|
+
key: evaluation.key,
|
|
71
|
+
label: evaluation.label,
|
|
72
|
+
input: encoded.input,
|
|
73
|
+
result: encoded.result,
|
|
74
|
+
expected: encoded.expected
|
|
75
|
+
})
|
|
76
|
+
};
|
|
107
77
|
}));
|
|
108
78
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
79
|
+
function selectVariant(suite, variant) {
|
|
80
|
+
const suiteName = suite.name;
|
|
81
|
+
return _effect.Effect.suspend(() => {
|
|
82
|
+
if (Object.hasOwn(suite, 'program') === Object.hasOwn(suite, 'variants')) {
|
|
83
|
+
return _effect.Effect.die(new Error(`${suite.name}: define exactly one of program and variants`));
|
|
84
|
+
}
|
|
85
|
+
if (suite.program !== undefined) {
|
|
86
|
+
if (typeof suite.program !== 'function') {
|
|
87
|
+
return _effect.Effect.die(new Error(`${suiteName}: program must be a function`));
|
|
88
|
+
}
|
|
89
|
+
return variant === undefined || variant === 'default' ? _effect.Effect.succeed({
|
|
90
|
+
name: 'default',
|
|
91
|
+
program: suite.program
|
|
92
|
+
}) : _effect.Effect.fail(new _Test.TestVariantNotFound({
|
|
93
|
+
testSuiteName: suite.name,
|
|
94
|
+
variant
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
if (suite.variants === undefined || suite.variants === null || typeof suite.variants !== 'object' || Array.isArray(suite.variants)) {
|
|
98
|
+
return _effect.Effect.die(new Error(`${suite.name}: variants must be a map of programs`));
|
|
99
|
+
}
|
|
100
|
+
for (const [name, definition] of Object.entries(suite.variants)) {
|
|
101
|
+
if (name.length === 0 || name.includes(',') || name.startsWith('run:')) {
|
|
102
|
+
return _effect.Effect.die(new Error(`${suite.name}: invalid variant ID ${JSON.stringify(name)}`));
|
|
103
|
+
}
|
|
104
|
+
if (definition === null || typeof definition !== 'object' || typeof definition.program !== 'function') {
|
|
105
|
+
return _effect.Effect.die(new Error(`${suite.name}: variant ${JSON.stringify(name)} must define a program`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (variant === undefined) {
|
|
109
|
+
return _effect.Effect.fail(new _Test.TestVariantRequired({
|
|
110
|
+
testSuiteName: suite.name
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
return Object.hasOwn(suite.variants, variant) ? _effect.Effect.succeed({
|
|
114
|
+
name: variant,
|
|
115
|
+
program: suite.variants[variant].program
|
|
116
|
+
}) : _effect.Effect.fail(new _Test.TestVariantNotFound({
|
|
117
|
+
testSuiteName: suite.name,
|
|
118
|
+
variant
|
|
119
|
+
}));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function all(suite, options = {}) {
|
|
123
|
+
return executeAll(suite, options);
|
|
124
|
+
}
|
|
125
|
+
const executeAll = (suite, {
|
|
126
|
+
variant,
|
|
127
|
+
concurrency = 1
|
|
113
128
|
}) => {
|
|
114
129
|
if (suite.evaluate === undefined) {
|
|
115
|
-
|
|
130
|
+
if (!Object.is(suite.schemas.evaluation.result, suite.schemas.evaluation.expected)) {
|
|
131
|
+
return _effect.Stream.die(new Error(`${suite.name}: without evaluate, evaluation.result and evaluation.expected must reuse the same schema`));
|
|
132
|
+
}
|
|
133
|
+
const classify = (0, _Classify2.makeClassify)({
|
|
134
|
+
isEqual: _effect.Schema.toEquivalence(_effect.Schema.Union([suite.schemas.evaluation.result, suite.schemas.evaluation.expected]))
|
|
135
|
+
});
|
|
136
|
+
return executeAll({
|
|
116
137
|
...suite,
|
|
117
|
-
evaluate:
|
|
138
|
+
evaluate: (result, expected) => [{
|
|
139
|
+
key: 'result',
|
|
140
|
+
result,
|
|
141
|
+
expected,
|
|
142
|
+
label: classify(result, expected)
|
|
143
|
+
}]
|
|
118
144
|
}, {
|
|
145
|
+
variant,
|
|
119
146
|
concurrency
|
|
120
147
|
});
|
|
121
148
|
}
|
|
122
149
|
const {
|
|
123
150
|
testCases,
|
|
124
|
-
|
|
125
|
-
|
|
151
|
+
evaluate,
|
|
152
|
+
schemas
|
|
126
153
|
} = suite;
|
|
154
|
+
const inputCodec = (0, _TestSerialization.makeValueCodec)(schemas.testCase.input);
|
|
155
|
+
const expectedCodec = (0, _TestSerialization.makeValueCodec)(schemas.testCase.expected);
|
|
156
|
+
const {
|
|
157
|
+
encode: encodeResult
|
|
158
|
+
} = (0, _TestSerialization.makeResultCodec)(schemas, suite.name);
|
|
127
159
|
const total = _effect.Stream.isStream(testCases) ? undefined : testCases.length;
|
|
128
160
|
const testCases$ = _effect.Stream.isStream(testCases) ? testCases : _effect.Stream.fromIterable(testCases);
|
|
129
|
-
return
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
testCase,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
161
|
+
return _effect.Stream.unwrap(_effect.Effect.map(selectVariant(suite, variant), ({
|
|
162
|
+
program
|
|
163
|
+
}) => {
|
|
164
|
+
const seen = new Set();
|
|
165
|
+
return (0, _effect.pipe)(testCases$, _effect.Stream.zipWithIndex, _effect.Stream.mapEffect(_effect.Effect.fnUntraced(function* ([testCase, ordering]) {
|
|
166
|
+
const context = {
|
|
167
|
+
suite: suite.name,
|
|
168
|
+
caseNumber: ordering + 1
|
|
169
|
+
};
|
|
170
|
+
const input = yield* inputCodec.encode(testCase.input, {
|
|
171
|
+
...context,
|
|
172
|
+
field: 'testCase.input'
|
|
173
|
+
});
|
|
174
|
+
const expected = yield* expectedCodec.encode(testCase.expected, {
|
|
175
|
+
...context,
|
|
176
|
+
field: 'testCase.expected'
|
|
177
|
+
});
|
|
178
|
+
return {
|
|
179
|
+
testCase: {
|
|
180
|
+
...testCase,
|
|
181
|
+
ordering
|
|
182
|
+
},
|
|
183
|
+
hashTestCase: makeSha256({
|
|
184
|
+
input,
|
|
185
|
+
expected
|
|
186
|
+
})
|
|
187
|
+
};
|
|
188
|
+
})), _effect.Stream.filterEffect(({
|
|
189
|
+
testCase,
|
|
190
|
+
hashTestCase
|
|
191
|
+
}) => {
|
|
192
|
+
if (seen.has(hashTestCase)) {
|
|
193
|
+
return _effect.Effect.logWarning('Skipping duplicate test case.', {
|
|
194
|
+
suite: suite.name,
|
|
195
|
+
hashTestCase,
|
|
196
|
+
caseNumber: testCase.ordering + 1
|
|
197
|
+
}).pipe(_effect.Effect.as(false));
|
|
198
|
+
}
|
|
199
|
+
seen.add(hashTestCase);
|
|
200
|
+
return _effect.Effect.succeed(true);
|
|
201
|
+
}), _effect.Stream.mapEffect(({
|
|
202
|
+
testCase,
|
|
203
|
+
hashTestCase
|
|
204
|
+
}) => test({
|
|
205
|
+
testCase,
|
|
206
|
+
hashTestCase,
|
|
207
|
+
program,
|
|
208
|
+
evaluate,
|
|
209
|
+
encodeResult
|
|
210
|
+
}), {
|
|
211
|
+
concurrency,
|
|
212
|
+
unordered: false
|
|
213
|
+
}), _effect.Stream.tap(testResults => {
|
|
214
|
+
const i = testResults[0].ordering + 1;
|
|
215
|
+
const stride = total === undefined ? 10 : Math.max(Math.floor(total * 0.05), 10);
|
|
216
|
+
const isMilestone = i === 1 || i % stride === 0 || total !== undefined && i === total;
|
|
217
|
+
if (!isMilestone) return _effect.Effect.void;
|
|
218
|
+
return _effect.Effect.logDebug(total === undefined ? `progress ${i}` : `progress ${i}/${total}`);
|
|
219
|
+
}), _effect.Stream.flattenIterable);
|
|
220
|
+
}));
|
|
146
221
|
};
|
|
147
|
-
exports.all = all;
|
|
148
222
|
const emptyAcc = () => ({
|
|
149
223
|
testResultsByKey: {},
|
|
150
224
|
testResultKeys: [],
|
|
@@ -195,9 +269,7 @@ const finish = (testRun, acc) => {
|
|
|
195
269
|
timeMedian: (0, _Classify2.median)(times)
|
|
196
270
|
});
|
|
197
271
|
return {
|
|
198
|
-
|
|
199
|
-
name: testRun.name,
|
|
200
|
-
hash: testRun.hash,
|
|
272
|
+
...testRun,
|
|
201
273
|
testResultsByKey: acc.testResultsByKey,
|
|
202
274
|
testResultKeys: acc.testResultKeys,
|
|
203
275
|
testCaseHashes: [...acc.timesByTestCaseHash.keys()],
|
|
@@ -234,4 +306,72 @@ const diff = ({
|
|
|
234
306
|
})
|
|
235
307
|
}));
|
|
236
308
|
exports.diff = diff;
|
|
309
|
+
const requireComplete = /*#__PURE__*/_effect.Effect.fnUntraced(function* (repository, run) {
|
|
310
|
+
const saved = yield* repository.getTestRun(run);
|
|
311
|
+
if (_effect.Option.isNone(saved)) {
|
|
312
|
+
return yield* new _RepositoryError.TestRunNotFound({
|
|
313
|
+
testRunId: run.id
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
if (saved.value.state !== 'Complete') {
|
|
317
|
+
return yield* new _RepositoryError.TestRunIncomplete({
|
|
318
|
+
testSuiteName: saved.value.name,
|
|
319
|
+
testRunId: saved.value.id,
|
|
320
|
+
variant: saved.value.variant
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
return saved.value;
|
|
324
|
+
});
|
|
325
|
+
const compareRuns = ({
|
|
326
|
+
from,
|
|
327
|
+
to,
|
|
328
|
+
schemas
|
|
329
|
+
}) => _effect.Stream.unwrap(_effect.Effect.gen(function* () {
|
|
330
|
+
const repository = yield* _TestRepository.TestRepository;
|
|
331
|
+
const savedFrom = yield* requireComplete(repository, from);
|
|
332
|
+
const savedTo = yield* requireComplete(repository, to);
|
|
333
|
+
const resultEquals = _effect.Schema.toEquivalence(schemas.evaluation.result);
|
|
334
|
+
const expectedEquals = _effect.Schema.toEquivalence(schemas.evaluation.expected);
|
|
335
|
+
const matchingTo = repository.getTestResultsStream(savedTo, schemas).pipe(_effect.Stream.grouped(50), _effect.Stream.mapEffect(_effect.Effect.fnUntraced(function* (batch) {
|
|
336
|
+
const matches = yield* repository.getTestResultsStream(savedFrom, schemas, batch).pipe(_effect.Stream.runCollect);
|
|
337
|
+
const byKey = new Map(matches.map(result => [resultKey(result), result]));
|
|
338
|
+
return batch.map(to => {
|
|
339
|
+
const from = byKey.get(resultKey(to));
|
|
340
|
+
return from === undefined ? {
|
|
341
|
+
_tag: 'OnlyTo',
|
|
342
|
+
to
|
|
343
|
+
} : {
|
|
344
|
+
_tag: 'Matched',
|
|
345
|
+
from,
|
|
346
|
+
to,
|
|
347
|
+
changed: from.label !== to.label || !resultEquals(from.result, to.result) || !expectedEquals(from.expected, to.expected)
|
|
348
|
+
};
|
|
349
|
+
});
|
|
350
|
+
})), _effect.Stream.flattenIterable);
|
|
351
|
+
const onlyFrom = repository.getTestResultsStream(savedFrom, schemas).pipe(_effect.Stream.grouped(50), _effect.Stream.mapEffect(_effect.Effect.fnUntraced(function* (batch) {
|
|
352
|
+
const matches = yield* repository.getTestResultsStream(savedTo, schemas, batch).pipe(_effect.Stream.runCollect);
|
|
353
|
+
const keys = new Set(matches.map(resultKey));
|
|
354
|
+
return batch.filter(from => !keys.has(resultKey(from))).map(from => ({
|
|
355
|
+
_tag: 'OnlyFrom',
|
|
356
|
+
from
|
|
357
|
+
}));
|
|
358
|
+
})), _effect.Stream.flattenIterable);
|
|
359
|
+
return matchingTo.pipe(_effect.Stream.concat(onlyFrom));
|
|
360
|
+
}));
|
|
361
|
+
exports.compareRuns = compareRuns;
|
|
362
|
+
const summarizeRun = exports.summarizeRun = /*#__PURE__*/_effect.Effect.fnUntraced(function* ({
|
|
363
|
+
run,
|
|
364
|
+
schemas,
|
|
365
|
+
predicate
|
|
366
|
+
}) {
|
|
367
|
+
const repository = yield* _TestRepository.TestRepository;
|
|
368
|
+
const saved = yield* requireComplete(repository, run);
|
|
369
|
+
return yield* repository.withStats(collector => _effect.Effect.gen(function* () {
|
|
370
|
+
yield* repository.getTestResultsStream(saved, schemas).pipe(_effect.Stream.filter(predicate ?? (() => true)), _effect.Stream.grouped(50), _effect.Stream.runForEach(collector.add));
|
|
371
|
+
return {
|
|
372
|
+
run: saved,
|
|
373
|
+
stats: yield* collector.stats
|
|
374
|
+
};
|
|
375
|
+
}));
|
|
376
|
+
});
|
|
237
377
|
//# sourceMappingURL=Test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","_effect","_Classify","_Classify2","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","hashTestCase","key","label","result","expected","id","resultKey","defaultClassify","makeClassify","isEqual","defaultIsEqual","defaultEvaluate","TestResultSchema","Schema","Struct","String","ordering","Int","resultOrdering","Unknown","LabelSchema","tags","Array","timeMillis","Finite","test","Effect","fnUntraced","testCase","program","evaluate","t0","Clock","currentTimeNanos","t1","evaluations","length","die","Error","keys","Set","has","add","map","evaluation","Number","all","suite","concurrency","undefined","testCases","total","Stream","isStream","testCases$","fromIterable","pipe","zipWithIndex","mapEffect","unordered","tap","testResults","i","stride","Math","max","floor","isMilestone","void","logDebug","flattenIterable","emptyAcc","testResultsByKey","testResultKeys","timesByTestCaseHash","Map","TP","TN","FP","FN","appendResult","acc","r","push","set","finish","testRun","times","values","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","time","stats","Stats","size","precision","recall","timeMean","Option","some","none","timeMedian","median","name","hash","testCaseHashes","runCollectRecord","testResults$","run","Sink","reduce","filterResults","predicate","diff","previousTestRun","match","onNone","onSome","previousStats"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","_effect","_Classify","_Test","_TestRepository","_RepositoryError","_TestSerialization","_Classify2","makeSha256","input","createHash","update","stringifyJson","digest","exports","resultKey","hashTestCase","key","JSON","stringify","test","Effect","fnUntraced","testCase","expected","tags","ordering","program","evaluate","encodeResult","t0","Clock","currentTimeNanos","result","t1","evaluations","length","die","Error","keys","Set","has","add","forEach","evaluation","resultOrdering","gen","args","timeMillis","Number","encoded","id","label","selectVariant","suite","variant","suiteName","name","suspend","Object","hasOwn","undefined","succeed","fail","TestVariantNotFound","testSuiteName","variants","Array","isArray","definition","entries","includes","startsWith","TestVariantRequired","all","options","executeAll","concurrency","is","schemas","Stream","classify","makeClassify","isEqual","Schema","toEquivalence","Union","testCases","inputCodec","makeValueCodec","expectedCodec","encode","makeResultCodec","total","isStream","testCases$","fromIterable","unwrap","map","seen","pipe","zipWithIndex","mapEffect","context","caseNumber","field","filterEffect","logWarning","as","unordered","tap","testResults","i","stride","Math","max","floor","isMilestone","void","logDebug","flattenIterable","emptyAcc","testResultsByKey","testResultKeys","timesByTestCaseHash","Map","TP","TN","FP","FN","appendResult","acc","r","push","set","finish","testRun","times","values","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","time","stats","Stats","size","precision","recall","timeMean","Option","some","none","timeMedian","median","testCaseHashes","runCollectRecord","testResults$","run","Sink","reduce","filterResults","predicate","diff","previousTestRun","match","onNone","onSome","previousStats","requireComplete","repository","saved","getTestRun","isNone","TestRunNotFound","testRunId","value","state","TestRunIncomplete","compareRuns","from","to","TestRepository","savedFrom","savedTo","resultEquals","expectedEquals","matchingTo","getTestResultsStream","grouped","batch","matches","runCollect","byKey","get","_tag","changed","onlyFrom","filter","concat","summarizeRun","withStats","collector","runForEach"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|