@creative-introvert/tons-of-tests 2.0.0 → 3.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +263 -134
- package/dist/cjs/Classify.js +6 -2
- package/dist/cjs/Classify.js.map +1 -1
- package/dist/cjs/RepositoryError.js +24 -33
- package/dist/cjs/RepositoryError.js.map +1 -1
- package/dist/cjs/Show.js +18 -0
- package/dist/cjs/Show.js.map +1 -1
- package/dist/cjs/Test.js +41 -2
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/Test.repository.js +8 -17
- package/dist/cjs/Test.repository.js.map +1 -1
- package/dist/cjs/TestRun.js +20 -0
- package/dist/cjs/TestRun.js.map +1 -0
- package/dist/cjs/TestValueError.js +23 -0
- package/dist/cjs/TestValueError.js.map +1 -0
- package/dist/cjs/index.js +0 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/Classify.js +1 -9
- package/dist/cjs/internal/Classify.js.map +1 -1
- package/dist/cjs/internal/Test.js +305 -109
- package/dist/cjs/internal/Test.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.js +266 -304
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/cjs/internal/Test.serialization.js +128 -0
- package/dist/cjs/internal/Test.serialization.js.map +1 -0
- package/dist/cjs/internal/common.js.map +1 -1
- package/dist/cjs/internal/stats.js +37 -3
- package/dist/cjs/internal/stats.js.map +1 -1
- package/dist/cjs/internal/summarize.js +155 -36
- package/dist/cjs/internal/summarize.js.map +1 -1
- package/dist/cjs/internal/test-repository-fixtures.js +31 -0
- package/dist/cjs/internal/test-repository-fixtures.js.map +1 -0
- package/dist/cjs/internal/test-repository-migrations.js +68 -0
- package/dist/cjs/internal/test-repository-migrations.js.map +1 -0
- package/dist/cjs/internal/test-result-stats.js +89 -0
- package/dist/cjs/internal/test-result-stats.js.map +1 -0
- package/dist/dts/Classify.d.ts +4 -1
- package/dist/dts/Classify.d.ts.map +1 -1
- package/dist/dts/RepositoryError.d.ts +19 -20
- package/dist/dts/RepositoryError.d.ts.map +1 -1
- package/dist/dts/Show.d.ts +8 -8
- package/dist/dts/Show.d.ts.map +1 -1
- package/dist/dts/Test.d.ts +155 -11
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/Test.repository.d.ts +94 -8
- package/dist/dts/Test.repository.d.ts.map +1 -1
- package/dist/dts/TestRun.d.ts +18 -0
- package/dist/dts/TestRun.d.ts.map +1 -0
- package/dist/dts/TestValueError.d.ts +17 -0
- package/dist/dts/TestValueError.d.ts.map +1 -0
- package/dist/dts/index.d.ts +0 -1
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/Classify.d.ts +0 -1
- package/dist/dts/internal/Classify.d.ts.map +1 -1
- package/dist/dts/internal/Test.d.ts +58 -31
- package/dist/dts/internal/Test.d.ts.map +1 -1
- package/dist/dts/internal/Test.repository.sqlite.d.ts +66 -11
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
- package/dist/dts/internal/Test.serialization.d.ts +34 -0
- package/dist/dts/internal/Test.serialization.d.ts.map +1 -0
- package/dist/dts/internal/common.d.ts +1 -1
- package/dist/dts/internal/common.d.ts.map +1 -1
- package/dist/dts/internal/stats.d.ts +15 -1
- package/dist/dts/internal/stats.d.ts.map +1 -1
- package/dist/dts/internal/summarize.d.ts +39 -7
- package/dist/dts/internal/summarize.d.ts.map +1 -1
- package/dist/dts/internal/test-repository-fixtures.d.ts +22 -0
- package/dist/dts/internal/test-repository-fixtures.d.ts.map +1 -0
- package/dist/dts/internal/test-repository-migrations.d.ts +11 -0
- package/dist/dts/internal/test-repository-migrations.d.ts.map +1 -0
- package/dist/dts/internal/test-result-stats.d.ts +7 -0
- package/dist/dts/internal/test-result-stats.d.ts.map +1 -0
- package/dist/esm/Classify.js +5 -1
- package/dist/esm/Classify.js.map +1 -1
- package/dist/esm/RepositoryError.js +14 -29
- package/dist/esm/RepositoryError.js.map +1 -1
- package/dist/esm/Show.js +2 -2
- package/dist/esm/Show.js.map +1 -1
- package/dist/esm/Test.js +38 -1
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/Test.repository.js +7 -16
- package/dist/esm/Test.repository.js.map +1 -1
- package/dist/esm/TestRun.js +13 -0
- package/dist/esm/TestRun.js.map +1 -0
- package/dist/esm/TestValueError.js +16 -0
- package/dist/esm/TestValueError.js.map +1 -0
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/Classify.js +0 -7
- package/dist/esm/internal/Classify.js.map +1 -1
- package/dist/esm/internal/Test.js +299 -108
- package/dist/esm/internal/Test.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.js +265 -301
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/esm/internal/Test.serialization.js +119 -0
- package/dist/esm/internal/Test.serialization.js.map +1 -0
- package/dist/esm/internal/common.js.map +1 -1
- package/dist/esm/internal/stats.js +35 -2
- package/dist/esm/internal/stats.js.map +1 -1
- package/dist/esm/internal/summarize.js +155 -35
- package/dist/esm/internal/summarize.js.map +1 -1
- package/dist/esm/internal/test-repository-fixtures.js +25 -0
- package/dist/esm/internal/test-repository-fixtures.js.map +1 -0
- package/dist/esm/internal/test-repository-migrations.js +62 -0
- package/dist/esm/internal/test-repository-migrations.js.map +1 -0
- package/dist/esm/internal/test-result-stats.js +83 -0
- package/dist/esm/internal/test-result-stats.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/Test.repository.types.js +0 -14
- package/dist/cjs/Test.repository.types.js.map +0 -1
- package/dist/cjs/internal/lib/Schema.js +0 -14
- package/dist/cjs/internal/lib/Schema.js.map +0 -1
- package/dist/dts/Test.repository.types.d.ts +0 -56
- package/dist/dts/Test.repository.types.d.ts.map +0 -1
- package/dist/dts/internal/lib/Schema.d.ts +0 -4
- package/dist/dts/internal/lib/Schema.d.ts.map +0 -1
- package/dist/esm/Test.repository.types.js +0 -7
- package/dist/esm/Test.repository.types.js.map +0 -1
- package/dist/esm/internal/lib/Schema.js +0 -7
- package/dist/esm/internal/lib/Schema.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Effect, Schema } from 'effect';
|
|
2
|
+
import { SqlClient } from 'effect/sql';
|
|
3
|
+
import { TestRun } from '../TestRun.js';
|
|
4
|
+
import { TestResultStorage, tables } from './Test.repository.sqlite.js';
|
|
5
|
+
// Tests inspect storage directly; these operations are not part of TestRepository.
|
|
6
|
+
export const getAllTestRuns = /*#__PURE__*/Effect.gen(function* () {
|
|
7
|
+
const sql = yield* SqlClient.SqlClient;
|
|
8
|
+
return yield* Schema.decodeUnknownEffect(Schema.Array(TestRun))(yield* sql`SELECT * FROM ${sql(tables.testRuns)};`);
|
|
9
|
+
});
|
|
10
|
+
export const getAllTestResults = /*#__PURE__*/Effect.gen(function* () {
|
|
11
|
+
const sql = yield* SqlClient.SqlClient;
|
|
12
|
+
return yield* Schema.decodeUnknownEffect(Schema.Array(TestResultStorage))(yield* sql`SELECT * FROM ${sql(tables.testResults)};`);
|
|
13
|
+
});
|
|
14
|
+
export const getAllTestRunResults = /*#__PURE__*/Effect.gen(function* () {
|
|
15
|
+
const sql = yield* SqlClient.SqlClient;
|
|
16
|
+
return yield* Schema.decodeUnknownEffect(Schema.Array(Schema.Struct({
|
|
17
|
+
testRun: Schema.Int,
|
|
18
|
+
testResult: Schema.String,
|
|
19
|
+
ordering: Schema.Int,
|
|
20
|
+
resultOrdering: Schema.Int,
|
|
21
|
+
timeMillis: Schema.Finite,
|
|
22
|
+
tags: Schema.fromJsonString(Schema.Array(Schema.String))
|
|
23
|
+
})))(yield* sql`SELECT * FROM ${sql(tables.testRunResults)};`);
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=test-repository-fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-repository-fixtures.js","names":["Effect","Schema","SqlClient","TestRun","TestResultStorage","tables","getAllTestRuns","gen","sql","decodeUnknownEffect","Array","testRuns","getAllTestResults","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,SAAQA,MAAM,EAAEC,MAAM,QAAO,QAAQ;AACrC,SAAQC,SAAS,QAAO,YAAY;AAEpC,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,iBAAiB,EAAEC,MAAM,QAAO,6BAA6B;AAErE;AACA,OAAO,MAAMC,cAAc,gBAAGN,MAAM,CAACO,GAAG,CAAC,aAAS;EAC9C,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CAACR,MAAM,CAACS,KAAK,CAACP,OAAO,CAAC,CAAC,CAC3D,OAAOK,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACM,QAAQ,CAAC,GAAG,CACrD;AACL,CAAC,CAAC;AAEF,OAAO,MAAMC,iBAAiB,gBAAGZ,MAAM,CAACO,GAAG,CAAC,aAAS;EACjD,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CAACR,MAAM,CAACS,KAAK,CAACN,iBAAiB,CAAC,CAAC,CACrE,OAAOI,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACQ,WAAW,CAAC,GAAG,CACxD;AACL,CAAC,CAAC;AAEF,OAAO,MAAMC,oBAAoB,gBAAGd,MAAM,CAACO,GAAG,CAAC,aAAS;EACpD,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CACpCR,MAAM,CAACS,KAAK,CACRT,MAAM,CAACc,MAAM,CAAC;IACVC,OAAO,EAAEf,MAAM,CAACgB,GAAG;IACnBC,UAAU,EAAEjB,MAAM,CAACkB,MAAM;IACzBC,QAAQ,EAAEnB,MAAM,CAACgB,GAAG;IACpBI,cAAc,EAAEpB,MAAM,CAACgB,GAAG;IAC1BK,UAAU,EAAErB,MAAM,CAACsB,MAAM;IACzBC,IAAI,EAAEvB,MAAM,CAACwB,cAAc,CAACxB,MAAM,CAACS,KAAK,CAACT,MAAM,CAACkB,MAAM,CAAC;GAC1D,CAAC,CACL,CACJ,CAAC,OAAOX,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACqB,cAAc,CAAC,GAAG,CAAC;AAC/D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SqliteMigrator } from '@effect/sql-sqlite-node';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
import { SqlClient } from 'effect/sql';
|
|
4
|
+
export const tables = {
|
|
5
|
+
testResults: 'test-results',
|
|
6
|
+
testRuns: 'test-runs',
|
|
7
|
+
testBaselines: 'test-baselines',
|
|
8
|
+
testRunResults: 'test-run-results'
|
|
9
|
+
};
|
|
10
|
+
export const migrate = /*#__PURE__*/SqliteMigrator.run({
|
|
11
|
+
table: 'tons_of_tests_migrations',
|
|
12
|
+
loader: /*#__PURE__*/SqliteMigrator.fromRecord({
|
|
13
|
+
'001_create_tables': /*#__PURE__*/Effect.gen(function* () {
|
|
14
|
+
const sql = yield* SqlClient.SqlClient;
|
|
15
|
+
yield* sql`
|
|
16
|
+
CREATE TABLE ${sql(tables.testRuns)}(
|
|
17
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
18
|
+
name TEXT NOT NULL,
|
|
19
|
+
variant TEXT NOT NULL,
|
|
20
|
+
state TEXT NOT NULL CHECK (state IN ('Running', 'Complete', 'Failed'))
|
|
21
|
+
);
|
|
22
|
+
`;
|
|
23
|
+
yield* sql`CREATE INDEX idx_run_name_variant_id ON ${sql(tables.testRuns)}(name, variant, id);`;
|
|
24
|
+
yield* sql`
|
|
25
|
+
CREATE TABLE ${sql(tables.testBaselines)}(
|
|
26
|
+
name TEXT NOT NULL,
|
|
27
|
+
variant TEXT NOT NULL,
|
|
28
|
+
testRun INTEGER NOT NULL REFERENCES ${sql(tables.testRuns)}(id),
|
|
29
|
+
PRIMARY KEY (name, variant)
|
|
30
|
+
);
|
|
31
|
+
`;
|
|
32
|
+
yield* sql`
|
|
33
|
+
CREATE TABLE ${sql(tables.testResults)}(
|
|
34
|
+
id TEXT PRIMARY KEY,
|
|
35
|
+
hashTestCase TEXT NOT NULL,
|
|
36
|
+
key TEXT NOT NULL,
|
|
37
|
+
input TEXT,
|
|
38
|
+
result TEXT,
|
|
39
|
+
expected TEXT,
|
|
40
|
+
label TEXT NOT NULL
|
|
41
|
+
);
|
|
42
|
+
`;
|
|
43
|
+
yield* sql`CREATE INDEX idx_tr_case_key ON ${sql(tables.testResults)}(hashTestCase, key);`;
|
|
44
|
+
yield* sql`
|
|
45
|
+
CREATE TABLE ${sql(tables.testRunResults)}(
|
|
46
|
+
testRun INTEGER NOT NULL,
|
|
47
|
+
testResult TEXT NOT NULL,
|
|
48
|
+
ordering INTEGER NOT NULL,
|
|
49
|
+
resultOrdering INTEGER NOT NULL,
|
|
50
|
+
timeMillis REAL NOT NULL,
|
|
51
|
+
tags TEXT NOT NULL,
|
|
52
|
+
FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
|
|
53
|
+
FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
|
|
54
|
+
UNIQUE (testRun, testResult)
|
|
55
|
+
);
|
|
56
|
+
`;
|
|
57
|
+
yield* sql`CREATE INDEX idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult);`;
|
|
58
|
+
yield* sql`CREATE INDEX idx_trr_run_order ON ${sql(tables.testRunResults)}(testRun, ordering, resultOrdering, testResult);`;
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=test-repository-migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-repository-migrations.js","names":["SqliteMigrator","Effect","SqlClient","tables","testResults","testRuns","testBaselines","testRunResults","migrate","run","table","loader","fromRecord","gen","sql"],"sources":["../../../src/internal/test-repository-migrations.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,cAAc,QAAO,yBAAyB;AACtD,SAAQC,MAAM,QAAO,QAAQ;AAC7B,SAAQC,SAAS,QAAO,YAAY;AAEpC,OAAO,MAAMC,MAAM,GAAG;EAClBC,WAAW,EAAE,cAAc;EAC3BC,QAAQ,EAAE,WAAW;EACrBC,aAAa,EAAE,gBAAgB;EAC/BC,cAAc,EAAE;CACV;AAEV,OAAO,MAAMC,OAAO,gBAAGR,cAAc,CAACS,GAAG,CAAC;EACtCC,KAAK,EAAE,0BAA0B;EACjCC,MAAM,eAAEX,cAAc,CAACY,UAAU,CAAC;IAC9B,mBAAmB,eAAEX,MAAM,CAACY,GAAG,CAAC,aAAS;MACrC,MAAMC,GAAG,GAAG,OAAOZ,SAAS,CAACA,SAAS;MACtC,OAAOY,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;;;;;;aAMtC;MACD,OAAOS,GAAG,2CAA2CA,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC,sBAAsB;MAC/F,OAAOS,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACG,aAAa,CAAC;;;0DAGEQ,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;;;aAGjE;MAED,OAAOS,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC;;;;;;;;;aASzC;MACD,OAAOU,GAAG,mCAAmCA,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC,sBAAsB;MAE1F,OAAOU,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC;;;;;;;uDAOFO,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;0DACjBS,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC;;;aAGpE;MACD,OAAOU,GAAG,sCAAsCA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC,eAAe;MACzF,OAAOO,GAAG,qCAAqCA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC,kDAAkD;IAC/H,CAAC;GACJ;CACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Effect, Option, Ref, Schema } from 'effect';
|
|
2
|
+
import { SqlClient } from 'effect/sql';
|
|
3
|
+
import { Stats } from '../Classify.js';
|
|
4
|
+
import { precision, recall } from './Classify.js';
|
|
5
|
+
const decodeName = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Tuple([/*#__PURE__*/Schema.Struct({
|
|
6
|
+
name: Schema.String
|
|
7
|
+
})]));
|
|
8
|
+
const decodeTimes = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Tuple([/*#__PURE__*/Schema.Struct({
|
|
9
|
+
count: Schema.Int,
|
|
10
|
+
mean: /*#__PURE__*/Schema.NullOr(Schema.Finite),
|
|
11
|
+
min: /*#__PURE__*/Schema.NullOr(Schema.Finite),
|
|
12
|
+
max: /*#__PURE__*/Schema.NullOr(Schema.Finite)
|
|
13
|
+
})]));
|
|
14
|
+
const decodeMedian = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
|
|
15
|
+
timeMillis: Schema.Finite
|
|
16
|
+
})));
|
|
17
|
+
export const withStats = /*#__PURE__*/Effect.fnUntraced(function* (use) {
|
|
18
|
+
const sql = yield* SqlClient.SqlClient;
|
|
19
|
+
const [{
|
|
20
|
+
name
|
|
21
|
+
}] = yield* decodeName(yield* sql`SELECT 'tots_stats_' || lower(hex(randomblob(16))) AS name;`);
|
|
22
|
+
return yield* Effect.acquireUseRelease(sql`CREATE TEMP TABLE ${sql(name)} (hashTestCase TEXT PRIMARY KEY, timeMillis REAL NOT NULL);`, () => Effect.gen(function* () {
|
|
23
|
+
yield* sql`CREATE INDEX ${sql(`${name}_time`)} ON ${sql(name)} (timeMillis);`;
|
|
24
|
+
const counts = yield* Ref.make({
|
|
25
|
+
TP: 0,
|
|
26
|
+
TN: 0,
|
|
27
|
+
FP: 0,
|
|
28
|
+
FN: 0,
|
|
29
|
+
total: 0
|
|
30
|
+
});
|
|
31
|
+
const add = Effect.fnUntraced(function* (results) {
|
|
32
|
+
for (let offset = 0; offset < results.length; offset += 50) {
|
|
33
|
+
const batch = results.slice(offset, offset + 50);
|
|
34
|
+
yield* sql`
|
|
35
|
+
INSERT INTO ${sql(name)} ${sql.insert(batch.map(({
|
|
36
|
+
hashTestCase,
|
|
37
|
+
timeMillis
|
|
38
|
+
}) => ({
|
|
39
|
+
hashTestCase,
|
|
40
|
+
timeMillis
|
|
41
|
+
})))}
|
|
42
|
+
ON CONFLICT(hashTestCase) DO NOTHING;
|
|
43
|
+
`;
|
|
44
|
+
yield* Ref.update(counts, previous => {
|
|
45
|
+
const next = {
|
|
46
|
+
...previous
|
|
47
|
+
};
|
|
48
|
+
for (const result of batch) {
|
|
49
|
+
next[result.label]++;
|
|
50
|
+
next.total++;
|
|
51
|
+
}
|
|
52
|
+
return next;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const stats = Effect.gen(function* () {
|
|
57
|
+
const totals = yield* Ref.get(counts);
|
|
58
|
+
const [times] = yield* decodeTimes(yield* sql`
|
|
59
|
+
SELECT COUNT(*) AS count, AVG(timeMillis) AS mean,
|
|
60
|
+
MIN(timeMillis) AS min, MAX(timeMillis) AS max FROM ${sql(name)};
|
|
61
|
+
`);
|
|
62
|
+
const middle = times.count === 0 ? [] : yield* decodeMedian(yield* sql`
|
|
63
|
+
SELECT timeMillis FROM ${sql(name)} ORDER BY timeMillis
|
|
64
|
+
LIMIT ${2 - times.count % 2} OFFSET ${Math.floor((times.count - 1) / 2)};
|
|
65
|
+
`);
|
|
66
|
+
return new Stats({
|
|
67
|
+
...totals,
|
|
68
|
+
testCases: times.count,
|
|
69
|
+
precision: precision(totals),
|
|
70
|
+
recall: recall(totals),
|
|
71
|
+
timeMin: Option.fromNullishOr(times.min),
|
|
72
|
+
timeMax: Option.fromNullishOr(times.max),
|
|
73
|
+
timeMean: Option.fromNullishOr(times.mean),
|
|
74
|
+
timeMedian: middle.length === 0 ? Option.none() : Option.some(middle.reduce((sum, row) => sum + row.timeMillis, 0) / middle.length)
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return yield* use({
|
|
78
|
+
add,
|
|
79
|
+
stats
|
|
80
|
+
});
|
|
81
|
+
}), () => sql`DROP TABLE ${sql(name)};`.pipe(Effect.asVoid));
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=test-result-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-result-stats.js","names":["Effect","Option","Ref","Schema","SqlClient","Stats","precision","recall","decodeName","decodeUnknownEffect","Tuple","Struct","name","String","decodeTimes","count","Int","mean","NullOr","Finite","min","max","decodeMedian","Array","timeMillis","withStats","fnUntraced","use","sql","acquireUseRelease","gen","counts","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","testCases","timeMin","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":[]}
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TestRun = void 0;
|
|
7
|
-
var _effect = /*#__PURE__*/require("effect");
|
|
8
|
-
class TestRun extends /*#__PURE__*/_effect.Schema.Class('TestRun')({
|
|
9
|
-
id: _effect.Schema.Int,
|
|
10
|
-
name: _effect.Schema.String,
|
|
11
|
-
hash: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.String)
|
|
12
|
-
}) {}
|
|
13
|
-
exports.TestRun = TestRun;
|
|
14
|
-
//# sourceMappingURL=Test.repository.types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.types.js","names":["_effect","require","TestRun","Schema","Class","id","Int","name","String","hash","NullOr","exports"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAkBM,MAAOC,OAAQ,sBAAQC,cAAM,CAACC,KAAK,CAAU,SAAS,CAAC,CAAC;EAC1DC,EAAE,EAAEF,cAAM,CAACG,GAAG;EACdC,IAAI,EAAEJ,cAAM,CAACK,MAAM;EACnBC,IAAI,eAAEN,cAAM,CAACO,MAAM,CAACP,cAAM,CAACK,MAAM;CACpC,CAAC;AAAGG,OAAA,CAAAT,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.split = void 0;
|
|
7
|
-
var _effect = /*#__PURE__*/require("effect");
|
|
8
|
-
/** An empty tag list is stored as an empty string. */
|
|
9
|
-
const split = separator => _effect.Schema.String.pipe(_effect.Schema.decodeTo(_effect.Schema.Array(_effect.Schema.String), _effect.SchemaTransformation.transform({
|
|
10
|
-
decode: s => s.length === 0 ? [] : s.split(separator),
|
|
11
|
-
encode: xs => xs.join(separator)
|
|
12
|
-
})));
|
|
13
|
-
exports.split = split;
|
|
14
|
-
//# sourceMappingURL=Schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","names":["_effect","require","split","separator","Schema","String","pipe","decodeTo","Array","SchemaTransformation","transform","decode","s","length","encode","xs","join","exports"],"sources":["../../../../src/internal/lib/Schema.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAEA;AACO,MAAMC,KAAK,GACdC,SAAiB,IAEjBC,cAAM,CAACC,MAAM,CAACC,IAAI,CACdF,cAAM,CAACG,QAAQ,CACXH,cAAM,CAACI,KAAK,CAACJ,cAAM,CAACC,MAAM,CAAC,EAC3BI,4BAAoB,CAACC,SAAS,CAAC;EAC3BC,MAAM,EAAGC,CAAC,IACNA,CAAC,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAGD,CAAC,CAACV,KAAK,CAACC,SAAS,CAAC;EAC5CW,MAAM,EAAEC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAACb,SAAS;CAClC,CAAC,CACL,CACJ;AAACc,OAAA,CAAAf,KAAA,GAAAA,KAAA","ignoreList":[]}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { type Effect, type Option, Schema, type Stream } from 'effect';
|
|
2
|
-
import type { Label } from './Classify.js';
|
|
3
|
-
import type { RepositoryError } from './RepositoryError.js';
|
|
4
|
-
import type { TestResult } from './Test.js';
|
|
5
|
-
export type TestResultRead = {
|
|
6
|
-
id: string;
|
|
7
|
-
hashTestCase: string;
|
|
8
|
-
ordering: number;
|
|
9
|
-
label: Label;
|
|
10
|
-
input: string;
|
|
11
|
-
result: string;
|
|
12
|
-
expected: string;
|
|
13
|
-
tags: string;
|
|
14
|
-
timeMillis: number;
|
|
15
|
-
};
|
|
16
|
-
declare const TestRun_base: Schema.Class<TestRun, Schema.Struct<{
|
|
17
|
-
readonly id: Schema.Int;
|
|
18
|
-
readonly name: Schema.String;
|
|
19
|
-
readonly hash: Schema.NullOr<Schema.String>;
|
|
20
|
-
}>, {}>;
|
|
21
|
-
export declare class TestRun extends TestRun_base {
|
|
22
|
-
}
|
|
23
|
-
export type TestRunResults = {
|
|
24
|
-
testRun: number;
|
|
25
|
-
testResult: string;
|
|
26
|
-
};
|
|
27
|
-
export type TestResultSchemas<I = unknown, O = unknown, T = unknown> = {
|
|
28
|
-
input: Schema.Codec<I>;
|
|
29
|
-
result: Schema.Codec<O>;
|
|
30
|
-
expected: Schema.Codec<T>;
|
|
31
|
-
};
|
|
32
|
-
export type TestRepositoryShape = {
|
|
33
|
-
clearStale: ({ name, keep, }: {
|
|
34
|
-
name: string;
|
|
35
|
-
keep?: number;
|
|
36
|
-
}) => Effect.Effect<void, RepositoryError>;
|
|
37
|
-
clearUncommitedTestResults: ({ name, }: {
|
|
38
|
-
name: string;
|
|
39
|
-
}) => Effect.Effect<void, RepositoryError>;
|
|
40
|
-
getTestResultsStream: <I = unknown, O = unknown, T = unknown>(testRun: TestRun, schemas?: TestResultSchemas<I, O, T>) => Stream.Stream<TestResult<I, O, T>, RepositoryError>;
|
|
41
|
-
hasResults: (testRun: TestRun) => Effect.Effect<boolean, RepositoryError>;
|
|
42
|
-
getAllTestResults: Effect.Effect<readonly TestResult[], RepositoryError>;
|
|
43
|
-
getAllTestRuns: Effect.Effect<readonly TestRun[], RepositoryError>;
|
|
44
|
-
getAllTestRunResults: Effect.Effect<readonly TestRunResults[], RepositoryError>;
|
|
45
|
-
getLastTestRunHash: (name: string) => Effect.Effect<Option.Option<string>, RepositoryError>;
|
|
46
|
-
getOrCreateCurrentTestRun: (name: string) => Effect.Effect<TestRun, RepositoryError>;
|
|
47
|
-
getPreviousTestRun: (name: string) => Effect.Effect<Option.Option<TestRun>, RepositoryError>;
|
|
48
|
-
commitCurrentTestRun: (input: {
|
|
49
|
-
name: string;
|
|
50
|
-
hash: string;
|
|
51
|
-
}) => Effect.Effect<void, RepositoryError>;
|
|
52
|
-
insertTestResult: (input: TestResult, testRun: TestRun) => Effect.Effect<void, RepositoryError>;
|
|
53
|
-
insertTestResults: (inputs: ReadonlyArray<TestResult>, testRun: TestRun) => Effect.Effect<void, RepositoryError>;
|
|
54
|
-
};
|
|
55
|
-
export {};
|
|
56
|
-
//# sourceMappingURL=Test.repository.types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.types.d.ts","sourceRoot":"","sources":["../../src/Test.repository.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../../src/internal/lib/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAuB,MAAM,QAAQ,CAAC;AAEpD,sDAAsD;AACtD,eAAO,MAAM,KAAK,cACH,MAAM,KAClB,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,CAUpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.types.js","names":["Schema","TestRun","Class","id","Int","name","String","hash","NullOr"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAkCA,MAAM,QAAoB,QAAQ;AAkBpE,OAAM,MAAOC,OAAQ,sBAAQD,MAAM,CAACE,KAAK,CAAU,SAAS,CAAC,CAAC;EAC1DC,EAAE,EAAEH,MAAM,CAACI,GAAG;EACdC,IAAI,EAAEL,MAAM,CAACM,MAAM;EACnBC,IAAI,eAAEP,MAAM,CAACQ,MAAM,CAACR,MAAM,CAACM,MAAM;CACpC,CAAC","ignoreList":[]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Schema, SchemaTransformation } from 'effect';
|
|
2
|
-
/** An empty tag list is stored as an empty string. */
|
|
3
|
-
export const split = separator => Schema.String.pipe(Schema.decodeTo(Schema.Array(Schema.String), SchemaTransformation.transform({
|
|
4
|
-
decode: s => s.length === 0 ? [] : s.split(separator),
|
|
5
|
-
encode: xs => xs.join(separator)
|
|
6
|
-
})));
|
|
7
|
-
//# sourceMappingURL=Schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","names":["Schema","SchemaTransformation","split","separator","String","pipe","decodeTo","Array","transform","decode","s","length","encode","xs","join"],"sources":["../../../../src/internal/lib/Schema.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,oBAAoB,QAAO,QAAQ;AAEnD;AACA,OAAO,MAAMC,KAAK,GACdC,SAAiB,IAEjBH,MAAM,CAACI,MAAM,CAACC,IAAI,CACdL,MAAM,CAACM,QAAQ,CACXN,MAAM,CAACO,KAAK,CAACP,MAAM,CAACI,MAAM,CAAC,EAC3BH,oBAAoB,CAACO,SAAS,CAAC;EAC3BC,MAAM,EAAGC,CAAC,IACNA,CAAC,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAGD,CAAC,CAACR,KAAK,CAACC,SAAS,CAAC;EAC5CS,MAAM,EAAEC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAACX,SAAS;CAClC,CAAC,CACL,CACJ","ignoreList":[]}
|