@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
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","names":["_ansiColors","_interopRequireDefault","require","_effect","_common","_DisplayConfig","_formatDiff","_index","e","__esModule","default","columns","name","label","make","i","hashes","colors","dim","length","previousTestResult","color","Option","isNone","green","white","hash","slice","testResult","timeMillis","toFixed","tags","JSON","stringify","input","split","expected","hasPrevious","isSome","blue","red","yellow","result","formatDiff","diff","match","onNone","onSome","_","pipe","map","getOrElse","showSummary","testRun","displayConfig","previousTestRun","none","selectColumns","cfg","makeDefault","testCaseHashes","_columns","filter","c","includes","startsWith","columnWidths","m","rows","testResultsByTestCaseHash","flatMap","Record","get","row","w","Math","max","s","unstyle","maxHeight","reduce","n","_key","values","forEach","_i","push","A","makeBy","header","showHeader","showTitle","bold","showBorder","height","showRow","exports"],"sources":["../../../src/internal/summarize.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"summarize.js","names":["_ansiColors","_interopRequireDefault","require","_effect","_TestSerialization","_common","_DisplayConfig","_formatDiff","_index","e","__esModule","default","columns","name","label","make","i","resultCount","colors","dim","testResult","previousTestResult","color","Option","isNone","green","white","hash","hashTestCase","slice","key","timeMillis","toFixed","tags","JSON","stringify","input","split","expected","hasPrevious","isSome","blue","red","yellow","result","formatDiff","diff","match","onNone","onSome","_","pipe","map","getOrElse","defaultColumns","makeRow","selected","context","row","height","reduce","values","Math","max","length","push","A","makeBy","measureRow","widths","width","index","value","unstyle","showSummary","exports","Effect","fnUntraced","testRun","schemas","displayConfig","previousTestRun","none","selectColumns","codec","makeResultCodec","cfg","makeDefault","resultKeys","testResultKeys","_columns","filter","c","includes","startsWith","columnWidths","m","rows","encode","testResultsByKey","previous","flatMap","Record","get","some","header","showHeader","s","showTitle","bold","showBorder","showRow","decodeRow","Schema","decodeUnknownEffect","fromJsonString","Array","Tuple","String","prepareSummary","results","suite","column","Stream","zipWithIndex","mapEffect","prepareTable","title","indexColumn","findIndex","prepareComparison","comparisons","from","to","fromCodec","run","toCodec","labels","comparison","before","_tag","undefined","getOrThrow","after","fields","changed","identity","variant","id","table","chunks","concat","formattedRows","fs","FileSystem","path","makeTempFileScoped","prefix","suffix","count","padded","encodeText","sink","start","end","stream","decodeText","splitLines","line","numbered"],"sources":["../../../src/internal/summarize.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAllTestRuns = exports.getAllTestRunResults = exports.getAllTestResults = void 0;
7
+ var _effect = /*#__PURE__*/require("effect");
8
+ var _sql = /*#__PURE__*/require("effect/sql");
9
+ var _TestRun = /*#__PURE__*/require("../TestRun.js");
10
+ var _TestRepositorySqlite = /*#__PURE__*/require("./Test.repository.sqlite.js");
11
+ // Tests inspect storage directly; these operations are not part of TestRepository.
12
+ const getAllTestRuns = exports.getAllTestRuns = /*#__PURE__*/_effect.Effect.gen(function* () {
13
+ const sql = yield* _sql.SqlClient.SqlClient;
14
+ return yield* _effect.Schema.decodeUnknownEffect(_effect.Schema.Array(_TestRun.TestRun))(yield* sql`SELECT * FROM ${sql(_TestRepositorySqlite.tables.testRuns)};`);
15
+ });
16
+ const getAllTestResults = exports.getAllTestResults = /*#__PURE__*/_effect.Effect.gen(function* () {
17
+ const sql = yield* _sql.SqlClient.SqlClient;
18
+ return yield* _effect.Schema.decodeUnknownEffect(_effect.Schema.Array(_TestRepositorySqlite.TestResultStorage))(yield* sql`SELECT * FROM ${sql(_TestRepositorySqlite.tables.testResults)};`);
19
+ });
20
+ const getAllTestRunResults = exports.getAllTestRunResults = /*#__PURE__*/_effect.Effect.gen(function* () {
21
+ const sql = yield* _sql.SqlClient.SqlClient;
22
+ return yield* _effect.Schema.decodeUnknownEffect(_effect.Schema.Array(_effect.Schema.Struct({
23
+ testRun: _effect.Schema.Int,
24
+ testResult: _effect.Schema.String,
25
+ ordering: _effect.Schema.Int,
26
+ resultOrdering: _effect.Schema.Int,
27
+ timeMillis: _effect.Schema.Finite,
28
+ tags: _effect.Schema.fromJsonString(_effect.Schema.Array(_effect.Schema.String))
29
+ })))(yield* sql`SELECT * FROM ${sql(_TestRepositorySqlite.tables.testRunResults)};`);
30
+ });
31
+ //# sourceMappingURL=test-repository-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-fixtures.js","names":["_effect","require","_sql","_TestRun","_TestRepositorySqlite","getAllTestRuns","exports","Effect","gen","sql","SqlClient","Schema","decodeUnknownEffect","Array","TestRun","tables","testRuns","getAllTestResults","TestResultStorage","testResults","getAllTestRunResults","Struct","testRun","Int","testResult","String","ordering","resultOrdering","timeMillis","Finite","tags","fromJsonString","testRunResults"],"sources":["../../../src/internal/test-repository-fixtures.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AACA,IAAAC,IAAA,gBAAAD,OAAA;AAEA,IAAAE,QAAA,gBAAAF,OAAA;AACA,IAAAG,qBAAA,gBAAAH,OAAA;AAEA;AACO,MAAMI,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAGE,cAAM,CAACC,GAAG,CAAC,aAAS;EAC9C,MAAMC,GAAG,GAAG,OAAOC,cAAS,CAACA,SAAS;EACtC,OAAO,OAAOC,cAAM,CAACC,mBAAmB,CAACD,cAAM,CAACE,KAAK,CAACC,gBAAO,CAAC,CAAC,CAC3D,OAAOL,GAAG,iBAAiBA,GAAG,CAACM,4BAAM,CAACC,QAAQ,CAAC,GAAG,CACrD;AACL,CAAC,CAAC;AAEK,MAAMC,iBAAiB,GAAAX,OAAA,CAAAW,iBAAA,gBAAGV,cAAM,CAACC,GAAG,CAAC,aAAS;EACjD,MAAMC,GAAG,GAAG,OAAOC,cAAS,CAACA,SAAS;EACtC,OAAO,OAAOC,cAAM,CAACC,mBAAmB,CAACD,cAAM,CAACE,KAAK,CAACK,uCAAiB,CAAC,CAAC,CACrE,OAAOT,GAAG,iBAAiBA,GAAG,CAACM,4BAAM,CAACI,WAAW,CAAC,GAAG,CACxD;AACL,CAAC,CAAC;AAEK,MAAMC,oBAAoB,GAAAd,OAAA,CAAAc,oBAAA,gBAAGb,cAAM,CAACC,GAAG,CAAC,aAAS;EACpD,MAAMC,GAAG,GAAG,OAAOC,cAAS,CAACA,SAAS;EACtC,OAAO,OAAOC,cAAM,CAACC,mBAAmB,CACpCD,cAAM,CAACE,KAAK,CACRF,cAAM,CAACU,MAAM,CAAC;IACVC,OAAO,EAAEX,cAAM,CAACY,GAAG;IACnBC,UAAU,EAAEb,cAAM,CAACc,MAAM;IACzBC,QAAQ,EAAEf,cAAM,CAACY,GAAG;IACpBI,cAAc,EAAEhB,cAAM,CAACY,GAAG;IAC1BK,UAAU,EAAEjB,cAAM,CAACkB,MAAM;IACzBC,IAAI,EAAEnB,cAAM,CAACoB,cAAc,CAACpB,cAAM,CAACE,KAAK,CAACF,cAAM,CAACc,MAAM,CAAC;GAC1D,CAAC,CACL,CACJ,CAAC,OAAOhB,GAAG,iBAAiBA,GAAG,CAACM,4BAAM,CAACiB,cAAc,CAAC,GAAG,CAAC;AAC/D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.tables = exports.migrate = void 0;
7
+ var _sqlSqliteNode = /*#__PURE__*/require("@effect/sql-sqlite-node");
8
+ var _effect = /*#__PURE__*/require("effect");
9
+ var _sql = /*#__PURE__*/require("effect/sql");
10
+ const tables = exports.tables = {
11
+ testResults: 'test-results',
12
+ testRuns: 'test-runs',
13
+ testBaselines: 'test-baselines',
14
+ testRunResults: 'test-run-results'
15
+ };
16
+ const migrate = exports.migrate = /*#__PURE__*/_sqlSqliteNode.SqliteMigrator.run({
17
+ table: 'tons_of_tests_migrations',
18
+ loader: /*#__PURE__*/_sqlSqliteNode.SqliteMigrator.fromRecord({
19
+ '001_create_tables': /*#__PURE__*/_effect.Effect.gen(function* () {
20
+ const sql = yield* _sql.SqlClient.SqlClient;
21
+ yield* sql`
22
+ CREATE TABLE ${sql(tables.testRuns)}(
23
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
24
+ name TEXT NOT NULL,
25
+ variant TEXT NOT NULL,
26
+ state TEXT NOT NULL CHECK (state IN ('Running', 'Complete', 'Failed'))
27
+ );
28
+ `;
29
+ yield* sql`CREATE INDEX idx_run_name_variant_id ON ${sql(tables.testRuns)}(name, variant, id);`;
30
+ yield* sql`
31
+ CREATE TABLE ${sql(tables.testBaselines)}(
32
+ name TEXT NOT NULL,
33
+ variant TEXT NOT NULL,
34
+ testRun INTEGER NOT NULL REFERENCES ${sql(tables.testRuns)}(id),
35
+ PRIMARY KEY (name, variant)
36
+ );
37
+ `;
38
+ yield* sql`
39
+ CREATE TABLE ${sql(tables.testResults)}(
40
+ id TEXT PRIMARY KEY,
41
+ hashTestCase TEXT NOT NULL,
42
+ key TEXT NOT NULL,
43
+ input TEXT,
44
+ result TEXT,
45
+ expected TEXT,
46
+ label TEXT NOT NULL
47
+ );
48
+ `;
49
+ yield* sql`CREATE INDEX idx_tr_case_key ON ${sql(tables.testResults)}(hashTestCase, key);`;
50
+ yield* sql`
51
+ CREATE TABLE ${sql(tables.testRunResults)}(
52
+ testRun INTEGER NOT NULL,
53
+ testResult TEXT NOT NULL,
54
+ ordering INTEGER NOT NULL,
55
+ resultOrdering INTEGER NOT NULL,
56
+ timeMillis REAL NOT NULL,
57
+ tags TEXT NOT NULL,
58
+ FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
59
+ FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
60
+ UNIQUE (testRun, testResult)
61
+ );
62
+ `;
63
+ yield* sql`CREATE INDEX idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult);`;
64
+ yield* sql`CREATE INDEX idx_trr_run_order ON ${sql(tables.testRunResults)}(testRun, ordering, resultOrdering, testResult);`;
65
+ })
66
+ })
67
+ });
68
+ //# sourceMappingURL=test-repository-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-migrations.js","names":["_sqlSqliteNode","require","_effect","_sql","tables","exports","testResults","testRuns","testBaselines","testRunResults","migrate","SqliteMigrator","run","table","loader","fromRecord","Effect","gen","sql","SqlClient"],"sources":["../../../src/internal/test-repository-migrations.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,cAAA,gBAAAC,OAAA;AACA,IAAAC,OAAA,gBAAAD,OAAA;AACA,IAAAE,IAAA,gBAAAF,OAAA;AAEO,MAAMG,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG;EAClBE,WAAW,EAAE,cAAc;EAC3BC,QAAQ,EAAE,WAAW;EACrBC,aAAa,EAAE,gBAAgB;EAC/BC,cAAc,EAAE;CACV;AAEH,MAAMC,OAAO,GAAAL,OAAA,CAAAK,OAAA,gBAAGC,6BAAc,CAACC,GAAG,CAAC;EACtCC,KAAK,EAAE,0BAA0B;EACjCC,MAAM,eAAEH,6BAAc,CAACI,UAAU,CAAC;IAC9B,mBAAmB,eAAEC,cAAM,CAACC,GAAG,CAAC,aAAS;MACrC,MAAMC,GAAG,GAAG,OAAOC,cAAS,CAACA,SAAS;MACtC,OAAOD,GAAG;+BACSA,GAAG,CAACd,MAAM,CAACG,QAAQ,CAAC;;;;;;aAMtC;MACD,OAAOW,GAAG,2CAA2CA,GAAG,CAACd,MAAM,CAACG,QAAQ,CAAC,sBAAsB;MAC/F,OAAOW,GAAG;+BACSA,GAAG,CAACd,MAAM,CAACI,aAAa,CAAC;;;0DAGEU,GAAG,CAACd,MAAM,CAACG,QAAQ,CAAC;;;aAGjE;MAED,OAAOW,GAAG;+BACSA,GAAG,CAACd,MAAM,CAACE,WAAW,CAAC;;;;;;;;;aASzC;MACD,OAAOY,GAAG,mCAAmCA,GAAG,CAACd,MAAM,CAACE,WAAW,CAAC,sBAAsB;MAE1F,OAAOY,GAAG;+BACSA,GAAG,CAACd,MAAM,CAACK,cAAc,CAAC;;;;;;;uDAOFS,GAAG,CAACd,MAAM,CAACG,QAAQ,CAAC;0DACjBW,GAAG,CAACd,MAAM,CAACE,WAAW,CAAC;;;aAGpE;MACD,OAAOY,GAAG,sCAAsCA,GAAG,CAACd,MAAM,CAACK,cAAc,CAAC,eAAe;MACzF,OAAOS,GAAG,qCAAqCA,GAAG,CAACd,MAAM,CAACK,cAAc,CAAC,kDAAkD;IAC/H,CAAC;GACJ;CACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withStats = void 0;
7
+ var _effect = /*#__PURE__*/require("effect");
8
+ var _sql = /*#__PURE__*/require("effect/sql");
9
+ var _Classify = /*#__PURE__*/require("../Classify.js");
10
+ var _Classify2 = /*#__PURE__*/require("./Classify.js");
11
+ const decodeName = /*#__PURE__*/_effect.Schema.decodeUnknownEffect(/*#__PURE__*/_effect.Schema.Tuple([/*#__PURE__*/_effect.Schema.Struct({
12
+ name: _effect.Schema.String
13
+ })]));
14
+ const decodeTimes = /*#__PURE__*/_effect.Schema.decodeUnknownEffect(/*#__PURE__*/_effect.Schema.Tuple([/*#__PURE__*/_effect.Schema.Struct({
15
+ count: _effect.Schema.Int,
16
+ mean: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.Finite),
17
+ min: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.Finite),
18
+ max: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.Finite)
19
+ })]));
20
+ const decodeMedian = /*#__PURE__*/_effect.Schema.decodeUnknownEffect(/*#__PURE__*/_effect.Schema.Array(/*#__PURE__*/_effect.Schema.Struct({
21
+ timeMillis: _effect.Schema.Finite
22
+ })));
23
+ const withStats = exports.withStats = /*#__PURE__*/_effect.Effect.fnUntraced(function* (use) {
24
+ const sql = yield* _sql.SqlClient.SqlClient;
25
+ const [{
26
+ name
27
+ }] = yield* decodeName(yield* sql`SELECT 'tots_stats_' || lower(hex(randomblob(16))) AS name;`);
28
+ return yield* _effect.Effect.acquireUseRelease(sql`CREATE TEMP TABLE ${sql(name)} (hashTestCase TEXT PRIMARY KEY, timeMillis REAL NOT NULL);`, () => _effect.Effect.gen(function* () {
29
+ yield* sql`CREATE INDEX ${sql(`${name}_time`)} ON ${sql(name)} (timeMillis);`;
30
+ const counts = yield* _effect.Ref.make({
31
+ TP: 0,
32
+ TN: 0,
33
+ FP: 0,
34
+ FN: 0,
35
+ total: 0
36
+ });
37
+ const add = _effect.Effect.fnUntraced(function* (results) {
38
+ for (let offset = 0; offset < results.length; offset += 50) {
39
+ const batch = results.slice(offset, offset + 50);
40
+ yield* sql`
41
+ INSERT INTO ${sql(name)} ${sql.insert(batch.map(({
42
+ hashTestCase,
43
+ timeMillis
44
+ }) => ({
45
+ hashTestCase,
46
+ timeMillis
47
+ })))}
48
+ ON CONFLICT(hashTestCase) DO NOTHING;
49
+ `;
50
+ yield* _effect.Ref.update(counts, previous => {
51
+ const next = {
52
+ ...previous
53
+ };
54
+ for (const result of batch) {
55
+ next[result.label]++;
56
+ next.total++;
57
+ }
58
+ return next;
59
+ });
60
+ }
61
+ });
62
+ const stats = _effect.Effect.gen(function* () {
63
+ const totals = yield* _effect.Ref.get(counts);
64
+ const [times] = yield* decodeTimes(yield* sql`
65
+ SELECT COUNT(*) AS count, AVG(timeMillis) AS mean,
66
+ MIN(timeMillis) AS min, MAX(timeMillis) AS max FROM ${sql(name)};
67
+ `);
68
+ const middle = times.count === 0 ? [] : yield* decodeMedian(yield* sql`
69
+ SELECT timeMillis FROM ${sql(name)} ORDER BY timeMillis
70
+ LIMIT ${2 - times.count % 2} OFFSET ${Math.floor((times.count - 1) / 2)};
71
+ `);
72
+ return new _Classify.Stats({
73
+ ...totals,
74
+ testCases: times.count,
75
+ precision: (0, _Classify2.precision)(totals),
76
+ recall: (0, _Classify2.recall)(totals),
77
+ timeMin: _effect.Option.fromNullishOr(times.min),
78
+ timeMax: _effect.Option.fromNullishOr(times.max),
79
+ timeMean: _effect.Option.fromNullishOr(times.mean),
80
+ timeMedian: middle.length === 0 ? _effect.Option.none() : _effect.Option.some(middle.reduce((sum, row) => sum + row.timeMillis, 0) / middle.length)
81
+ });
82
+ });
83
+ return yield* use({
84
+ add,
85
+ stats
86
+ });
87
+ }), () => sql`DROP TABLE ${sql(name)};`.pipe(_effect.Effect.asVoid));
88
+ });
89
+ //# sourceMappingURL=test-result-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-result-stats.js","names":["_effect","require","_sql","_Classify","_Classify2","decodeName","Schema","decodeUnknownEffect","Tuple","Struct","name","String","decodeTimes","count","Int","mean","NullOr","Finite","min","max","decodeMedian","Array","timeMillis","withStats","exports","Effect","fnUntraced","use","sql","SqlClient","acquireUseRelease","gen","counts","Ref","make","TP","TN","FP","FN","total","add","results","offset","length","batch","slice","insert","map","hashTestCase","update","previous","next","result","label","stats","totals","get","times","middle","Math","floor","Stats","testCases","precision","recall","timeMin","Option","fromNullishOr","timeMax","timeMean","timeMedian","none","some","reduce","sum","row","pipe","asVoid"],"sources":["../../../src/internal/test-result-stats.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,6 @@ export declare const values: {
8
8
  readonly FP: 'FP';
