@creative-introvert/tons-of-tests 2.0.0 → 2.1.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 (44) hide show
  1. package/README.md +157 -134
  2. package/dist/cjs/Classify.js +5 -0
  3. package/dist/cjs/Classify.js.map +1 -1
  4. package/dist/cjs/Test.js +5 -1
  5. package/dist/cjs/Test.js.map +1 -1
  6. package/dist/cjs/Test.repository.types.js.map +1 -1
  7. package/dist/cjs/internal/Test.js +107 -54
  8. package/dist/cjs/internal/Test.js.map +1 -1
  9. package/dist/cjs/internal/Test.repository.sqlite.js +77 -20
  10. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  11. package/dist/cjs/internal/stats.js +8 -2
  12. package/dist/cjs/internal/stats.js.map +1 -1
  13. package/dist/cjs/internal/summarize.js +18 -13
  14. package/dist/cjs/internal/summarize.js.map +1 -1
  15. package/dist/dts/Classify.d.ts +4 -0
  16. package/dist/dts/Classify.d.ts.map +1 -1
  17. package/dist/dts/Show.d.ts +3 -3
  18. package/dist/dts/Show.d.ts.map +1 -1
  19. package/dist/dts/Test.d.ts +46 -8
  20. package/dist/dts/Test.d.ts.map +1 -1
  21. package/dist/dts/Test.repository.d.ts +3 -3
  22. package/dist/dts/Test.repository.d.ts.map +1 -1
  23. package/dist/dts/Test.repository.types.d.ts +6 -0
  24. package/dist/dts/Test.repository.types.d.ts.map +1 -1
  25. package/dist/dts/internal/Test.d.ts +15 -10
  26. package/dist/dts/internal/Test.d.ts.map +1 -1
  27. package/dist/dts/internal/Test.repository.sqlite.d.ts +2 -1
  28. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  29. package/dist/dts/internal/stats.d.ts.map +1 -1
  30. package/dist/dts/internal/summarize.d.ts.map +1 -1
  31. package/dist/esm/Classify.js +5 -0
  32. package/dist/esm/Classify.js.map +1 -1
  33. package/dist/esm/Test.js +4 -0
  34. package/dist/esm/Test.js.map +1 -1
  35. package/dist/esm/Test.repository.types.js.map +1 -1
  36. package/dist/esm/internal/Test.js +104 -53
  37. package/dist/esm/internal/Test.js.map +1 -1
  38. package/dist/esm/internal/Test.repository.sqlite.js +77 -20
  39. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  40. package/dist/esm/internal/stats.js +8 -2
  41. package/dist/esm/internal/stats.js.map +1 -1
  42. package/dist/esm/internal/summarize.js +18 -13
  43. package/dist/esm/internal/summarize.js.map +1 -1
  44. package/package.json +1 -1
