@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.
Files changed (120) hide show
  1. package/README.md +263 -134
  2. package/dist/cjs/Classify.js +6 -2
  3. package/dist/cjs/Classify.js.map +1 -1
  4. package/dist/cjs/RepositoryError.js +24 -33
  5. package/dist/cjs/RepositoryError.js.map +1 -1
  6. package/dist/cjs/Show.js +18 -0
  7. package/dist/cjs/Show.js.map +1 -1
  8. package/dist/cjs/Test.js +41 -2
  9. package/dist/cjs/Test.js.map +1 -1
  10. package/dist/cjs/Test.repository.js +8 -17
  11. package/dist/cjs/Test.repository.js.map +1 -1
  12. package/dist/cjs/TestRun.js +20 -0
  13. package/dist/cjs/TestRun.js.map +1 -0
  14. package/dist/cjs/TestValueError.js +23 -0
  15. package/dist/cjs/TestValueError.js.map +1 -0
  16. package/dist/cjs/index.js +0 -7
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/internal/Classify.js +1 -9
  19. package/dist/cjs/internal/Classify.js.map +1 -1
  20. package/dist/cjs/internal/Test.js +305 -109
  21. package/dist/cjs/internal/Test.js.map +1 -1
  22. package/dist/cjs/internal/Test.repository.sqlite.js +266 -304
  23. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  24. package/dist/cjs/internal/Test.serialization.js +128 -0
  25. package/dist/cjs/internal/Test.serialization.js.map +1 -0
  26. package/dist/cjs/internal/common.js.map +1 -1
  27. package/dist/cjs/internal/stats.js +37 -3
  28. package/dist/cjs/internal/stats.js.map +1 -1
  29. package/dist/cjs/internal/summarize.js +155 -36
  30. package/dist/cjs/internal/summarize.js.map +1 -1
  31. package/dist/cjs/internal/test-repository-fixtures.js +31 -0
  32. package/dist/cjs/internal/test-repository-fixtures.js.map +1 -0
  33. package/dist/cjs/internal/test-repository-migrations.js +68 -0
  34. package/dist/cjs/internal/test-repository-migrations.js.map +1 -0
  35. package/dist/cjs/internal/test-result-stats.js +89 -0
  36. package/dist/cjs/internal/test-result-stats.js.map +1 -0
  37. package/dist/dts/Classify.d.ts +4 -1
  38. package/dist/dts/Classify.d.ts.map +1 -1
  39. package/dist/dts/RepositoryError.d.ts +19 -20
  40. package/dist/dts/RepositoryError.d.ts.map +1 -1
  41. package/dist/dts/Show.d.ts +8 -8
  42. package/dist/dts/Show.d.ts.map +1 -1
  43. package/dist/dts/Test.d.ts +155 -11
  44. package/dist/dts/Test.d.ts.map +1 -1
  45. package/dist/dts/Test.repository.d.ts +94 -8
  46. package/dist/dts/Test.repository.d.ts.map +1 -1
  47. package/dist/dts/TestRun.d.ts +18 -0
  48. package/dist/dts/TestRun.d.ts.map +1 -0
  49. package/dist/dts/TestValueError.d.ts +17 -0
  50. package/dist/dts/TestValueError.d.ts.map +1 -0
  51. package/dist/dts/index.d.ts +0 -1
  52. package/dist/dts/index.d.ts.map +1 -1
  53. package/dist/dts/internal/Classify.d.ts +0 -1
  54. package/dist/dts/internal/Classify.d.ts.map +1 -1
  55. package/dist/dts/internal/Test.d.ts +58 -31
  56. package/dist/dts/internal/Test.d.ts.map +1 -1
  57. package/dist/dts/internal/Test.repository.sqlite.d.ts +66 -11
  58. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  59. package/dist/dts/internal/Test.serialization.d.ts +34 -0
  60. package/dist/dts/internal/Test.serialization.d.ts.map +1 -0
  61. package/dist/dts/internal/common.d.ts +1 -1
  62. package/dist/dts/internal/common.d.ts.map +1 -1
  63. package/dist/dts/internal/stats.d.ts +15 -1
  64. package/dist/dts/internal/stats.d.ts.map +1 -1
  65. package/dist/dts/internal/summarize.d.ts +39 -7
  66. package/dist/dts/internal/summarize.d.ts.map +1 -1
  67. package/dist/dts/internal/test-repository-fixtures.d.ts +22 -0
  68. package/dist/dts/internal/test-repository-fixtures.d.ts.map +1 -0
  69. package/dist/dts/internal/test-repository-migrations.d.ts +11 -0
  70. package/dist/dts/internal/test-repository-migrations.d.ts.map +1 -0
  71. package/dist/dts/internal/test-result-stats.d.ts +7 -0
  72. package/dist/dts/internal/test-result-stats.d.ts.map +1 -0
  73. package/dist/esm/Classify.js +5 -1
  74. package/dist/esm/Classify.js.map +1 -1
  75. package/dist/esm/RepositoryError.js +14 -29
  76. package/dist/esm/RepositoryError.js.map +1 -1
  77. package/dist/esm/Show.js +2 -2
  78. package/dist/esm/Show.js.map +1 -1
  79. package/dist/esm/Test.js +38 -1
  80. package/dist/esm/Test.js.map +1 -1
  81. package/dist/esm/Test.repository.js +7 -16
  82. package/dist/esm/Test.repository.js.map +1 -1
  83. package/dist/esm/TestRun.js +13 -0
  84. package/dist/esm/TestRun.js.map +1 -0
  85. package/dist/esm/TestValueError.js +16 -0
  86. package/dist/esm/TestValueError.js.map +1 -0
  87. package/dist/esm/index.js +0 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/internal/Classify.js +0 -7
  90. package/dist/esm/internal/Classify.js.map +1 -1
  91. package/dist/esm/internal/Test.js +299 -108
  92. package/dist/esm/internal/Test.js.map +1 -1
  93. package/dist/esm/internal/Test.repository.sqlite.js +265 -301
  94. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  95. package/dist/esm/internal/Test.serialization.js +119 -0
  96. package/dist/esm/internal/Test.serialization.js.map +1 -0
  97. package/dist/esm/internal/common.js.map +1 -1
  98. package/dist/esm/internal/stats.js +35 -2
  99. package/dist/esm/internal/stats.js.map +1 -1
  100. package/dist/esm/internal/summarize.js +155 -35
  101. package/dist/esm/internal/summarize.js.map +1 -1
  102. package/dist/esm/internal/test-repository-fixtures.js +25 -0
  103. package/dist/esm/internal/test-repository-fixtures.js.map +1 -0
  104. package/dist/esm/internal/test-repository-migrations.js +62 -0
  105. package/dist/esm/internal/test-repository-migrations.js.map +1 -0
  106. package/dist/esm/internal/test-result-stats.js +83 -0
  107. package/dist/esm/internal/test-result-stats.js.map +1 -0
  108. package/package.json +1 -1
  109. package/dist/cjs/Test.repository.types.js +0 -14
  110. package/dist/cjs/Test.repository.types.js.map +0 -1
  111. package/dist/cjs/internal/lib/Schema.js +0 -14
  112. package/dist/cjs/internal/lib/Schema.js.map +0 -1
  113. package/dist/dts/Test.repository.types.d.ts +0 -56
  114. package/dist/dts/Test.repository.types.d.ts.map +0 -1
  115. package/dist/dts/internal/lib/Schema.d.ts +0 -4
  116. package/dist/dts/internal/lib/Schema.d.ts.map +0 -1
  117. package/dist/esm/Test.repository.types.js +0 -7
  118. package/dist/esm/Test.repository.types.js.map +0 -1
  119. package/dist/esm/internal/lib/Schema.js +0 -7
  120. 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"}
