@creative-introvert/tons-of-tests 2.0.0 → 3.0.0-rc.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/README.md +263 -134
- package/dist/cjs/Classify.js +6 -2
- package/dist/cjs/Classify.js.map +1 -1
- package/dist/cjs/RepositoryError.js +24 -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 +41 -2
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/Test.repository.js +8 -17
- package/dist/cjs/Test.repository.js.map +1 -1
- package/dist/cjs/TestRun.js +20 -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 +305 -109
- package/dist/cjs/internal/Test.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.js +266 -304
- 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 +37 -3
- package/dist/cjs/internal/stats.js.map +1 -1
- package/dist/cjs/internal/summarize.js +155 -36
- 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-migrations.js +68 -0
- package/dist/cjs/internal/test-repository-migrations.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 +4 -1
- package/dist/dts/Classify.d.ts.map +1 -1
- package/dist/dts/RepositoryError.d.ts +19 -20
- package/dist/dts/RepositoryError.d.ts.map +1 -1
- package/dist/dts/Show.d.ts +8 -8
- package/dist/dts/Show.d.ts.map +1 -1
- package/dist/dts/Test.d.ts +155 -11
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/Test.repository.d.ts +94 -8
- package/dist/dts/Test.repository.d.ts.map +1 -1
- package/dist/dts/TestRun.d.ts +18 -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 +58 -31
- package/dist/dts/internal/Test.d.ts.map +1 -1
- package/dist/dts/internal/Test.repository.sqlite.d.ts +66 -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 +15 -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 +22 -0
- package/dist/dts/internal/test-repository-fixtures.d.ts.map +1 -0
- package/dist/dts/internal/test-repository-migrations.d.ts +11 -0
- package/dist/dts/internal/test-repository-migrations.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 +5 -1
- package/dist/esm/Classify.js.map +1 -1
- package/dist/esm/RepositoryError.js +14 -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 +38 -1
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/Test.repository.js +7 -16
- package/dist/esm/Test.repository.js.map +1 -1
- package/dist/esm/TestRun.js +13 -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 +299 -108
- package/dist/esm/internal/Test.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.js +265 -301
- 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 +35 -2
- package/dist/esm/internal/stats.js.map +1 -1
- package/dist/esm/internal/summarize.js +155 -35
- 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-migrations.js +62 -0
- package/dist/esm/internal/test-repository-migrations.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 -56
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"test-repository-fixtures.d.ts","sourceRoot":"","sources":["../../../src/internal/test-repository-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAItC,eAAO,MAAM,cAAc,qHAKzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;sFAK5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;sFAc/B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SqliteMigrator } from '@effect/sql-sqlite-node';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
import { SqlClient } from 'effect/sql';
|
|
4
|
+
export declare const tables: {
|
|
5
|
+
readonly testResults: 'test-results';
|
|
6
|
+
readonly testRuns: 'test-runs';
|
|
7
|
+
readonly testBaselines: 'test-baselines';
|
|
8
|
+
readonly testRunResults: 'test-run-results';
|
|
9
|
+
};
|
|
10
|
+
export declare const migrate: Effect.Effect<readonly (readonly [id: number, name: string])[], SqliteMigrator.MigrationError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
11
|
+
//# sourceMappingURL=test-repository-migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-repository-migrations.d.ts","sourceRoot":"","sources":["../../../src/internal/test-repository-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,MAAM;aACf,WAAW,EAAE,cAAc;aAC3B,QAAQ,EAAE,WAAW;aACrB,aAAa,EAAE,gBAAgB;aAC/B,cAAc,EAAE,kBAAkB;CAC5B,CAAC;AAEX,eAAO,MAAM,OAAO,8JAqDlB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect, Schema } from 'effect';
|
|
2
|
+
import { SqlClient } from 'effect/sql';
|
|
3
|
+
import type { TestRepositoryShape } from '../Test.repository.js';
|
|
4
|
+
type Collector = Parameters<Parameters<TestRepositoryShape['withStats']>[0]>[0];
|
|
5
|
+
export declare const withStats: <A, E, R>(use: (collector: Collector) => Effect.Effect<A, E, R>) => Effect.Effect<A, E | Schema.SchemaError | import("effect/sql/SqlError").SqlError, R | SqlClient.SqlClient>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=test-result-stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-result-stats.d.ts","sourceRoot":"","sources":["../../../src/internal/test-result-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAe,MAAM,EAAC,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAGrC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAmB/D,KAAK,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,SAAS,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC,mBACxC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+GAiFvD,CAAC"}
|
package/dist/esm/Classify.js
CHANGED
|
@@ -2,15 +2,18 @@ import { Option, Schema } from 'effect';
|
|
|
2
2
|
import * as internal from './internal/Classify.js';
|
|
3
3
|
export const LabelSchema = internal.LabelSchema;
|
|
4
4
|
export const values = internal.values;
|
|
5
|
-
export const defaultIsEqual = internal.defaultIsEqual;
|
|
6
5
|
export const defaultIsNil = internal.defaultIsNil;
|
|
7
6
|
export const makeClassify = internal.makeClassify;
|
|
7
|
+
/** Counts selected results; timing statistics count each selected case once. */
|
|
8
8
|
export class Stats extends /*#__PURE__*/Schema.Class('Stats')({
|
|
9
9
|
TP: Schema.Finite,
|
|
10
10
|
TN: Schema.Finite,
|
|
11
11
|
FP: Schema.Finite,
|
|
12
12
|
FN: Schema.Finite,
|
|
13
|
+
/** Number of evaluation results. */
|
|
13
14
|
total: Schema.Finite,
|
|
15
|
+
/** Number of distinct original test cases represented by those results. */
|
|
16
|
+
testCases: Schema.Int,
|
|
14
17
|
precision: Schema.Finite,
|
|
15
18
|
recall: Schema.Finite,
|
|
16
19
|
timeMin: /*#__PURE__*/Schema.Option(Schema.Finite),
|
|
@@ -25,6 +28,7 @@ export class Stats extends /*#__PURE__*/Schema.Class('Stats')({
|
|
|
25
28
|
FP: 0,
|
|
26
29
|
FN: 0,
|
|
27
30
|
total: 0,
|
|
31
|
+
testCases: 0,
|
|
28
32
|
precision: 0,
|
|
29
33
|
recall: 0,
|
|
30
34
|
timeMin: Option.none(),
|
package/dist/esm/Classify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Classify.js","names":["Option","Schema","internal","LabelSchema","values","
|
|
1
|
+
{"version":3,"file":"Classify.js","names":["Option","Schema","internal","LabelSchema","values","defaultIsNil","makeClassify","Stats","Class","TP","Finite","TN","FP","FN","total","testCases","Int","precision","recall","timeMin","timeMax","timeMedian","timeMean","empty","none"],"sources":["../../src/Classify.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,MAAM,QAAO,QAAQ;AAErC,OAAO,KAAKC,QAAQ,MAAM,wBAAwB;AAElD,OAAO,MAAMC,WAAW,GAAGD,QAAQ,CAACC,WAAW;AAG/C,OAAO,MAAMC,MAAM,GAAGF,QAAQ,CAACE,MAAM;AACrC,OAAO,MAAMC,YAAY,GAAGH,QAAQ,CAACG,YAAY;AACjD,OAAO,MAAMC,YAAY,GAAGJ,QAAQ,CAACI,YAAY;AAIjD;AACA,OAAM,MAAOC,KAAM,sBAAQN,MAAM,CAACO,KAAK,CAAQ,OAAO,CAAC,CAAC;EACpDC,EAAE,EAAER,MAAM,CAACS,MAAM;EACjBC,EAAE,EAAEV,MAAM,CAACS,MAAM;EACjBE,EAAE,EAAEX,MAAM,CAACS,MAAM;EACjBG,EAAE,EAAEZ,MAAM,CAACS,MAAM;EACjB;EACAI,KAAK,EAAEb,MAAM,CAACS,MAAM;EACpB;EACAK,SAAS,EAAEd,MAAM,CAACe,GAAG;EACrBC,SAAS,EAAEhB,MAAM,CAACS,MAAM;EACxBQ,MAAM,EAAEjB,MAAM,CAACS,MAAM;EACrBS,OAAO,eAAElB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACrCU,OAAO,eAAEnB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACrCW,UAAU,eAAEpB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACxCY,QAAQ,eAAErB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM;CACxC,CAAC;EACE,OAAOa,KAAKA,CAAA;IACR,OAAO,IAAIhB,KAAK,CAAC;MACbE,EAAE,EAAE,CAAC;MACLE,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,KAAK,EAAE,CAAC;MACRC,SAAS,EAAE,CAAC;MACZE,SAAS,EAAE,CAAC;MACZC,MAAM,EAAE,CAAC;MACTC,OAAO,EAAEnB,MAAM,CAACwB,IAAI,EAAE;MACtBJ,OAAO,EAAEpB,MAAM,CAACwB,IAAI,EAAE;MACtBH,UAAU,EAAErB,MAAM,CAACwB,IAAI,EAAE;MACzBF,QAAQ,EAAEtB,MAAM,CAACwB,IAAI;KACxB,CAAC;EACN","ignoreList":[]}
|
|
@@ -1,34 +1,19 @@
|
|
|
1
|
-
import { ResultLengthMismatch, SqlError } from 'effect/sql/SqlError';
|
|
2
1
|
import { Schema } from 'effect';
|
|
3
|
-
|
|
4
|
-
export class RepositoryQueryError extends /*#__PURE__*/Schema.TaggedError()('RepositoryQueryError', {
|
|
5
|
-
operation: Schema.String,
|
|
6
|
-
cause: /*#__PURE__*/Schema.instanceOf(SqlError)
|
|
7
|
-
}) {
|
|
8
|
-
static fromSql = operation => cause => new RepositoryQueryError({
|
|
9
|
-
operation,
|
|
10
|
-
cause
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export class RepositoryWriteError extends /*#__PURE__*/Schema.TaggedError()('RepositoryWriteError', {
|
|
14
|
-
operation: Schema.String,
|
|
15
|
-
cause: SqlCause
|
|
16
|
-
}) {
|
|
17
|
-
static from = operation => cause => new RepositoryWriteError({
|
|
18
|
-
operation,
|
|
19
|
-
cause
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
export class RepositoryDecodeError extends /*#__PURE__*/Schema.TaggedError()('RepositoryDecodeError', {
|
|
23
|
-
operation: Schema.String,
|
|
24
|
-
cause: /*#__PURE__*/Schema.instanceOf(Schema.SchemaError)
|
|
25
|
-
}) {
|
|
26
|
-
static from = operation => cause => new RepositoryDecodeError({
|
|
27
|
-
operation,
|
|
28
|
-
cause
|
|
29
|
-
});
|
|
30
|
-
}
|
|
2
|
+
export { TestValueError } from './TestValueError.js';
|
|
31
3
|
export class TestRunNotCreated extends /*#__PURE__*/Schema.TaggedError()('TestRunNotCreated', {
|
|
32
4
|
testSuiteName: Schema.String
|
|
33
5
|
}) {}
|
|
6
|
+
/** A complete saved run is required for this operation. */
|
|
7
|
+
export class TestRunIncomplete extends /*#__PURE__*/Schema.TaggedError()('TestRunIncomplete', {
|
|
8
|
+
testSuiteName: Schema.String,
|
|
9
|
+
testRunId: Schema.Int,
|
|
10
|
+
variant: Schema.String
|
|
11
|
+
}) {}
|
|
12
|
+
export class TestRunNotFound extends /*#__PURE__*/Schema.TaggedError()('TestRunNotFound', {
|
|
13
|
+
testRunId: Schema.Int
|
|
14
|
+
}) {}
|
|
15
|
+
export class TestBaselineNotFound extends /*#__PURE__*/Schema.TaggedError()('TestBaselineNotFound', {
|
|
16
|
+
testSuiteName: Schema.String,
|
|
17
|
+
variant: Schema.String
|
|
18
|
+
}) {}
|
|
34
19
|
//# sourceMappingURL=RepositoryError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepositoryError.js","names":["
|
|
1
|
+
{"version":3,"file":"RepositoryError.js","names":["Schema","TestValueError","TestRunNotCreated","TaggedError","testSuiteName","String","TestRunIncomplete","testRunId","Int","variant","TestRunNotFound","TestBaselineNotFound"],"sources":["../../src/RepositoryError.ts"],"sourcesContent":[null],"mappings":"AACA,SAAQA,MAAM,QAAO,QAAQ;AAG7B,SAAQC,cAAc,QAAO,qBAAqB;AAElD,OAAM,MAAOC,iBAAkB,sBAAQF,MAAM,CAACG,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EAACC,aAAa,EAAEJ,MAAM,CAACK;AAAM,CAAC,CAAC;AAExD;AACA,OAAM,MAAOC,iBAAkB,sBAAQN,MAAM,CAACG,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EACrBC,aAAa,EAAEJ,MAAM,CAACK,MAAM;EAC5BE,SAAS,EAAEP,MAAM,CAACQ,GAAG;EACrBC,OAAO,EAAET,MAAM,CAACK;CACnB,CAAC;AAEF,OAAM,MAAOK,eAAgB,sBAAQV,MAAM,CAACG,WAAW,EAGpD,CAAC,iBAAiB,EAAE;EAACI,SAAS,EAAEP,MAAM,CAACQ;AAAG,CAAC,CAAC;AAE/C,OAAM,MAAOG,oBAAqB,sBAAQX,MAAM,CAACG,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EACxBC,aAAa,EAAEJ,MAAM,CAACK,MAAM;EAC5BI,OAAO,EAAET,MAAM,CAACK;CACnB,CAAC","ignoreList":[]}
|
package/dist/esm/Show.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { showDiff as diff } from './internal/diff.js';
|
|
2
|
-
export { showStats as stats } from './internal/stats.js';
|
|
3
|
-
export { showSummary as summarize } from './internal/summarize.js';
|
|
2
|
+
export { showStats as stats, showRunSummaries as runSummaries } from './internal/stats.js';
|
|
3
|
+
export { showSummary as summarize, prepareSummary, prepareComparison } from './internal/summarize.js';
|
|
4
4
|
//# sourceMappingURL=Show.js.map
|
package/dist/esm/Show.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Show.js","names":["showDiff","diff","showStats","stats","showSummary","summarize"],"sources":["../../src/Show.ts"],"sourcesContent":[null],"mappings":"AAKA,SAAQA,QAAQ,IAAIC,IAAI,QAAO,oBAAoB;AACnD,
|
|
1
|
+
{"version":3,"file":"Show.js","names":["showDiff","diff","showStats","stats","showRunSummaries","runSummaries","showSummary","summarize","prepareSummary","prepareComparison"],"sources":["../../src/Show.ts"],"sourcesContent":[null],"mappings":"AAKA,SAAQA,QAAQ,IAAIC,IAAI,QAAO,oBAAoB;AACnD,SACIC,SAAS,IAAIC,KAAK,EAClBC,gBAAgB,IAAIC,YAAY,QAC7B,qBAAqB;AAC5B,SACIC,WAAW,IAAIC,SAAS,EACxBC,cAAc,EACdC,iBAAiB,QACd,yBAAyB","ignoreList":[]}
|
package/dist/esm/Test.js
CHANGED
|
@@ -1,6 +1,43 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
1
2
|
import * as internal from './internal/Test.js';
|
|
3
|
+
export class TestVariantRequired extends /*#__PURE__*/Schema.TaggedError()('TestVariantRequired', {
|
|
4
|
+
testSuiteName: Schema.String
|
|
5
|
+
}) {}
|
|
6
|
+
export class TestVariantNotFound extends /*#__PURE__*/Schema.TaggedError()('TestVariantNotFound', {
|
|
7
|
+
testSuiteName: Schema.String,
|
|
8
|
+
variant: Schema.String
|
|
9
|
+
}) {}
|
|
10
|
+
/** Selects a program without running it or requiring its services. */
|
|
11
|
+
export const selectVariant = internal.selectVariant;
|
|
12
|
+
/**
|
|
13
|
+
* Runs only the selected program. Its error and service types include every
|
|
14
|
+
* configured program and the case stream, even when the variant ID is a literal.
|
|
15
|
+
*/
|
|
2
16
|
export const all = internal.all;
|
|
17
|
+
/**
|
|
18
|
+
* Compares complete saved runs without evaluating again. The shared codecs must
|
|
19
|
+
* decode both runs and require no Effect services. Callers decide whether comparing
|
|
20
|
+
* different suites or program versions is meaningful.
|
|
21
|
+
*
|
|
22
|
+
* Results match by case hash and evaluation key. A match changes when its label
|
|
23
|
+
* or evaluated values change. Rows follow `to` order, followed by rows found only
|
|
24
|
+
* in `from`, in `from` order. Empty complete runs are valid comparison endpoints.
|
|
25
|
+
* Resolve missing baselines before calling; both endpoints must be saved runs.
|
|
26
|
+
* Incompatible codecs fail with `TestValueError`, which names the saved suite.
|
|
27
|
+
*/
|
|
28
|
+
export const compareRuns = internal.compareRuns;
|
|
29
|
+
/**
|
|
30
|
+
* Summarizes all matching results in a complete saved run. Each case contributes
|
|
31
|
+
* its timing once. Empty complete runs have zero counts and no timing values.
|
|
32
|
+
* The shared codecs must still read that run. The caller decides whether the
|
|
33
|
+
* stored values still have the same meaning. Resolve a missing baseline before
|
|
34
|
+
* calling; it differs from an empty run.
|
|
35
|
+
*/
|
|
36
|
+
export const summarizeRun = internal.summarizeRun;
|
|
3
37
|
export const diff = internal.diff;
|
|
4
|
-
|
|
38
|
+
/** Builds the lookup key for one evaluation within its original test case. */
|
|
39
|
+
export const resultKey = internal.resultKey;
|
|
5
40
|
export const runCollectRecord = internal.runCollectRecord;
|
|
41
|
+
/** Keeps matching results and recalculates counts and case timing statistics. */
|
|
42
|
+
export const filterResults = internal.filterResults;
|
|
6
43
|
//# sourceMappingURL=Test.js.map
|
package/dist/esm/Test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","names":["internal","all","diff","
|
|
1
|
+
{"version":3,"file":"Test.js","names":["Schema","internal","TestVariantRequired","TaggedError","testSuiteName","String","TestVariantNotFound","variant","selectVariant","all","compareRuns","summarizeRun","diff","resultKey","runCollectRecord","filterResults"],"sources":["../../src/Test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAIIA,MAAM,QAEH,QAAQ;AAGf,OAAO,KAAKC,QAAQ,MAAM,oBAAoB;AA2E9C,OAAM,MAAOC,mBAAoB,sBAAQF,MAAM,CAACG,WAAW,EAGxD,CAAC,qBAAqB,EAAE;EAACC,aAAa,EAAEJ,MAAM,CAACK;AAAM,CAAC,CAAC;AAE1D,OAAM,MAAOC,mBAAoB,sBAAQN,MAAM,CAACG,WAAW,EAGxD,CAAC,qBAAqB,EAAE;EACvBC,aAAa,EAAEJ,MAAM,CAACK,MAAM;EAC5BE,OAAO,EAAEP,MAAM,CAACK;CACnB,CAAC;AAqGF;AACA,OAAO,MAAMG,aAAa,GAAGP,QAAQ,CAACO,aAAa;AAEnD;;;;AAIA,OAAO,MAAMC,GAAG,GAAGR,QAAQ,CAACQ,GAAG;AAC/B;;;;;;;;;;;AAWA,OAAO,MAAMC,WAAW,GAAGT,QAAQ,CAACS,WAAW;AAC/C;;;;;;;AAOA,OAAO,MAAMC,YAAY,GAAGV,QAAQ,CAACU,YAAY;AACjD,OAAO,MAAMC,IAAI,GAAGX,QAAQ,CAACW,IAAI;AACjC;AACA,OAAO,MAAMC,SAAS,GAAGZ,QAAQ,CAACY,SAAS;AAC3C,OAAO,MAAMC,gBAAgB,GAAGb,QAAQ,CAACa,gBAAgB;AACzD;AACA,OAAO,MAAMC,aAAa,GAAGd,QAAQ,CAACc,aAAa","ignoreList":[]}
|
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
import * as Sqlite from '@effect/sql-sqlite-node';
|
|
2
2
|
import { Context, Layer } from 'effect';
|
|
3
3
|
import { makeTestRepository } from './internal/Test.repository.sqlite.js';
|
|
4
|
-
export { TestRun } from './
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}));
|
|
8
|
-
let testLayerCache;
|
|
9
|
-
export class TestRepository extends /*#__PURE__*/Context.Service()('TestRepository') {
|
|
10
|
-
// Lazy getters: makeTestRepository lives in an internal module that has
|
|
11
|
-
// its own import edge back here, so we evaluate these at access time
|
|
12
|
-
// rather than at class definition time to avoid the circular init order.
|
|
13
|
-
static get Live() {
|
|
14
|
-
return Layer.effect(this, makeTestRepository);
|
|
15
|
-
}
|
|
4
|
+
export { TestRun } from './TestRun.js';
|
|
5
|
+
export class TestRepository extends /*#__PURE__*/Context.Service()('@creative-introvert/tons-of-tests/TestRepository') {
|
|
6
|
+
static layerNoDeps = /*#__PURE__*/Layer.effect(this, makeTestRepository);
|
|
16
7
|
static layer(dbPath) {
|
|
17
|
-
return Layer.provide(this.
|
|
8
|
+
return Layer.provide(this.layerNoDeps, Sqlite.SqliteClient.layer({
|
|
18
9
|
filename: dbPath
|
|
19
10
|
}));
|
|
20
11
|
}
|
|
21
|
-
static
|
|
22
|
-
|
|
23
|
-
}
|
|
12
|
+
static TestLayer = /*#__PURE__*/Layer.provideMerge(this.layerNoDeps, /*#__PURE__*/Sqlite.SqliteClient.layer({
|
|
13
|
+
filename: ':memory:'
|
|
14
|
+
}));
|
|
24
15
|
}
|
|
25
16
|
//# sourceMappingURL=Test.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.js","names":["Sqlite","Context","Layer","makeTestRepository","TestRun","
|
|
1
|
+
{"version":3,"file":"Test.repository.js","names":["Sqlite","Context","Layer","makeTestRepository","TestRun","TestRepository","Service","layerNoDeps","effect","layer","dbPath","provide","SqliteClient","filename","TestLayer","provideMerge"],"sources":["../../src/Test.repository.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,yBAAyB;AACjD,SACIC,OAAO,EAEPC,KAAK,QAIF,QAAQ;AAGf,SAAQC,kBAAkB,QAAO,sCAAsC;AAKvE,SAAQC,OAAO,QAAO,cAAc;AA0GpC,OAAM,MAAOC,cAAe,sBAAQJ,OAAO,CAACK,OAAO,EAGhD,CAAC,kDAAkD,CAAC;EACnD,OAAgBC,WAAW,gBAAGL,KAAK,CAACM,MAAM,CAAC,IAAI,EAAEL,kBAAkB,CAAC;EAEpE,OAAOM,KAAKA,CAACC,MAAc;IACvB,OAAOR,KAAK,CAACS,OAAO,CAChB,IAAI,CAACJ,WAAW,EAChBP,MAAM,CAACY,YAAY,CAACH,KAAK,CAAC;MAACI,QAAQ,EAAEH;IAAM,CAAC,CAAC,CAChD;EACL;EAEA,OAAgBI,SAAS,gBAAGZ,KAAK,CAACa,YAAY,CAC1C,IAAI,CAACR,WAAW,eAChBP,MAAM,CAACY,YAAY,CAACH,KAAK,CAAC;IAACI,QAAQ,EAAE;EAAU,CAAC,CAAC,CACpD","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* One saved execution of a suite variant. Results remain available after its
|
|
4
|
+
* program changes or is removed. `Complete` and `Failed` runs cannot be changed.
|
|
5
|
+
* Committing a complete run changes only its variant's baseline pointer.
|
|
6
|
+
*/
|
|
7
|
+
export class TestRun extends /*#__PURE__*/Schema.Class('TestRun')({
|
|
8
|
+
id: Schema.Int,
|
|
9
|
+
name: Schema.String,
|
|
10
|
+
variant: Schema.String,
|
|
11
|
+
state: /*#__PURE__*/Schema.Literals(['Running', 'Complete', 'Failed'])
|
|
12
|
+
}) {}
|
|
13
|
+
//# sourceMappingURL=TestRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRun.js","names":["Schema","TestRun","Class","id","Int","name","String","variant","state","Literals"],"sources":["../../src/TestRun.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,QAAO,QAAQ;AAE7B;;;;;AAKA,OAAM,MAAOC,OAAQ,sBAAQD,MAAM,CAACE,KAAK,CAGvC,SAAS,CAAC,CAAC;EACTC,EAAE,EAAEH,MAAM,CAACI,GAAG;EACdC,IAAI,EAAEL,MAAM,CAACM,MAAM;EACnBC,OAAO,EAAEP,MAAM,CAACM,MAAM;EACtBE,KAAK,eAAER,MAAM,CAACS,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;CAC3D,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
/** A suite value could not be converted without losing information. */
|
|
3
|
+
export class TestValueError extends /*#__PURE__*/Schema.TaggedError()('TestValueError', {
|
|
4
|
+
suite: Schema.String,
|
|
5
|
+
caseNumber: Schema.Int,
|
|
6
|
+
key: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
7
|
+
field: /*#__PURE__*/Schema.Literals(['testCase.input', 'testCase.expected', 'evaluation.result', 'evaluation.expected']),
|
|
8
|
+
operation: /*#__PURE__*/Schema.Literals(['encode', 'decode', 'roundTrip']),
|
|
9
|
+
cause: /*#__PURE__*/Schema.instanceOf(Schema.SchemaError)
|
|
10
|
+
}) {
|
|
11
|
+
get message() {
|
|
12
|
+
const key = this.key === undefined ? '' : `, result ${this.key}`;
|
|
13
|
+
return `${this.suite}, case ${this.caseNumber}${key}, ${this.field} (${this.operation}): ${this.cause.message}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=TestValueError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestValueError.js","names":["Schema","TestValueError","TaggedError","suite","String","caseNumber","Int","key","optionalKey","field","Literals","operation","cause","instanceOf","SchemaError","message","undefined"],"sources":["../../src/TestValueError.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,QAAO,QAAQ;AAE7B;AACA,OAAM,MAAOC,cAAe,sBAAQD,MAAM,CAACE,WAAW,EAGnD,CAAC,gBAAgB,EAAE;EAClBC,KAAK,EAAEH,MAAM,CAACI,MAAM;EACpBC,UAAU,EAAEL,MAAM,CAACM,GAAG;EACtBC,GAAG,eAAEP,MAAM,CAACQ,WAAW,CAACR,MAAM,CAACI,MAAM,CAAC;EACtCK,KAAK,eAAET,MAAM,CAACU,QAAQ,CAAC,CACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,CACxB,CAAC;EACFC,SAAS,eAAEX,MAAM,CAACU,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;EAC7DE,KAAK,eAAEZ,MAAM,CAACa,UAAU,CAACb,MAAM,CAACc,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","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * as Classify from './Classify.js';
|
|
2
2
|
export * as DisplayConfig from './DisplayConfig.js';
|
|
3
3
|
export * as Error from './RepositoryError.js';
|
|
4
|
-
export { pack } from './internal/pack.js';
|
|
5
4
|
export * as Show from './Show.js';
|
|
6
5
|
export * as Test from './Test.js';
|
|
7
6
|
export * as TestRepository from './Test.repository.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Classify","DisplayConfig","Error","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Classify","DisplayConfig","Error","Show","Test","TestRepository"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AACnD,OAAO,KAAKC,KAAK,MAAM,sBAAsB;AAC7C,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,cAAc,MAAM,sBAAsB","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isDeepStrictEqual } from 'node:util';
|
|
2
1
|
import { Option, Schema } from 'effect';
|
|
3
2
|
export const values = {
|
|
4
3
|
TN: 'TN',
|
|
@@ -7,12 +6,6 @@ export const values = {
|
|
|
7
6
|
FN: 'FN'
|
|
8
7
|
};
|
|
9
8
|
export const LabelSchema = /*#__PURE__*/Schema.Literals(['TP', 'TN', 'FP', 'FN']);
|
|
10
|
-
export const defaultIsEqual = (a, b) =>
|
|
11
|
-
// FIXME: Expensive, but don't know how else to cheaply remove
|
|
12
|
-
// `undefined`, which is a common source of false results.
|
|
13
|
-
// Parsing the output w/ a schema would be better, or
|
|
14
|
-
// forbidding `undefined`.
|
|
15
|
-
isDeepStrictEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)));
|
|
16
9
|
export const defaultIsNil = x => x === null || x === undefined;
|
|
17
10
|
export const makeClassify = ({
|
|
18
11
|
isEqual,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Classify.js","names":["
|
|
1
|
+
{"version":3,"file":"Classify.js","names":["Option","Schema","values","TN","TP","FP","FN","LabelSchema","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","none","sorted","slice","sort","index","Math","floor","fromNullishOr"],"sources":["../../../src/internal/Classify.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|