@@ -9,35 +9,48 @@ export const makeSha256 = input => {
9
9
  const TestResult = {
10
10
  make: args => {
11
11
  const {
12
+ hashTestCase,
13
+ key,
12
14
  label,
13
15
  input,
14
16
  result,
15
17
  expected
16
18
  } = args;
17
- // Without `ordering`, in case the user decides to re-order test cases,
18
- // which shouldn't change the identity of the test result.
19
- // Without `tags`, as those are just for filtering.
19
+ // Reordering cases or evaluations must not change a result's identity.
20
+ // Tags and timing also stay out of the ID.
20
21
  const id = makeSha256({
22
+ hashTestCase,
23
+ key,
21
24
  label,
22
25
  input,
23
26
  result,
24
27
  expected
25
28
  });
26
- const hashTestCase = makeSha256({
27
- input,
28
- expected
29
- });
30
29
  return {
31
30
  ...args,
32
- id,
33
- hashTestCase
31
+ id
34
32
  };
35
33
  }
36
34
  };
35
+ export const resultKey = ({
36
+ hashTestCase,
37
+ key
38
+ }) => JSON.stringify([hashTestCase, key]);
39
+ const defaultClassify = /*#__PURE__*/makeClassify({
40
+ isEqual: defaultIsEqual
41
+ });
42
+ const defaultEvaluate = (result, expected) => [{
43
+ key: 'result',
44
+ result,
45
+ expected,
46
+ label: defaultClassify(result, expected)
47
+ }];
37
48
  export const TestResultSchema = /*#__PURE__*/Schema.Struct({
38
49
  id: Schema.String,
39
50
  hashTestCase: Schema.String,
51
+ key: Schema.String,
40
52
  ordering: Schema.Int,
53
+ resultOrdering: Schema.Int,
41
54
  input: Schema.Unknown,
42
55
  result: Schema.Unknown,
43
56
  expected: Schema.Unknown,
@@ -53,32 +66,56 @@ export const test = /*#__PURE__*/Effect.fnUntraced(function* ({
53
66
  ordering
54
67
  },
55
68
  program,
56
- classify
69
+ evaluate
57
70
  }) {
71
+ const hashTestCase = makeSha256({
72
+ input,
73
+ expected
74
+ });
58
75
  const t0 = yield* Clock.currentTimeNanos;
59
76
  const result = yield* program(input);
60
77
  const t1 = yield* Clock.currentTimeNanos;
61
- return TestResult.make({
78
+ const evaluations = evaluate(result, expected);
79
+ if (evaluations.length === 0) {
80
+ return yield* Effect.die(new Error('evaluate must return at least one result'));
81
+ }
82
+ const keys = new Set();
83
+ for (const {
84
+ key
85
+ } of evaluations) {
86
+ if (key.length === 0 || keys.has(key)) {
87
+ return yield* Effect.die(new Error('evaluate must return non-empty keys that are unique within each test case'));
88
+ }
89
+ keys.add(key);
90
+ }
91
+ return evaluations.map((evaluation, resultOrdering) => TestResult.make({
92
+ ...evaluation,
93
+ hashTestCase,
62
94
  ordering,
95
+ resultOrdering,
63
96
  input,
64
- result,
65
- expected,
66
97
  tags: tags ?? [],
67
- label: classify(result, expected),
68
98
  timeMillis: Number(t1 - t0) / 1_000_000
69
- });
99
+ }));
70
100
  });
71
- export const all = ({
72
- testCases,
73
- program,
74
- classify = makeClassify({
75
- isEqual: defaultIsEqual
76
- })
77
- }, {
101
+ export const all = (suite, {
78
102
  concurrency
79
103
  } = {
80
104
  concurrency: 1
81
105
  }) => {
106
+ if (suite.evaluate === undefined) {
107
+ return all({
108
+ ...suite,
109
+ evaluate: defaultEvaluate
110
+ }, {
111
+ concurrency
112
+ });
113
+ }
114
+ const {
115
+ testCases,
116
+ program,
117
+ evaluate
118
+ } = suite;
82
119
  const total = Stream.isStream(testCases) ? undefined : testCases.length;
83
120
  const testCases$ = Stream.isStream(testCases) ? testCases : Stream.fromIterable(testCases);
84
121
  return pipe(testCases$, Stream.zipWithIndex, Stream.map(([testCase, ordering]) => ({
@@ -87,50 +124,54 @@ export const all = ({
87
124
  })), Stream.mapEffect(testCase => test({
88
125
  testCase,
89
126
  program,
90
- classify
127
+ evaluate
91
128
  }), {
92
129
  concurrency,
93
130
  unordered: false
94
- }), Stream.tap(testResult => {
95
- const i = testResult.ordering + 1;
131
+ }), Stream.tap(testResults => {
132
+ const i = testResults[0].ordering + 1;
96
133
  const stride = total === undefined ? 10 : Math.max(Math.floor(total * 0.05), 10);
97
134
  const isMilestone = i === 1 || i % stride === 0 || total !== undefined && i === total;
98
135
  if (!isMilestone) return Effect.void;
99
136
  return Effect.logDebug(total === undefined ? `progress ${i}` : `progress ${i}/${total}`);
100
- }));
137
+ }), Stream.flattenIterable);
101
138
  };
102
139
  const emptyAcc = () => ({
103
- testResultsByTestCaseHash: {},
104
- testCaseHashes: [],
105
- times: [],
140
+ testResultsByKey: {},
141
+ testResultKeys: [],
142
+ timesByTestCaseHash: new Map(),
106
143
  TP: 0,
107
144
  TN: 0,
108
145
  FP: 0,
109
- FN: 0,
110
- timeSum: 0,
111
- timeMin: Number.POSITIVE_INFINITY,
112
- timeMax: Number.NEGATIVE_INFINITY
146
+ FN: 0
113
147
  });
114
- export const runCollectRecord = testRun => testResults$ => testResults$.pipe(Stream.run(
115
- // Each run owns its accumulator, so updates can happen in place.
116
- Sink.reduce(emptyAcc, (acc, r) => {
117
- acc.testResultsByTestCaseHash[r.hashTestCase] = r;
118
- acc.testCaseHashes.push(r.hashTestCase);
119
- acc.times.push(r.timeMillis);
120
- acc.timeSum += r.timeMillis;
121
- if (r.timeMillis < acc.timeMin) acc.timeMin = r.timeMillis;
122
- if (r.timeMillis > acc.timeMax) acc.timeMax = r.timeMillis;
148
+ const appendResult = (acc, r) => {
149
+ const key = resultKey(r);
150
+ acc.testResultsByKey[key] = r;
151
+ acc.testResultKeys.push(key);
152
+ if (!acc.timesByTestCaseHash.has(r.hashTestCase)) {
153
+ acc.timesByTestCaseHash.set(r.hashTestCase, r.timeMillis);
154
+ }
123
155
  if (r.label === 'TP') acc.TP++;else if (r.label === 'TN') acc.TN++;else if (r.label === 'FP') acc.FP++;else acc.FN++;
124
156
  return acc;
125
- })), Effect.map(acc => {
126
- const total = acc.testCaseHashes.length;
127
- const hasTimes = acc.times.length > 0;
157
+ };
158
+ const finish = (testRun, acc) => {
159
+ const times = [...acc.timesByTestCaseHash.values()];
160
+ let timeSum = 0;
161
+ let timeMin = Number.POSITIVE_INFINITY;
162
+ let timeMax = Number.NEGATIVE_INFINITY;
163
+ for (const time of times) {
164
+ timeSum += time;
165
+ if (time < timeMin) timeMin = time;
166
+ if (time > timeMax) timeMax = time;
167
+ }
128
168
  const stats = new Stats({
129
169
  TP: acc.TP,
130
170
  TN: acc.TN,
131
171
  FP: acc.FP,
132
172
  FN: acc.FN,
133
- total,
173
+ total: acc.testResultKeys.length,
174
+ testCases: acc.timesByTestCaseHash.size,
134
175
  precision: precision({
135
176
  TP: acc.TP,
136
177
  FP: acc.FP
@@ -139,20 +180,30 @@ Sink.reduce(emptyAcc, (acc, r) => {
139
180
  TP: acc.TP,
140
181
  FN: acc.FN
141
182
  }),
142
- timeMean: hasTimes ? Option.some(acc.timeSum / acc.times.length) : Option.none(),
143
- timeMin: hasTimes ? Option.some(acc.timeMin) : Option.none(),
144
- timeMax: hasTimes ? Option.some(acc.timeMax) : Option.none(),
145
- timeMedian: median(acc.times)
183
+ timeMean: times.length > 0 ? Option.some(timeSum / times.length) : Option.none(),
184
+ timeMin: times.length > 0 ? Option.some(timeMin) : Option.none(),
185
+ timeMax: times.length > 0 ? Option.some(timeMax) : Option.none(),
186
+ timeMedian: median(times)
146
187
  });
147
188
  return {
148
189
  id: testRun.id,
149
190
  name: testRun.name,
150
191
  hash: testRun.hash,
151
- testResultsByTestCaseHash: acc.testResultsByTestCaseHash,
152
- testCaseHashes: acc.testCaseHashes,
192
+ testResultsByKey: acc.testResultsByKey,
193
+ testResultKeys: acc.testResultKeys,
194
+ testCaseHashes: [...acc.timesByTestCaseHash.keys()],
153
195
  stats
154
196
  };
155
- }));
197
+ };
198
+ export const runCollectRecord = testRun => testResults$ => testResults$.pipe(Stream.run(Sink.reduce(emptyAcc, appendResult)), Effect.map(acc => finish(testRun, acc)));
199
+ export const filterResults = (testRun, predicate) => {
200
+ const acc = emptyAcc();
201
+ for (const key of testRun.testResultKeys) {
202
+ const result = testRun.testResultsByKey[key];
203
+ if (predicate(result)) appendResult(acc, result);
204
+ }
205
+ return finish(testRun, acc);
206
+ };
156
207
  export const diff = ({
157
208
  testRun: {
158
209
  stats
@@ -1 +1 @@
1
- {"version":3,"file":"Test.js","names":["createHash","Clock","Effect","Option","pipe","Schema","Sink","Stream","Stats","defaultIsEqual","LabelSchema","makeClassify","median","precision","recall","makeSha256","input","update","JSON","stringify","digest","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Struct","String","ordering","Int","Unknown","tags","Array","timeMillis","Finite","test","fnUntraced","testCase","program","classify","t0","currentTimeNanos","t1","Number","all","testCases","isEqual","concurrency","total","isStream","undefined","length","testCases$","fromIterable","zipWithIndex","map","mapEffect","unordered","tap","testResult","i","stride","Math","max","floor","isMilestone","void","logDebug","emptyAcc","testResultsByTestCaseHash","testCaseHashes","times","TP","TN","FP","FN","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","runCollectRecord","testRun","testResults$","run","reduce","acc","r","push","hasTimes","stats","timeMean","some","none","timeMedian","name","hash","diff","previousTestRun","match","onNone","onSome","previousStats"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.js","names":["createHash","Clock","Effect","Option","pipe","Schema","Sink","Stream","Stats","defaultIsEqual","LabelSchema","makeClassify","median","precision","recall","makeSha256","input","update","JSON","stringify","digest","TestResult","make","args","hashTestCase","key","label","result","expected","id","resultKey","defaultClassify","isEqual","defaultEvaluate","TestResultSchema","Struct","String","ordering","Int","resultOrdering","Unknown","tags","Array","timeMillis","Finite","test","fnUntraced","testCase","program","evaluate","t0","currentTimeNanos","t1","evaluations","length","die","Error","keys","Set","has","add","map","evaluation","Number","all","suite","concurrency","undefined","testCases","total","isStream","testCases$","fromIterable","zipWithIndex","mapEffect","unordered","tap","testResults","i","stride","Math","max","floor","isMilestone","void","logDebug","flattenIterable","emptyAcc","testResultsByKey","testResultKeys","timesByTestCaseHash","Map","TP","TN","FP","FN","appendResult","acc","r","push","set","finish","testRun","times","values","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","time","stats","size","timeMean","some","none","timeMedian","name","hash","testCaseHashes","runCollectRecord","testResults$","run","reduce","filterResults","predicate","diff","previousTestRun","match","onNone","onSome","previousStats"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,9 @@ export const tables = {
14
14
  const TestResultWriteSchema = /*#__PURE__*/Schema.Struct({
15
15
  id: Schema.String,
16
16
  hashTestCase: Schema.String,
17
+ key: Schema.String,
17
18
  ordering: Schema.Int,
19
+ resultOrdering: Schema.Int,
18
20
  input: /*#__PURE__*/Schema.fromJsonString(Schema.Unknown),
19
21
  result: /*#__PURE__*/Schema.fromJsonString(Schema.Unknown),
20
22
  expected: /*#__PURE__*/Schema.fromJsonString(Schema.Unknown),
@@ -36,31 +38,40 @@ const CountSchema = /*#__PURE__*/Schema.Tuple([Schema.Struct({
36
38
  const TestRunsReadSchema = /*#__PURE__*/Schema.Array(TestRun);
37
39
  const TestRunResultsSchema = /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
38
40
  testRun: Schema.Int,
39
- testResult: Schema.String
41
+ testResult: Schema.String,
42
+ ordering: Schema.Int,
43
+ resultOrdering: Schema.Int,
44
+ timeMillis: Schema.Finite
45
+ }));
46
+ const TableColumnsSchema = /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
47
+ name: Schema.String
40
48
  }));
41
49
  export const makeTestRepository = /*#__PURE__*/Effect.gen(function* () {
42
50
  const sql = yield* SqlClient.SqlClient;
43
51
  yield* sql`PRAGMA auto_vacuum = FULL;`;
44
- yield* sql`
52
+ yield* sql.withTransaction(Effect.gen(function* () {
53
+ yield* sql`
45
54
  CREATE TABLE IF NOT EXISTS ${sql(tables.testRuns)}(
46
55
  id INTEGER PRIMARY KEY AUTOINCREMENT,
47
56
  name TEXT NOT NULL,
48
57
  hash TEXT
49
58
  );
50
59
  `;
51
- yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
52
- // At most one "current" (hash IS NULL) row per suite name. Partial index
53
- // so committed rows are unaffected.
54
- yield* sql`
60
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
61
+ // At most one "current" (hash IS NULL) row per suite name. Partial index
62
+ // so committed rows are unaffected.
63
+ yield* sql`
55
64
  CREATE UNIQUE INDEX IF NOT EXISTS idx_current_per_name
56
65
  ON ${sql(tables.testRuns)}(name)
57
66
  WHERE hash IS NULL;
58
67
  `;
59
- yield* sql`
68
+ yield* sql`
60
69
  CREATE TABLE IF NOT EXISTS ${sql(tables.testResults)}(
61
70
  id TEXT PRIMARY KEY,
62
71
  hashTestCase TEXT NOT NULL,
72
+ key TEXT NOT NULL DEFAULT 'result',
63
73
  ordering INTEGER NOT NULL,
74
+ resultOrdering INTEGER NOT NULL DEFAULT 0,
64
75
  input TEXT,
65
76
  result TEXT,
66
77
  expected TEXT,
@@ -69,23 +80,57 @@ export const makeTestRepository = /*#__PURE__*/Effect.gen(function* () {
69
80
  timeMillis INTEGER NOT NULL
70
81
  );
71
82
  `;
72
- yield* sql`
83
+ yield* sql`
73
84
  CREATE TABLE IF NOT EXISTS ${sql(tables.testRunResults)}(
74
85
  testRun INTEGER NOT NULL,
75
86
  testResult TEXT NOT NULL,
87
+ ordering INTEGER NOT NULL,
88
+ resultOrdering INTEGER NOT NULL,
89
+ timeMillis INTEGER NOT NULL,
76
90
  FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
77
91
  FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
78
92
  UNIQUE (testRun, testResult)
79
93
  );
80
94
  `;
81
- // Lookup by the junction's `testResult` column: the existing
82
- // UNIQUE(testRun, testResult) index is keyed on testRun first, so orphan
83
- // cleanup (`... NOT IN (SELECT testResult ...)`) and stream joins
84
- // (`res.id = runres.testResult`) would otherwise full-scan the junction.
85
- yield* sql`CREATE INDEX IF NOT EXISTS idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult)`;
86
- yield* sql`CREATE INDEX IF NOT EXISTS idx_tr_hashtestcase ON ${sql(tables.testResults)}(hashTestCase)`;
87
- // SQLite's default SQLITE_MAX_VARIABLE_NUMBER is 999; testResults has 9
88
- // columns and junction rows 2, so 50 rows stays well under the limit.
95
+ const resultColumns = yield* Schema.decodeUnknownEffect(TableColumnsSchema)(yield* sql`PRAGMA table_info(${sql(tables.testResults)});`).pipe(Effect.mapError(RepositoryDecodeError.from('migrateTestResults')));
96
+ if (!resultColumns.some(column => column.name === 'key')) {
97
+ yield* sql`
98
+ ALTER TABLE ${sql(tables.testResults)}
99
+ ADD COLUMN key TEXT NOT NULL DEFAULT 'result';
100
+ `;
101
+ }
102
+ if (!resultColumns.some(column => column.name === 'resultOrdering')) {
103
+ yield* sql`
104
+ ALTER TABLE ${sql(tables.testResults)}
105
+ ADD COLUMN resultOrdering INTEGER NOT NULL DEFAULT 0;
106
+ `;
107
+ }
108
+ const runResultColumns = yield* Schema.decodeUnknownEffect(TableColumnsSchema)(yield* sql`PRAGMA table_info(${sql(tables.testRunResults)});`).pipe(Effect.mapError(RepositoryDecodeError.from('migrateTestRunResults')));
109
+ for (const column of ['ordering', 'resultOrdering', 'timeMillis']) {
110
+ if (runResultColumns.some(existing => existing.name === column)) {
111
+ continue;
112
+ }
113
+ yield* sql`
114
+ ALTER TABLE ${sql(tables.testRunResults)}
115
+ ADD COLUMN ${sql(column)} INTEGER NOT NULL DEFAULT 0;
116
+ `;
117
+ yield* sql`
118
+ UPDATE ${sql(tables.testRunResults)} AS runres
119
+ SET ${sql(column)} = (
120
+ SELECT ${sql(column)} FROM ${sql(tables.testResults)} res
121
+ WHERE res.id = runres.testResult
122
+ );
123
+ `;
124
+ }
125
+ // Lookup by the junction's `testResult` column: the existing
126
+ // UNIQUE(testRun, testResult) index is keyed on testRun first, so orphan
127
+ // cleanup (`... NOT IN (SELECT testResult ...)`) and stream joins
128
+ // (`res.id = runres.testResult`) would otherwise full-scan the junction.
129
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult)`;
130
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_tr_hashtestcase ON ${sql(tables.testResults)}(hashTestCase)`;
131
+ }));
132
+ // With 11 result columns and 5 junction columns, batches of 50 rows stay below
133
+ // SQLite's lowest default limit of 999 bound values per statement.
89
134
  const INSERT_BATCH_SIZE = 50;
90
135
  const insertTestResults = (testResults, testRun) => sql.withTransaction(Effect.gen(function* () {
91
136
  if (testResults.length === 0) return;
@@ -102,14 +147,20 @@ export const makeTestRepository = /*#__PURE__*/Effect.gen(function* () {
102
147
  // so no correlated subquery.
103
148
  const junction = encoded.map(_ => ({
104
149
  testRun: testRun.id,
105
- testResult: _.id
150
+ testResult: _.id,
151
+ ordering: _.ordering,
152
+ resultOrdering: _.resultOrdering,
153
+ timeMillis: _.timeMillis
106
154
  }));
107
155
  for (let i = 0; i < junction.length; i += INSERT_BATCH_SIZE) {
108
156
  const chunk = junction.slice(i, i + INSERT_BATCH_SIZE);
109
157
  yield* sql`
110
158
  INSERT INTO ${sql(tables.testRunResults)}
111
159
  ${sql.insert(chunk)}
112
- ON CONFLICT(testRun, testResult) DO NOTHING;
160
+ ON CONFLICT(testRun, testResult) DO UPDATE SET
161
+ ordering = excluded.ordering,
162
+ resultOrdering = excluded.resultOrdering,
163
+ timeMillis = excluded.timeMillis;
113
164
  `.pipe(Effect.mapError(RepositoryWriteError.from('insertTestResults')));
114
165
  }
115
166
  })).pipe(Effect.catchTag('SqlError', e => Effect.fail(RepositoryWriteError.from('insertTestResults')(e))));
@@ -121,7 +172,9 @@ export const makeTestRepository = /*#__PURE__*/Effect.gen(function* () {
121
172
  return Schema.Struct({
122
173
  id: Schema.String,
123
174
  hashTestCase: Schema.String,
175
+ key: Schema.String,
124
176
  ordering: Schema.Int,
177
+ resultOrdering: Schema.Int,
125
178
  input: Schema.fromJsonString(input),
126
179
  result: Schema.fromJsonString(result),
127
180
  expected: Schema.fromJsonString(expected),
@@ -137,11 +190,15 @@ export const makeTestRepository = /*#__PURE__*/Effect.gen(function* () {
137
190
  // before exposing it as a stream.
138
191
  return Stream.unwrap(Effect.gen(function* () {
139
192
  const rows = yield* sql`
140
- SELECT res.* FROM ${sql(tables.testResults)} res
193
+ SELECT res.id, res.hashTestCase, res.key,
194
+ runres.ordering, runres.resultOrdering,
195
+ res.input, res.result, res.expected, res.label, res.tags,
196
+ runres.timeMillis
197
+ FROM ${sql(tables.testResults)} res
141
198
  JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
142
199
  JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
143
200
  WHERE runs.id = ${testRun.id}
144
- ORDER BY ordering ASC;
201
+ ORDER BY runres.ordering ASC, runres.resultOrdering ASC;
145
202
  `.pipe(Effect.mapError(RepositoryQueryError.fromSql('getTestResultsStream')));
146
203
  const decoded = yield* Schema.decodeUnknownEffect(RowsSchema)(rows).pipe(Effect.mapError(RepositoryDecodeError.from('getTestResultsStream')));
147
204
  return Stream.fromIterable(decoded);
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.js","names":["SqlClient","Array","A","Console","Effect","Option","Schema","SchemaTransformation","Stream","TestRepository","TestRun","RepositoryDecodeError","RepositoryQueryError","RepositoryWriteError","TestRunNotCreated","LabelSchema","split","tables","testResults","testRuns","testRunResults","TestResultWriteSchema","Struct","id","String","hashTestCase","ordering","Int","input","fromJsonString","Unknown","result","expected","label","tags","timeMillis","Finite","TestResultsSchema","CountSchema","Tuple","count","pipe","decodeTo","transform","decode","encode","TestRunsReadSchema","TestRunResultsSchema","testRun","testResult","makeTestRepository","gen","sql","INSERT_BATCH_SIZE","insertTestResults","withTransaction","length","encoded","forEach","_","encodeEffect","mapError","from","i","chunk","slice","insert","junction","map","catchTag","e","fail","insertTestResult","makeTestResultSchema","schemas","getTestResultsStream","RowSchema","RowsSchema","unwrap","rows","fromSql","decoded","decodeUnknownEffect","fromIterable","hasResults","fnUntraced","b","r","getPreviousTestRun","name","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","runs","flatMap","run","fromNullishOr","hash","getOrCreateCurrentTestRun","currentRaw","current","existing","isSome","value","insertedRaw","inserted","fromOption","testSuiteName","clearStale","keep","raw","staleTestRuns","ids","in","log","clearUncommitedTestResults","currentTestRun","isNone","commitCurrentTestRun","currentTestRunResults","service"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.repository.sqlite.js","names":["SqlClient","Array","A","Console","Effect","Option","Schema","SchemaTransformation","Stream","TestRepository","TestRun","RepositoryDecodeError","RepositoryQueryError","RepositoryWriteError","TestRunNotCreated","LabelSchema","split","tables","testResults","testRuns","testRunResults","TestResultWriteSchema","Struct","id","String","hashTestCase","key","ordering","Int","resultOrdering","input","fromJsonString","Unknown","result","expected","label","tags","timeMillis","Finite","TestResultsSchema","CountSchema","Tuple","count","pipe","decodeTo","transform","decode","encode","TestRunsReadSchema","TestRunResultsSchema","testRun","testResult","TableColumnsSchema","name","makeTestRepository","gen","sql","withTransaction","resultColumns","decodeUnknownEffect","mapError","from","some","column","runResultColumns","existing","INSERT_BATCH_SIZE","insertTestResults","length","encoded","forEach","_","encodeEffect","i","chunk","slice","insert","junction","map","catchTag","e","fail","insertTestResult","makeTestResultSchema","schemas","getTestResultsStream","RowSchema","RowsSchema","unwrap","rows","fromSql","decoded","fromIterable","hasResults","fnUntraced","b","r","getPreviousTestRun","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","runs","flatMap","run","fromNullishOr","hash","getOrCreateCurrentTestRun","currentRaw","current","isSome","value","insertedRaw","inserted","fromOption","testSuiteName","clearStale","keep","raw","staleTestRuns","ids","in","log","clearUncommitedTestResults","currentTestRun","isNone","commitCurrentTestRun","currentTestRunResults","service"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,14 @@ import { Option } from 'effect';
3
3
  import { colorNegative, colorPositive, showBorder, showHeader, showRow, showTitle } from './common.js';
4
4
  import { makeDefault } from './DisplayConfig.js';
5
5
  const columns = [{
6
+ name: 'testCases',
7
+ label: 'cases',
8
+ make: ({
9
+ stats
10
+ }) => [stats.testCases.toString()]
11
+ }, {
6
12
  name: 'total',
7
- label: '∑',
13
+ label: 'results',
8
14
  make: ({
9
15
  stats
10
16
  }) => [stats.total.toString()]
@@ -84,7 +90,7 @@ const columns = [{
84
90
  export const showStats = ({
85
91
  testRun,
86
92
  displayConfig,
87
- selectColumns = ['total', 'TP', 'TN', 'FP', 'FN', 'precision', 'recall', 'timeMean', 'timeMedian']
93
+ selectColumns = ['testCases', 'total', 'TP', 'TN', 'FP', 'FN', 'precision', 'recall', 'timeMean', 'timeMedian']
88
94
  }) => {
89
95
  const cfg = {
90
96
  ...makeDefault(),
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","names":["colors","Option","colorNegative","colorPositive","showBorder","showHeader","showRow","showTitle","makeDefault","columns","name","label","make","stats","total","toString","TP","TN","FP","FN","precision","toFixed","recall","timeMin","pipe","match","onSome","n","onNone","timeMax","timeMean","timeMedian","showStats","testRun","displayConfig","selectColumns","cfg","_columns","filter","c","includes","row","map","columnWidths","m","i","Math","max","length","s","unstyle","header","bold","height"],"sources":["../../../src/internal/stats.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"stats.js","names":["colors","Option","colorNegative","colorPositive","showBorder","showHeader","showRow","showTitle","makeDefault","columns","name","label","make","stats","testCases","toString","total","TP","TN","FP","FN","precision","toFixed","recall","timeMin","pipe","match","onSome","n","onNone","timeMax","timeMean","timeMedian","showStats","testRun","displayConfig","selectColumns","cfg","_columns","filter","c","includes","row","map","columnWidths","m","i","Math","max","length","s","unstyle","header","bold","height"],"sources":["../../../src/internal/stats.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}