9
9
  readonly FN: 'FN';
10
10
  };
11
- export declare const defaultIsEqual: typeof internal.defaultIsEqual;
12
11
  export declare const defaultIsNil: typeof internal.defaultIsNil;
13
12
  export declare const makeClassify: typeof internal.makeClassify;
14
13
  export type Classify<O, T> = (output: O, expected: T) => Label;
@@ -17,7 +16,10 @@ declare const Stats_base: Schema.Class<Stats, Schema.Struct<{
17
16
  readonly TN: Schema.Finite;
18
17
  readonly FP: Schema.Finite;
19
18
  readonly FN: Schema.Finite;
19
+ /** Number of evaluation results. */
20
20
  readonly total: Schema.Finite;
21
+ /** Number of distinct original test cases represented by those results. */
22
+ readonly testCases: Schema.Int;
21
23
  readonly precision: Schema.Finite;
22
24
  readonly recall: Schema.Finite;
23
25
  readonly timeMin: Schema.Option<Schema.Finite>;
@@ -25,6 +27,7 @@ declare const Stats_base: Schema.Class<Stats, Schema.Struct<{
25
27
  readonly timeMedian: Schema.Option<Schema.Finite>;
26
28
  readonly timeMean: Schema.Option<Schema.Finite>;
27
29
  }>, {}>;
30
+ /** Counts selected results; timing statistics count each selected case once. */
28
31
  export declare class Stats extends Stats_base {
29
32
  static empty(): Stats;
30
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Classify.d.ts","sourceRoot":"","sources":["../../src/Classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAEnD,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,MAAM,MAAM,KAAK,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAE5C,eAAO,MAAM,MAAM;;;;;CAAkB,CAAC;AACtC,eAAO,MAAM,cAAc,gCAA0B,CAAC;AACtD,eAAO,MAAM,YAAY,8BAAwB,CAAC;AAClD,eAAO,MAAM,YAAY,8BAAwB,CAAC;AAElD,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAC;;;;;;;;;;;;;;AAE/D,qBAAa,KAAM,SAAQ,UAYzB;IACE,MAAM,CAAC,KAAK,IAAI,KAAK,CAcpB;CACJ"}
1
+ {"version":3,"file":"Classify.d.ts","sourceRoot":"","sources":["../../src/Classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAEnD,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,MAAM,MAAM,KAAK,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAE5C,eAAO,MAAM,MAAM;;;;;CAAkB,CAAC;AACtC,eAAO,MAAM,YAAY,8BAAwB,CAAC;AAClD,eAAO,MAAM,YAAY,8BAAwB,CAAC;AAElD,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAC;;;;;;IAQ3D,oCAAoC;;IAEpC,2EAA2E;;;;;;;;;AAR/E,gFAAgF;AAChF,qBAAa,KAAM,SAAQ,UAezB;IACE,MAAM,CAAC,KAAK,IAAI,KAAK,CAepB;CACJ"}
@@ -1,39 +1,38 @@
1
- import { ResultLengthMismatch, SqlError } from 'effect/sql/SqlError';
1
+ import type { SqlError } from 'effect/sql/SqlError';
2
2
  import { Schema } from 'effect';
3
- declare const RepositoryQueryError_base: Schema.Class<RepositoryQueryError, Schema.TaggedStruct<"RepositoryQueryError", {
4
- readonly operation: Schema.String;
5
- readonly cause: Schema.instanceOf<SqlError, unknown>;
3
+ import type { TestValueError } from './TestValueError.js';
4
+ export { TestValueError } from './TestValueError.js';
5
+ declare const TestRunNotCreated_base: Schema.Class<TestRunNotCreated, Schema.TaggedStruct<"TestRunNotCreated", {
6
+ readonly testSuiteName: Schema.String;
6
7
  }>, import("effect/Cause").YieldableError & {
7
8
  readonly brand: unique symbol;
8
9
  }>;
9
- export declare class RepositoryQueryError extends RepositoryQueryError_base {
10
- static fromSql: (operation: string) => (cause: SqlError) => RepositoryQueryError;
10
+ export declare class TestRunNotCreated extends TestRunNotCreated_base {
11
11
  }
12
- declare const RepositoryWriteError_base: Schema.Class<RepositoryWriteError, Schema.TaggedStruct<"RepositoryWriteError", {
13
- readonly operation: Schema.String;
14
- readonly cause: Schema.Union<readonly [Schema.instanceOf<SqlError, unknown>, Schema.instanceOf<ResultLengthMismatch, unknown>]>;
12
+ declare const TestRunIncomplete_base: Schema.Class<TestRunIncomplete, Schema.TaggedStruct<"TestRunIncomplete", {
13
+ readonly testSuiteName: Schema.String;
14
+ readonly testRunId: Schema.Int;
15
+ readonly variant: Schema.String;
15
16
  }>, import("effect/Cause").YieldableError & {
16
17
  readonly brand: unique symbol;
17
18
  }>;
18
- export declare class RepositoryWriteError extends RepositoryWriteError_base {
19
- static from: (operation: string) => (cause: SqlError | ResultLengthMismatch) => RepositoryWriteError;
19
+ /** A complete saved run is required for this operation. */
20
+ export declare class TestRunIncomplete extends TestRunIncomplete_base {
20
21
  }
21
- declare const RepositoryDecodeError_base: Schema.Class<RepositoryDecodeError, Schema.TaggedStruct<"RepositoryDecodeError", {
22
- readonly operation: Schema.String;
23
- readonly cause: Schema.instanceOf<Schema.SchemaError, unknown>;
22
+ declare const TestRunNotFound_base: Schema.Class<TestRunNotFound, Schema.TaggedStruct<"TestRunNotFound", {
23
+ readonly testRunId: Schema.Int;
24
24
  }>, import("effect/Cause").YieldableError & {
25
25
  readonly brand: unique symbol;
26
26
  }>;
27
- export declare class RepositoryDecodeError extends RepositoryDecodeError_base {
28
- static from: (operation: string) => (cause: Schema.SchemaError) => RepositoryDecodeError;
27
+ export declare class TestRunNotFound extends TestRunNotFound_base {
29
28
  }
30
- declare const TestRunNotCreated_base: Schema.Class<TestRunNotCreated, Schema.TaggedStruct<"TestRunNotCreated", {
29
+ declare const TestBaselineNotFound_base: Schema.Class<TestBaselineNotFound, Schema.TaggedStruct<"TestBaselineNotFound", {
31
30
  readonly testSuiteName: Schema.String;
31
+ readonly variant: Schema.String;
32
32
  }>, import("effect/Cause").YieldableError & {
33
33
  readonly brand: unique symbol;
34
34
  }>;
35
- export declare class TestRunNotCreated extends TestRunNotCreated_base {
35
+ export declare class TestBaselineNotFound extends TestBaselineNotFound_base {
36
36
  }
37
- export type RepositoryError = RepositoryQueryError | RepositoryWriteError | RepositoryDecodeError | TestRunNotCreated;
38
- export {};
37
+ export type RepositoryError = SqlError | Schema.SchemaError | TestValueError | TestRunNotCreated | TestRunIncomplete | TestRunNotFound | TestBaselineNotFound;
39
38
  //# sourceMappingURL=RepositoryError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RepositoryError.d.ts","sourceRoot":"","sources":["../../src/RepositoryError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;;;;;oBAST,OAAO,MAAM;;AAFlC,qBAAa,oBAAqB,SAAQ,yBAMxC;IACE,MAAM,CAAC,OAAO,cAAe,MAAM,aAAa,QAAQ,0BACP;CACpD;;;;;oBAIoB,OAAO,MAAM;;AAFlC,qBAAa,oBAAqB,SAAQ,yBAG8B;IACpE,MAAM,CAAC,IAAI,cACK,MAAM,aAAa,QAAQ,GAAG,oBAAoB,0BACb;CACxD;;;;;oBAIoB,OAAO,MAAM;;AAFlC,qBAAa,qBAAsB,SAAQ,0BAMzC;IACE,MAAM,CAAC,IAAI,cAAe,MAAM,aAAa,MAAM,CAAC,WAAW,2BACb;CACrD;;;;oBAIoB,OAAO,MAAM;;AAFlC,qBAAa,iBAAkB,SAAQ,sBAGiB;CAAG;AAE3D,MAAM,MAAM,eAAe,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,CAAC"}
1
+ {"version":3,"file":"RepositoryError.d.ts","sourceRoot":"","sources":["../../src/RepositoryError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;;;;oBAI9B,OAAO,MAAM;;AAFlC,qBAAa,iBAAkB,SAAQ,sBAGiB;CAAG;;;;;;oBAKtC,OAAO,MAAM;;AAHlC,2DAA2D;AAC3D,qBAAa,iBAAkB,SAAQ,sBAOrC;CAAG;;;;oBAIgB,OAAO,MAAM;;AAFlC,qBAAa,eAAgB,SAAQ,oBAGU;CAAG;;;;;oBAI7B,OAAO,MAAM;;AAFlC,qBAAa,oBAAqB,SAAQ,yBAMxC;CAAG;AAEL,MAAM,MAAM,eAAe,GACrB,QAAQ,GACR,MAAM,CAAC,WAAW,GAClB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,oBAAoB,CAAC"}
@@ -2,8 +2,8 @@ import type { Option } from 'effect';
2
2
  import type { Stats } from './Classify.js';
3
3
  import type { Diff, TestResult } from './Test.js';
4
4
  export { showDiff as diff } from './internal/diff.js';
5
- export { showStats as stats } from './internal/stats.js';
6
- export { showSummary as summarize } from './internal/summarize.js';
5
+ export { showStats as stats, showRunSummaries as runSummaries, } from './internal/stats.js';
6
+ export { showSummary as summarize, prepareSummary, prepareComparison, } from './internal/summarize.js';
7
7
  export type DiffContext = {
8
8
  diff: Diff;
9
9
  };
@@ -16,19 +16,19 @@ export type DiffColumn = {
16
16
  export type StatsContext = {
17
17
  stats: Stats;
18
18
  };
19
- export type StatsColumnNames = 'total' | 'TP' | 'TN' | 'FP' | 'FN' | 'precision' | 'recall' | 'timeMin' | 'timeMax' | 'timeMean' | 'timeMedian';
19
+ export type StatsColumnNames = 'total' | 'testCases' | 'TP' | 'TN' | 'FP' | 'FN' | 'precision' | 'recall' | 'timeMin' | 'timeMax' | 'timeMean' | 'timeMedian';
20
20
  export type StatsColumn = {
21
21
  name: StatsColumnNames;
22
22
  label: string;
23
23
  make: (ctx: StatsContext) => string[];
24
24
  };
25
- export type SummarizeContext = {
25
+ export type SummarizeContext<I = unknown, O = unknown, T = unknown> = {
26
26
  i: number;
27
- hashes: string[];
28
- testResult: TestResult;
29
- previousTestResult: Option.Option<TestResult>;
27
+ resultKeys: string[];
28
+ testResult: TestResult<I, O, T>;
29
+ previousTestResult: Option.Option<TestResult<I, O, T>>;
30
30
  };
31
- export type SummarizeColumnNames = 'index' | 'hash' | 'timeMillis' | 'input' | 'tags' | 'label' | 'expected' | 'result' | 'result_diff' | 'prev_label' | 'prev_result' | 'prev_result_diff';
31
+ export type SummarizeColumnNames = 'index' | 'hash' | 'key' | 'timeMillis' | 'input' | 'tags' | 'label' | 'expected' | 'result' | 'result_diff' | 'prev_label' | 'prev_result' | 'prev_result_diff';
32
32
  export type SummarizeColumn = {
33
33
  name: SummarizeColumnNames;
34
34
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Show.d.ts","sourceRoot":"","sources":["../../src/Show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAC,QAAQ,IAAI,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,SAAS,IAAI,KAAK,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAC,WAAW,IAAI,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,IAAI,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,QAAQ,CAAC;AAEf,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACtB,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,YAAY,CAAC;AAEnB,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC1B,OAAO,GACP,MAAM,GACN,YAAY,GACZ,OAAO,GACP,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,aAAa,GACb,kBAAkB,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,EAAE,CAAC;CAC7C,CAAC"}
1
+ {"version":3,"file":"Show.d.ts","sourceRoot":"","sources":["../../src/Show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAC,QAAQ,IAAI,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACH,SAAS,IAAI,KAAK,EAClB,gBAAgB,IAAI,YAAY,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,WAAW,IAAI,SAAS,EACxB,cAAc,EACd,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,IAAI,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,QAAQ,CAAC;AAEf,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACtB,OAAO,GACP,WAAW,GACX,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,YAAY,CAAC;AAEnB,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI;IAClE,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC1B,OAAO,GACP,MAAM,GACN,KAAK,GACL,YAAY,GACZ,OAAO,GACP,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,aAAa,GACb,kBAAkB,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,EAAE,CAAC;CAC7C,CAAC"}
@@ -1,16 +1,101 @@
1
- import { Effect, Option, type Stream } from 'effect';
2
- import type { Classify, Label, Stats } from './Classify.js';
1
+ import { type Array, type Effect, type Option, Schema, type Stream } from 'effect';
2
+ import type { Label, Stats } from './Classify.js';
3
3
  import * as internal from './internal/Test.js';
4
4
  import type { TestRun, TestResultSchemas } from './Test.repository.js';
5
- export type TestSuiteSchemas<I, O, T> = TestResultSchemas<I, O, T>;
5
+ /** Codecs must encode deterministically and preserve values through JSON. */
6
+ export type TestSuiteSchemas<I, T, A, B> = TestResultSchemas<I, A, B> & {
7
+ testCase: {
8
+ expected: Schema.Codec<T, unknown>;
9
+ };
10
+ };
6
11
  export type TestCases<I, T, E = never, R = never> = ReadonlyArray<TestCase<I, T>> | Stream.Stream<TestCase<I, T>, E, R>;
7
- export type TestSuite<I = unknown, O = unknown, T = unknown, E = never, R = never> = {
8
- testCases: TestCases<I, T, E, R>;
12
+ export type EvaluationResult<A, B> = {
13
+ /** Non-empty and unique within the case. Keep it stable across runs. */
14
+ readonly key: string;
15
+ readonly result: A;
16
+ readonly expected: B;
17
+ readonly label: Label;
18
+ };
19
+ /**
20
+ * Returns the results to track for one completed output. Keep this function pure.
21
+ * Return at least one result, in display order. Each key must be non-empty and
22
+ * unique within the case.
23
+ */
24
+ export type Evaluate<O, T, A = O, B = T> = (output: O, expected: T) => Array.NonEmptyReadonlyArray<EvaluationResult<A, B>>;
25
+ export type TestSuitePrograms<I, O, E, R> = {
9
26
  program: Program<I, O, E, R>;
10
- classify?: Classify<O, T>;
11
- name: string;
12
- schemas?: TestSuiteSchemas<I, O, T>;
27
+ variants?: never;
28
+ } | {
29
+ program?: never;
30
+ variants: Readonly<Record<string, {
31
+ program: Program<I, O, E, R>;
32
+ }>>;
33
+ };
34
+ type SuiteProgram<S> = S extends {
35
+ program: infer P;
36
+ } ? P : S extends {
37
+ variants: infer V;
38
+ } ? V[keyof V] extends {
39
+ program: infer P;
40
+ } ? P : never : never;
41
+ type ProgramEffect<S> = SuiteProgram<S> extends (...args: never[]) => infer F ? F : never;
42
+ /** Errors from every configured program and from the case stream. */
43
+ export type TestSuiteError<S> = Effect.Error<ProgramEffect<S>> | Stream.Error<S extends {
44
+ testCases: infer C;
45
+ } ? C : never>;
46
+ /** Callers provide all services used by any program or the case stream. */
47
+ export type TestSuiteServices<S> = Effect.Services<ProgramEffect<S>> | Stream.Services<S extends {
48
+ testCases: infer C;
49
+ } ? C : never>;
50
+ /**
51
+ * Keep source effect types. Skip `evaluate` during inference so the suite supplies
52
+ * its callback parameter types.
53
+ */
54
+ export type InferTestSuite<S> = {
55
+ [K in keyof S]: K extends 'evaluate' ? unknown : S[K];
13
56
  };
57
+ export type SelectedProgram<S> = Program<SuiteProgram<S> extends (input: infer I) => unknown ? I : never, Effect.Success<ProgramEffect<S>>, Effect.Error<ProgramEffect<S>>, Effect.Services<ProgramEffect<S>>>;
58
+ declare const TestVariantRequired_base: Schema.Class<TestVariantRequired, Schema.TaggedStruct<"TestVariantRequired", {
59
+ readonly testSuiteName: Schema.String;
60
+ }>, import("effect/Cause").YieldableError & {
61
+ readonly brand: unique symbol;
62
+ }>;
63
+ export declare class TestVariantRequired extends TestVariantRequired_base {
64
+ }
65
+ declare const TestVariantNotFound_base: Schema.Class<TestVariantNotFound, Schema.TaggedStruct<"TestVariantNotFound", {
66
+ readonly testSuiteName: Schema.String;
67
+ readonly variant: Schema.String;
68
+ }>, import("effect/Cause").YieldableError & {
69
+ readonly brand: unique symbol;
70
+ }>;
71
+ export declare class TestVariantNotFound extends TestVariantNotFound_base {
72
+ }
73
+ /**
74
+ * Defines either one `program` or named `variants` that share cases, schemas,
75
+ * and evaluation. A single program has the permanent variant ID `default`.
76
+ * Named variants need an explicit selection, even when there is only one.
77
+ * Variant IDs must be non-empty, contain no commas, and not start with `run:`.
78
+ * Editing a program keeps its history; changing its ID starts another history.
79
+ * An empty `variants` map keeps saved runs readable after all programs are removed.
80
+ *
81
+ * Runs the selected program once per distinct input/expected-value hash, then
82
+ * evaluates its output. Later duplicates are warned about and skipped; the first
83
+ * case's tags are kept. `O` and `T` describe the whole output and expected value;
84
+ * `A` and `B` describe the evaluated values.
85
+ * Without `evaluate`, reuse the same schema for evaluation.result and
86
+ * evaluation.expected. Schema equality produces one result with key `result`.
87
+ */
88
+ export type TestSuite<I = unknown, O = unknown, T = unknown, E = never, R = never, A = O, B = T> = {
89
+ name: string;
90
+ } & (({
91
+ schemas: TestSuiteSchemas<I, T, A, B>;
92
+ testCases: TestCases<I, T, E, R>;
93
+ evaluate: Evaluate<O, T, A, B>;
94
+ } & TestSuitePrograms<I, O, E, R>) | ({
95
+ schemas: TestSuiteSchemas<I, T & NoInfer<B>, A, B>;
96
+ testCases: TestCases<I, T & NoInfer<B>, E, R>;
97
+ evaluate?: undefined;
98
+ } & TestSuitePrograms<I, O & NoInfer<A>, E, R>));
14
99
  export type TestCase<I, T> = {
15
100
  input: I;
16
101
  expected: T;
@@ -19,17 +104,27 @@ export type TestCase<I, T> = {
19
104
  export type Program<I, O, E = never, R = never> = (input: I) => Effect.Effect<O, E, R>;
20
105
  export type TestResult<I = unknown, O = unknown, T = unknown> = {
21
106
  id: string;
107
+ /** Hash of the original input and expected value, shared by all case results. */
22
108
  hashTestCase: string;
109
+ key: string;
110
+ /** Zero-based position of the case in the suite. */
23
111
  ordering: number;
112
+ /** Zero-based position of the result in the case's evaluation array. */
113
+ resultOrdering: number;
24
114
  label: Label;
25
115
  input: I;
26
116
  result: O;
27
117
  expected: T;
28
118
  tags: readonly string[];
119
+ /** Program duration for the case, shared by all its results. */
29
120
  timeMillis: number;
30
121
  };
31
- export type TestRunResults<I = unknown, O = unknown, T = unknown> = TestRun & {
32
- testResultsByTestCaseHash: Record<string, TestResult<I, O, T>>;
122
+ export type TestRunResults<I = unknown, O = unknown, T = unknown> = Pick<TestRun, 'id' | 'name' | 'variant' | 'state'> & {
123
+ /** Indexed by `resultKey`, which combines the case hash and evaluation key. */
124
+ testResultsByKey: Record<string, TestResult<I, O, T>>;
125
+ /** Keys into `testResultsByKey`, in display order. */
126
+ testResultKeys: string[];
127
+ /** Distinct case hashes, in display order. */
33
128
  testCaseHashes: string[];
34
129
  stats: Stats;
35
130
  };
@@ -41,8 +136,57 @@ export type TestResultPredicate<I, O, T> = (args: {
41
136
  testResult: TestResult<I, O, T>;
42
137
  previousTestResult: Option.Option<TestResult<I, O, T>>;
43
138
  }) => boolean;
139
+ export type TestResultComparison<I, A, B> = {
140
+ _tag: 'Matched';
141
+ from: TestResult<I, A, B>;
142
+ to: TestResult<I, A, B>;
143
+ changed: boolean;
144
+ } | {
145
+ _tag: 'OnlyFrom';
146
+ from: TestResult<I, A, B>;
147
+ } | {
148
+ _tag: 'OnlyTo';
149
+ to: TestResult<I, A, B>;
150
+ };
151
+ /** Selects a program without running it or requiring its services. */
152
+ export declare const selectVariant: typeof internal.selectVariant;
153
+ /**
154
+ * Runs only the selected program. Its error and service types include every
155
+ * configured program and the case stream, even when the variant ID is a literal.
156
+ */
44
157
  export declare const all: typeof internal.all;
158
+ /**
159
+ * Compares complete saved runs without evaluating again. The shared codecs must
160
+ * decode both runs and require no Effect services. Callers decide whether comparing
161
+ * different suites or program versions is meaningful.
162
+ *
163
+ * Results match by case hash and evaluation key. A match changes when its label
164
+ * or evaluated values change. Rows follow `to` order, followed by rows found only
165
+ * in `from`, in `from` order. Empty complete runs are valid comparison endpoints.
166
+ * Resolve missing baselines before calling; both endpoints must be saved runs.
167
+ * Incompatible codecs fail with `TestValueError`, which names the saved suite.
168
+ */
169
+ export declare const compareRuns: typeof internal.compareRuns;
170
+ /**
171
+ * Summarizes all matching results in a complete saved run. Each case contributes
172
+ * its timing once. Empty complete runs have zero counts and no timing values.
173
+ * The shared codecs must still read that run. The caller decides whether the
174
+ * stored values still have the same meaning. Resolve a missing baseline before
175
+ * calling; it differs from an empty run.
176
+ */
177
+ export declare const summarizeRun: <I, A, B>(args_0: {
178
+ run: TestRun;
179
+ schemas: TestResultSchemas<I, A, B>;
180
+ predicate?: (result: TestResult<I, A, B>) => boolean;
181
+ }) => Effect.Effect<{
182
+ run: TestRun;
183
+ stats: Stats;
184
+ }, import("./RepositoryError.ts").RepositoryError, import("./Test.repository.js").TestRepository>;
45
185
  export declare const diff: typeof internal.diff;
46
- export declare const makeSha256: typeof internal.makeSha256;
186
+ /** Builds the lookup key for one evaluation within its original test case. */
187
+ export declare const resultKey: typeof internal.resultKey;
47
188
  export declare const runCollectRecord: typeof internal.runCollectRecord;
189
+ /** Keeps matching results and recalculates counts and case timing statistics. */
190
+ export declare const filterResults: typeof internal.filterResults;
191
+ export {};
48
192
  //# sourceMappingURL=Test.d.ts.map