@@ -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(),
@@ -1 +1 @@
1
- {"version":3,"file":"Classify.js","names":["Option","Schema","internal","LabelSchema","values","defaultIsEqual","defaultIsNil","makeClassify","Stats","Class","TP","Finite","TN","FP","FN","total","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,cAAc,GAAGH,QAAQ,CAACG,cAAc;AACrD,OAAO,MAAMC,YAAY,GAAGJ,QAAQ,CAACI,YAAY;AACjD,OAAO,MAAMC,YAAY,GAAGL,QAAQ,CAACK,YAAY;AAIjD,OAAM,MAAOC,KAAM,sBAAQP,MAAM,CAACQ,KAAK,CAAQ,OAAO,CAAC,CAAC;EACpDC,EAAE,EAAET,MAAM,CAACU,MAAM;EACjBC,EAAE,EAAEX,MAAM,CAACU,MAAM;EACjBE,EAAE,EAAEZ,MAAM,CAACU,MAAM;EACjBG,EAAE,EAAEb,MAAM,CAACU,MAAM;EACjBI,KAAK,EAAEd,MAAM,CAACU,MAAM;EACpBK,SAAS,EAAEf,MAAM,CAACU,MAAM;EACxBM,MAAM,EAAEhB,MAAM,CAACU,MAAM;EACrBO,OAAO,eAAEjB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACrCQ,OAAO,eAAElB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACrCS,UAAU,eAAEnB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACxCU,QAAQ,eAAEpB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM;CACxC,CAAC;EACE,OAAOW,KAAKA,CAAA;IACR,OAAO,IAAId,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;MACZC,MAAM,EAAE,CAAC;MACTC,OAAO,EAAElB,MAAM,CAACuB,IAAI,EAAE;MACtBJ,OAAO,EAAEnB,MAAM,CAACuB,IAAI,EAAE;MACtBH,UAAU,EAAEpB,MAAM,CAACuB,IAAI,EAAE;MACzBF,QAAQ,EAAErB,MAAM,CAACuB,IAAI;KACxB,CAAC;EACN","ignoreList":[]}
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
- const SqlCause = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.instanceOf(SqlError), /*#__PURE__*/Schema.instanceOf(ResultLengthMismatch)]);
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":["ResultLengthMismatch","SqlError","Schema","SqlCause","Union","instanceOf","RepositoryQueryError","TaggedError","operation","String","cause","fromSql","RepositoryWriteError","from","RepositoryDecodeError","SchemaError","TestRunNotCreated","testSuiteName"],"sources":["../../src/RepositoryError.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,oBAAoB,EAAEC,QAAQ,QAAO,qBAAqB;AAClE,SAAQC,MAAM,QAAO,QAAQ;AAE7B,MAAMC,QAAQ,gBAAGD,MAAM,CAACE,KAAK,CAAC,cAC1BF,MAAM,CAACG,UAAU,CAACJ,QAAQ,CAAC,eAC3BC,MAAM,CAACG,UAAU,CAACL,oBAAoB,CAAC,CAC1C,CAAC;AAEF,OAAM,MAAOM,oBAAqB,sBAAQJ,MAAM,CAACK,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EACxBC,SAAS,EAAEN,MAAM,CAACO,MAAM;EACxBC,KAAK,eAAER,MAAM,CAACG,UAAU,CAACJ,QAAQ;CACpC,CAAC;EACE,OAAOU,OAAO,GAAIH,SAAiB,IAAME,KAAe,IACpD,IAAIJ,oBAAoB,CAAC;IAACE,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGpD,OAAM,MAAOE,oBAAqB,sBAAQV,MAAM,CAACK,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EAACC,SAAS,EAAEN,MAAM,CAACO,MAAM;EAAEC,KAAK,EAAEP;AAAQ,CAAC,CAAC;EACpE,OAAOU,IAAI,GACNL,SAAiB,IAAME,KAAsC,IAC1D,IAAIE,oBAAoB,CAAC;IAACJ,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGxD,OAAM,MAAOI,qBAAsB,sBAAQZ,MAAM,CAACK,WAAW,EAG1D,CAAC,uBAAuB,EAAE;EACzBC,SAAS,EAAEN,MAAM,CAACO,MAAM;EACxBC,KAAK,eAAER,MAAM,CAACG,UAAU,CAACH,MAAM,CAACa,WAAW;CAC9C,CAAC;EACE,OAAOF,IAAI,GAAIL,SAAiB,IAAME,KAAyB,IAC3D,IAAII,qBAAqB,CAAC;IAACN,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGrD,OAAM,MAAOM,iBAAkB,sBAAQd,MAAM,CAACK,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EAACU,aAAa,EAAEf,MAAM,CAACO;AAAM,CAAC,CAAC","ignoreList":[]}
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
@@ -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,SAAQC,SAAS,IAAIC,KAAK,QAAO,qBAAqB;AACtD,SAAQC,WAAW,IAAIC,SAAS,QAAO,yBAAyB","ignoreList":[]}
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
- export const makeSha256 = internal.makeSha256;
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
@@ -1 +1 @@
1
- {"version":3,"file":"Test.js","names":["internal","all","diff","makeSha256","runCollectRecord"],"sources":["../../src/Test.ts"],"sourcesContent":[null],"mappings":"AAGA,OAAO,KAAKA,QAAQ,MAAM,oBAAoB;AAiE9C,OAAO,MAAMC,GAAG,GAAGD,QAAQ,CAACC,GAAG;AAC/B,OAAO,MAAMC,IAAI,GAAGF,QAAQ,CAACE,IAAI;AACjC,OAAO,MAAMC,UAAU,GAAGH,QAAQ,CAACG,UAAU;AAC7C,OAAO,MAAMC,gBAAgB,GAAGJ,QAAQ,CAACI,gBAAgB","ignoreList":[]}
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 './Test.repository.types.js';
5
- const makeTestLayer = () => Layer.provideMerge(TestRepository.Live, Sqlite.SqliteClient.layer({
6
- filename: ':memory:'
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.Live, Sqlite.SqliteClient.layer({
8
+ return Layer.provide(this.layerNoDeps, Sqlite.SqliteClient.layer({
18
9
  filename: dbPath
19
10
  }));
20
11
  }
21
- static get TestLayer() {
22
- return testLayerCache ??= makeTestLayer();
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","makeTestLayer","provideMerge","TestRepository","Live","SqliteClient","layer","filename","testLayerCache","Service","effect","dbPath","provide","TestLayer"],"sources":["../../src/Test.repository.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,yBAAyB;AACjD,SAAQC,OAAO,EAAEC,KAAK,QAAO,QAAQ;AAErC,SAAQC,kBAAkB,QAAO,sCAAsC;AAGvE,SAAQC,OAAO,QAAO,4BAA4B;AAQlD,MAAMC,aAAa,GAAGA,CAAA,KAClBH,KAAK,CAACI,YAAY,CACdC,cAAc,CAACC,IAAI,EACnBR,MAAM,CAACS,YAAY,CAACC,KAAK,CAAC;EAACC,QAAQ,EAAE;AAAU,CAAC,CAAC,CACpD;AAEL,IAAIC,cAA4D;AAEhE,OAAM,MAAOL,cAAe,sBAAQN,OAAO,CAACY,OAAO,EAGhD,CAAC,gBAAgB,CAAC;EACjB;EACA;EACA;EACA,WAAWL,IAAIA,CAAA;IACX,OAAON,KAAK,CAACY,MAAM,CAAC,IAAI,EAAEX,kBAAkB,CAAC;EACjD;EACA,OAAOO,KAAKA,CAACK,MAAc;IACvB,OAAOb,KAAK,CAACc,OAAO,CAChB,IAAI,CAACR,IAAI,EACTR,MAAM,CAACS,YAAY,CAACC,KAAK,CAAC;MAACC,QAAQ,EAAEI;IAAM,CAAC,CAAC,CAChD;EACL;EAEA,WAAWE,SAASA,CAAA;IAChB,OAAQL,cAAc,KAAKP,aAAa,EAAE;EAC9C","ignoreList":[]}
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Classify","DisplayConfig","Error","pack","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,SAAQC,IAAI,QAAO,oBAAoB;AACvC,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,cAAc,MAAM,sBAAsB","ignoreList":[]}
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":["isDeepStrictEqual","Option","Schema","values","TN","TP","FP","FN","LabelSchema","Literals","defaultIsEqual","a","b","JSON","parse","stringify","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","median","none","sorted","slice","sort","index","Math","floor","fromNullishOr"],"sources":["../../../src/internal/Classify.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":[]}