@creative-introvert/tons-of-tests 0.4.0 → 0.5.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 (30) hide show
  1. package/dist/cjs/Test.repository.js.map +1 -1
  2. package/dist/cjs/internal/Test.js +7 -4
  3. package/dist/cjs/internal/Test.js.map +1 -1
  4. package/dist/cjs/internal/Test.repository.sqlite.js +64 -37
  5. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  6. package/dist/cjs/internal/Test.repository.sqlite.spec.js +111 -13
  7. package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -1
  8. package/dist/cjs/internal/stats.js +9 -2
  9. package/dist/cjs/internal/stats.js.map +1 -1
  10. package/dist/dts/Show.d.ts +2 -1
  11. package/dist/dts/Show.d.ts.map +1 -1
  12. package/dist/dts/Test.repository.d.ts +13 -1
  13. package/dist/dts/Test.repository.d.ts.map +1 -1
  14. package/dist/dts/internal/Classify.d.ts +10 -10
  15. package/dist/dts/internal/Test.d.ts +2 -1
  16. package/dist/dts/internal/Test.d.ts.map +1 -1
  17. package/dist/dts/internal/Test.repository.sqlite.d.ts +5 -0
  18. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  19. package/dist/dts/internal/stats.d.ts +1 -1
  20. package/dist/dts/internal/stats.d.ts.map +1 -1
  21. package/dist/esm/Test.repository.js.map +1 -1
  22. package/dist/esm/internal/Test.js +7 -4
  23. package/dist/esm/internal/Test.js.map +1 -1
  24. package/dist/esm/internal/Test.repository.sqlite.js +64 -37
  25. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  26. package/dist/esm/internal/Test.repository.sqlite.spec.js +111 -13
  27. package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -1
  28. package/dist/esm/internal/stats.js +9 -2
  29. package/dist/esm/internal/stats.js.map +1 -1
  30. package/package.json +7 -7
@@ -19,12 +19,24 @@ export type TestRun = {
19
19
  name: string;
20
20
  hash: string | null;
21
21
  };
22
+ export type TestRunResults = {
23
+ testRun: number;
24
+ testResult: string;
25
+ };
22
26
  export type TestRepository = {
23
- clearTestRun: (testRun: TestRun) => Effect.Effect<void, SqlError>;
27
+ clearStale: ({ name, keep, }: {
28
+ name: string;
29
+ /**
30
+ * How many previous test runs to keep.
31
+ * @default 1
32
+ */
33
+ keep?: number;
34
+ }) => Effect.Effect<void, SqlError | ParseError>;
24
35
  getTestResultsStream: (testRun: TestRun) => Stream.Stream<TestResult, SqlError | ParseError>;
25
36
  hasResults: (testRun: TestRun) => Effect.Effect<boolean, SqlError | ParseError>;
26
37
  getAllTestResults: Effect.Effect<readonly TestResult[], SqlError | ParseError>;
27
38
  getAllTestRuns: Effect.Effect<readonly TestRun[], SqlError | ParseError>;
39
+ getAllTestRunResults: Effect.Effect<readonly TestRunResults[], SqlError | ParseError>;
28
40
  getOrCreateCurrentTestRun: (name: string) => Effect.Effect<TestRun, SqlError>;
29
41
  getPreviousTestRun: (name: string) => Effect.Effect<Option.Option<TestRun>, SqlError | ParseError>;
30
42
  commitCurrentTestRun: (input: {
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.d.ts","sourceRoot":"","sources":["../../src/Test.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAC,oBAAoB,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAG3D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAClB,OAAO,EAAE,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IACtD,UAAU,EAAE,CACR,OAAO,EAAE,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IACnD,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAC5B,SAAS,UAAU,EAAE,EACrB,QAAQ,GAAG,UAAU,CACxB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IACzE,yBAAyB,EAAE,CACvB,IAAI,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,kBAAkB,EAAE,CAChB,IAAI,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KAChB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,gBAAgB,EAAE,CACd,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EACpC,IAAI,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;CAC1E,CAAC;AACF,eAAO,MAAM,cAAc,8DAA0B,CAAC;AACtD,eAAO,MAAM,SAAS,6FAAqB,CAAC;AAC5C,eAAO,MAAM,mBAAmB,gMAA+B,CAAC;AAChE,eAAO,MAAM,eAAe,4KAA2B,CAAC"}
1
+ {"version":3,"file":"Test.repository.d.ts","sourceRoot":"","sources":["../../src/Test.repository.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,16 @@ export declare const defaultIsEqual: <A, B>(a: A, b: B) => boolean;
11
11
  export declare const defaultIsNil: <I>(x: I) => boolean;
12
12
  export declare const makeClassify: <O, T>(isEqual: (output: O, expected: T) => boolean, isOutputNil?: (output: O) => boolean, isExpectedNil?: (expected: T) => boolean) => TClassify<O, T>;
13
13
  export declare const StatsSchema: P.Schema.Struct<{
14
- TP: P.Schema.$Number;
15
- TN: P.Schema.$Number;
16
- FP: P.Schema.$Number;
17
- FN: P.Schema.$Number;
18
- precision: P.Schema.$Number;
19
- recall: P.Schema.$Number;
20
- timeMean: P.Schema.Option<P.Schema.$Number>;
21
- timeMedian: P.Schema.Option<P.Schema.$Number>;
22
- timeMin: P.Schema.Option<P.Schema.$Number>;
23
- timeMax: P.Schema.Option<P.Schema.$Number>;
14
+ TP: typeof P.Schema.Number;
15
+ TN: typeof P.Schema.Number;
16
+ FP: typeof P.Schema.Number;
17
+ FN: typeof P.Schema.Number;
18
+ precision: typeof P.Schema.Number;
19
+ recall: typeof P.Schema.Number;
20
+ timeMean: P.Schema.Option<typeof P.Schema.Number>;
21
+ timeMedian: P.Schema.Option<typeof P.Schema.Number>;
22
+ timeMin: P.Schema.Option<typeof P.Schema.Number>;
23
+ timeMax: P.Schema.Option<typeof P.Schema.Number>;
24
24
  }>;
25
25
  export declare const Stats: {
26
26
  empty: () => _Stats;
@@ -21,11 +21,12 @@ export declare const TestResultSchema: P.Schema.Schema<TestResult>;
21
21
  declare const TestRunResults: {
22
22
  emptyFromTestRun: <I, O, T>(args: TestRun) => TestRunResults<I, O, T>;
23
23
  };
24
- export declare const test: <I, O, T>({ testCase: { input, expected, tags }, program, classify, ordering, }: {
24
+ export declare const test: <I, O, T>({ testCase: { input, expected, tags }, program, classify, ordering, total, }: {
25
25
  testCase: TestCase<I, T>;
26
26
  program: Program<I, O>;
27
27
  classify: Classify<O, T>;
28
28
  ordering: number;
29
+ total: number;
29
30
  }) => P.Effect.Effect<TestResult<I, O, T>>;
30
31
  export declare const all: <I, O, T>({ testCases, program, classify, name, }: TestSuite<I, O, T>, { concurrency }?: {
31
32
  concurrency?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAWpD,OAAO,KAAK,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,UAAU,aAAc,CAAC,KAAG,MAExC,CAAC;AAEF,QAAA,MAAM,UAAU;0BACU,KAAK,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,cAAc,CAAC;;;;;;;;;;;CAezE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAUvD,CAAC;AAEH,QAAA,MAAM,cAAc;sCACkB,OAAO,KAAG,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAMtE,CAAC;AAEF,eAAO,MAAM,IAAI,mFAKd;IACC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACpB,KAAG,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAgBtC,CAAC;AAEF,eAAO,MAAM,GAAG,qDAMT,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oBACN;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,sQAwB/C,CAAC;AAEP,eAAO,MAAM,gBAAgB,YACf,OAAO,gCAEC,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,KACtE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CA8CxD,CAAC;AAEV,eAAO,MAAM,IAAI,6CAGd;IACC,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;CACpD,KAAG,IAaC,CAAC"}
1
+ {"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAWpD,OAAO,KAAK,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,UAAU,aAAc,CAAC,KAAG,MAExC,CAAC;AAEF,QAAA,MAAM,UAAU;0BACU,KAAK,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,cAAc,CAAC;;;;;;;;;;;CAezE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAUvD,CAAC;AAEH,QAAA,MAAM,cAAc;sCACkB,OAAO,KAAG,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAMtE,CAAC;AAEF,eAAO,MAAM,IAAI,0FAMd;IACC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB,KAAG,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAmBtC,CAAC;AAEF,eAAO,MAAM,GAAG,qDAMT,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oBACN;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,sQAuB/C,CAAC;AAEP,eAAO,MAAM,gBAAgB,YACf,OAAO,gCAEC,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,KACtE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CA8CxD,CAAC;AAEV,eAAO,MAAM,IAAI,6CAGd;IACC,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;CACpD,KAAG,IAaC,CAAC"}
@@ -2,6 +2,11 @@ import * as Sql from '@effect/sql';
2
2
  import * as Sqlite from '@effect/sql-sqlite-node';
3
3
  import * as P from '../prelude.js';
4
4
  import type { TestRepository as _TestRepository } from '../Test.repository.js';
5
+ export declare const tables: {
6
+ readonly testResults: "test-results";
7
+ readonly testRuns: "test-runs";
8
+ readonly testRunResults: "test-run-results";
9
+ };
5
10
  export declare const TestRepository: P.Context.Tag<_TestRepository, _TestRepository>;
6
11
  export type TestRepository = _TestRepository;
7
12
  export declare const LiveLayer: P.Layer.Layer<_TestRepository, Sql.error.SqlError, Sql.client.Client>;
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.repository.sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,EACR,cAAc,IAAI,eAAe,EAGpC,MAAM,uBAAuB,CAAC;AAsC/B,eAAO,MAAM,cAAc,iDACmC,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAgM7C,eAAO,MAAM,SAAS,uEAAqD,CAAC;AAE5E,eAAO,MAAM,mBAAmB,WAAY,MAAM,mHAO7C,CAAC;AAEN,eAAO,MAAM,eAAe,gHAM3B,CAAC"}
1
+ {"version":3,"file":"Test.repository.sqlite.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.repository.sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,EACR,cAAc,IAAI,eAAe,EAIpC,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,MAAM;;;;CAIT,CAAC;AAkCX,eAAO,MAAM,cAAc,iDACmC,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAkO7C,eAAO,MAAM,SAAS,uEAAqD,CAAC;AAE5E,eAAO,MAAM,mBAAmB,WAAY,MAAM,mHAK7C,CAAC;AAEN,eAAO,MAAM,eAAe,gHAI3B,CAAC"}
@@ -2,7 +2,7 @@ import type { DisplayConfig } from '../DisplayConfig.js';
2
2
  import type { StatsColumnNames } from '../Show.js';
3
3
  import type { TestRunResults } from '../Test.js';
4
4
  export declare const showStats: <I, O, T>({ testRun, displayConfig, selectColumns, }: {
5
- testRun: Pick<TestRunResults<I, O, T>, 'stats'>;
5
+ testRun: Pick<TestRunResults<I, O, T>, 'stats' | 'testCaseHashes'>;
6
6
  displayConfig?: Partial<DisplayConfig>;
7
7
  selectColumns?: StatsColumnNames[];
8
8
  }) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/internal/stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAUvD,OAAO,KAAK,EAAc,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AA2F/C,eAAO,MAAM,SAAS,wDAanB;IACC,OAAO,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,aAAa,CAAC,EAAE,QAAQ,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC,KAAG,MAgCH,CAAC"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/internal/stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAUvD,OAAO,KAAK,EAAc,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAgG/C,eAAO,MAAM,SAAS,wDAcnB;IACC,OAAO,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,QAAQ,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC,KAAG,MAgCH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TestRepository","exports","LiveLayer","makeSqliteLiveLayer","SqliteTestLayer"],"sources":["../../src/Test.repository.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAiE,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAkD1D,MAAMW,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGvB,QAAQ,CAACuB,cAAc;AAC9C,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAGzB,QAAQ,CAACyB,SAAS;AACpC,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG1B,QAAQ,CAAC0B,mBAAmB;AACxD,MAAMC,eAAe,GAAAH,OAAA,CAAAG,eAAA,GAAG3B,QAAQ,CAAC2B,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"Test.repository.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TestRepository","exports","LiveLayer","makeSqliteLiveLayer","SqliteTestLayer"],"sources":["../../src/Test.repository.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAiE,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAqE1D,MAAMW,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGvB,QAAQ,CAACuB,cAAc;AAC9C,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAGzB,QAAQ,CAACyB,SAAS;AACpC,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG1B,QAAQ,CAAC0B,mBAAmB;AACxD,MAAMC,eAAe,GAAAH,OAAA,CAAAG,eAAA,GAAG3B,QAAQ,CAAC2B,eAAe","ignoreList":[]}
@@ -70,7 +70,8 @@ const test = ({
70
70
  },
71
71
  program,
72
72
  classify,
73
- ordering
73
+ ordering,
74
+ total
74
75
  }) => {
75
76
  const t0 = _nodePerf_hooks.performance.now();
76
77
  return program(input).pipe(P.Effect.map(result => {
@@ -84,6 +85,8 @@ const test = ({
84
85
  label: classify(result, expected),
85
86
  timeMillis: t1 - t0
86
87
  });
88
+ }), P.Effect.tap(() => {
89
+ process.stdout.write(`PROGRESS: ${ordering + 1}/${total}\r`);
87
90
  }));
88
91
  };
89
92
  exports.test = test;
@@ -98,14 +101,14 @@ const all = ({
98
101
  concurrency: 1
99
102
  }) => P.Effect.gen(function* () {
100
103
  const repository = yield* _TestRepositorySqlite.TestRepository;
101
- const currentTestRun = yield* repository.getOrCreateCurrentTestRun(name);
102
- yield* repository.clearTestRun(currentTestRun);
104
+ yield* repository.getOrCreateCurrentTestRun(name);
103
105
  let ordering = 0;
104
106
  return P.Stream.fromIterable(testCases).pipe(P.Stream.mapEffect(testCase => test({
105
107
  ordering: ordering++,
106
108
  testCase,
107
109
  program,
108
- classify
110
+ classify,
111
+ total: testCases.length
109
112
  }), {
110
113
  concurrency,
111
114
  unordered: false
@@ -1 +1 @@
1
- {"version":3,"file":"Test.js","names":["_nodeCrypto","require","_nodePerf_hooks","P","_interopRequireWildcard","_Classify","_TestRepositorySqlite","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Schema","Struct","String","ordering","Int","Unknown","LabelSchema","tags","Array","timeMillis","Number","TestRunResults","emptyFromTestRun","testResultsByTestCaseHash","testCaseHashes","stats","Stats","empty","test","testCase","program","classify","t0","performance","now","pipe","Effect","map","t1","all","testCases","makeClassify","defaultIsEqual","defaultIsNil","name","concurrency","gen","repository","TestRepository","currentTestRun","getOrCreateCurrentTestRun","clearTestRun","Stream","fromIterable","mapEffect","unordered","tap","testResult","insertTestResult","runCollectRecord","testRun","testResults$","runFoldEffect","run","undefined","logWarning","push","precision","recall","times","hash","timeMean","Option","some","reduce","mean","length","timeMax","max","Math","timeMin","min","Infinity","timeMedian","median","diff","previousTestRun","match","onNone","onSome","previousStats","TP","TN","FP","FN"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.js","names":["_nodeCrypto","require","_nodePerf_hooks","P","_interopRequireWildcard","_Classify","_TestRepositorySqlite","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Schema","Struct","String","ordering","Int","Unknown","LabelSchema","tags","Array","timeMillis","Number","TestRunResults","emptyFromTestRun","testResultsByTestCaseHash","testCaseHashes","stats","Stats","empty","test","testCase","program","classify","total","t0","performance","now","pipe","Effect","map","t1","tap","process","stdout","write","all","testCases","makeClassify","defaultIsEqual","defaultIsNil","name","concurrency","gen","repository","TestRepository","getOrCreateCurrentTestRun","Stream","fromIterable","mapEffect","length","unordered","testResult","insertTestResult","runCollectRecord","testRun","testResults$","runFoldEffect","run","undefined","logWarning","push","precision","recall","times","hash","timeMean","Option","some","reduce","mean","timeMax","max","Math","timeMin","min","Infinity","timeMedian","median","diff","previousTestRun","match","onNone","onSome","previousStats","TP","TN","FP","FN"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.makeSqliteLiveLayer = exports.TestRepository = exports.SqliteTestLayer = exports.LiveLayer = void 0;
6
+ exports.tables = exports.makeSqliteLiveLayer = exports.TestRepository = exports.SqliteTestLayer = exports.LiveLayer = void 0;
7
7
  var Sql = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql"));
8
8
  var Sqlite = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql-sqlite-node"));
9
9
  var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
@@ -11,7 +11,7 @@ var _Classify = /*#__PURE__*/require("./Classify.js");
11
11
  var _Schema = /*#__PURE__*/require("./lib/Schema.js");
12
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
- const tables = {
14
+ const tables = exports.tables = {
15
15
  testResults: 'test-results',
16
16
  testRuns: 'test-runs',
17
17
  testRunResults: 'test-run-results'
@@ -37,6 +37,10 @@ const HasResultsSchema = /*#__PURE__*/P.Schema.Struct({
37
37
  count: P.Schema.Int
38
38
  }).pipe(P.Schema.Array);
39
39
  const TestRunsReadSchema = /*#__PURE__*/TestRunReadSchema.pipe(P.Schema.Array);
40
+ const TestRunResultsSchema = /*#__PURE__*/P.Schema.Struct({
41
+ testRun: P.Schema.Int,
42
+ testResult: P.Schema.String
43
+ }).pipe(P.Schema.Array);
40
44
  const TestRepository = exports.TestRepository = /*#__PURE__*/P.Context.GenericTag('TestRunRepository');
41
45
  const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
42
46
  const sql = yield* Sql.client.Client;
@@ -71,25 +75,26 @@ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
71
75
  UNIQUE (testRun, testResult)
72
76
  );
73
77
  `;
74
- const insertTestResult = (testResult, name) => P.Effect.gen(function* () {
78
+ /** Assumes that a `TestRun` with hash=null exists. */
79
+ const insertTestResult = (testResult, name) => sql.withTransaction(P.Effect.gen(function* () {
75
80
  const encoded = yield* P.Schema.encode(TestResultWriteSchema)(testResult);
76
81
  yield* sql`
77
- INSERT INTO ${sql(tables.testResults)}
78
- ${sql.insert(encoded)}
79
- ON CONFLICT(id) DO NOTHING;
80
- `;
82
+ INSERT INTO ${sql(tables.testResults)}
83
+ ${sql.insert(encoded)}
84
+ ON CONFLICT(id) DO NOTHING;
85
+ `;
81
86
  yield* sql`
82
- INSERT INTO ${sql(tables.testRunResults)}
83
- VALUES (
84
- (
85
- SELECT id FROM ${sql(tables.testRuns)}
86
- WHERE hash IS NULL AND name = ${name}
87
- ),
88
- ${encoded.id}
89
- )
90
- ON CONFLICT(testRun, testResult) DO NOTHING;
91
- `;
92
- });
87
+ INSERT INTO ${sql(tables.testRunResults)}
88
+ VALUES (
89
+ (
90
+ SELECT id FROM ${sql(tables.testRuns)}
91
+ WHERE hash IS NULL AND name = ${name}
92
+ ),
93
+ ${encoded.id}
94
+ )
95
+ ON CONFLICT(testRun, testResult) DO NOTHING;
96
+ `;
97
+ }));
93
98
  const getTestResultsStream = testRun => P.Effect.gen(function* () {
94
99
  const raw = yield* sql`
95
100
  SELECT res.* FROM ${sql(tables.testResults)} res
@@ -118,21 +123,18 @@ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
118
123
  const p = yield* P.Schema.decode(TestRunsReadSchema)(r);
119
124
  return P.Array.head(p);
120
125
  });
121
- // const getPreviousTestResultsStream = (name: string) =>
122
- // sql<TestResultRead>`
123
- // SELECT res.* FROM ${sql(tables.testResults)} res
124
- // JOIN ${sql(tables.testRunResults)} runres ON res.hash = runres.testResult
125
- // JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
126
- // WHERE runs.hash IS NULL AND runs.name = ${name};
127
- // `.stream.pipe(
128
- // P.Stream.mapEffect(P.Schema.decode(TestResultSchema)),
129
- // );
130
126
  const getAllTestRuns = P.Effect.gen(function* () {
131
127
  const results = yield* sql`
132
128
  SELECT * from ${sql(tables.testRuns)};
133
129
  `;
134
130
  return yield* P.Schema.decode(TestRunsReadSchema)(results);
135
131
  });
132
+ const getAllTestRunResults = P.Effect.gen(function* () {
133
+ const results = yield* sql`
134
+ SELECT * from ${sql(tables.testRunResults)};
135
+ `;
136
+ return yield* P.Schema.decode(TestRunResultsSchema)(results);
137
+ });
136
138
  const getAllTestResults = P.Effect.gen(function* () {
137
139
  const results = yield* sql`
138
140
  SELECT * from ${sql(tables.testResults)};
@@ -156,17 +158,41 @@ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
156
158
  }
157
159
  return current;
158
160
  }).pipe(P.Effect.map(P.Array.unsafeGet(0)));
159
- const clearTestRun = testRun => P.Effect.gen(function* () {
161
+ const clearStale = ({
162
+ name,
163
+ keep = 1
164
+ }) => sql.withTransaction(P.Effect.gen(function* () {
165
+ const staleTestRuns = yield* P.Schema.decode(TestRunsReadSchema)(yield* sql`
166
+ SELECT *
167
+ FROM ${sql(tables.testRuns)}
168
+ WHERE hash IS NOT NULL
169
+ AND name = ${name}
170
+ ORDER BY id DESC
171
+ LIMIT -1 OFFSET ${keep};
172
+ `);
173
+ if (staleTestRuns.length === 0) {
174
+ return;
175
+ }
176
+ const ids = staleTestRuns.map(r => r.id);
160
177
  yield* sql`
161
- DELETE FROM ${sql(tables.testRunResults)}
162
- WHERE testRun = ${testRun.id};
163
- `;
164
- });
178
+ DELETE FROM ${sql(tables.testRunResults)}
179
+ WHERE testRun IN ${sql.in(ids)};
180
+ `;
181
+ yield* sql`
182
+ DELETE FROM ${sql(tables.testRuns)}
183
+ WHERE id IN ${sql.in(ids)};
184
+ `;
185
+ yield* sql`
186
+ DELETE FROM ${sql(tables.testResults)}
187
+ WHERE id NOT IN (
188
+ SELECT DISTINCT testResult FROM ${sql(tables.testRunResults)}
189
+ );
190
+ `;
191
+ }));
165
192
  const commitCurrentTestRun = ({
166
193
  name,
167
194
  hash
168
195
  }) => P.Effect.gen(function* () {
169
- // Transaction?
170
196
  yield* sql`
171
197
  UPDATE ${sql(tables.testRuns)}
172
198
  SET hash = ${hash}
@@ -184,7 +210,7 @@ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
184
210
  `;
185
211
  });
186
212
  const service = {
187
- clearTestRun,
213
+ clearStale,
188
214
  commitCurrentTestRun,
189
215
  getAllTestResults,
190
216
  getAllTestRuns,
@@ -192,16 +218,17 @@ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
192
218
  getPreviousTestRun,
193
219
  getTestResultsStream,
194
220
  hasResults,
195
- insertTestResult
221
+ insertTestResult,
222
+ getAllTestRunResults
196
223
  };
197
224
  return service;
198
225
  });
199
226
  const LiveLayer = exports.LiveLayer = /*#__PURE__*/P.Layer.effect(TestRepository, makeTestRepository);
200
227
  const makeSqliteLiveLayer = dbPath => Sqlite.client.layer(P.Config.all({
201
- filename: P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe(P.Config.withDefault(dbPath))
228
+ filename: P.Config.sync(() => dbPath)
202
229
  }));
203
230
  exports.makeSqliteLiveLayer = makeSqliteLiveLayer;
204
231
  const SqliteTestLayer = exports.SqliteTestLayer = /*#__PURE__*/Sqlite.client.layer( /*#__PURE__*/P.Config.all({
205
- filename: /*#__PURE__*/P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe( /*#__PURE__*/P.Config.withDefault('test.db'))
232
+ filename: /*#__PURE__*/P.Config.sync(() => ':memory:')
206
233
  }));
207
234
  //# sourceMappingURL=Test.repository.sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.js","names":["Sql","_interopRequireWildcard","require","Sqlite","P","_Classify","_Schema","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","tables","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","pipe","Array","TestRunReadSchema","name","hash","NullOr","HasResultsSchema","count","TestRunsReadSchema","TestRepository","exports","Context","GenericTag","makeTestRepository","Effect","gen","sql","client","Client","insertTestResult","testResult","encoded","encode","insert","getTestResultsStream","testRun","raw","decode","Stream","fromIterableEffect","hasResults","b","getPreviousTestRun","p","head","getAllTestRuns","results","getAllTestResults","getOrCreateCurrentTestRun","current","length","map","unsafeGet","clearTestRun","commitCurrentTestRun","service","LiveLayer","Layer","effect","makeSqliteLiveLayer","dbPath","layer","Config","all","filename","string","withDefault","SqliteTestLayer"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.repository.sqlite.js","names":["Sql","_interopRequireWildcard","require","Sqlite","P","_Classify","_Schema","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","tables","exports","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","pipe","Array","TestRunReadSchema","name","hash","NullOr","HasResultsSchema","count","TestRunsReadSchema","TestRunResultsSchema","testRun","testResult","TestRepository","Context","GenericTag","makeTestRepository","Effect","gen","sql","client","Client","insertTestResult","withTransaction","encoded","encode","insert","getTestResultsStream","raw","decode","Stream","fromIterableEffect","hasResults","b","getPreviousTestRun","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getOrCreateCurrentTestRun","current","length","map","unsafeGet","clearStale","keep","staleTestRuns","ids","in","commitCurrentTestRun","service","LiveLayer","Layer","effect","makeSqliteLiveLayer","dbPath","layer","Config","all","filename","sync","SqliteTestLayer"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var t = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/vitest"));
4
+ var Sql = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/sql"));
4
5
  var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
5
6
  var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.js"));
6
7
  var TR = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.repository.sqlite.js"));
@@ -30,20 +31,117 @@ t.describe('Test.repository.sqlite', () => {
30
31
  const b = yield* repository.getOrCreateCurrentTestRun(name);
31
32
  t.assert.notStrictEqual(a, b);
32
33
  }).pipe(P.Effect.tapError(e => P.Console.error(e)), P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
33
- t.effect('clearTestRun', () => P.Effect.gen(function* () {
34
- const name = 'clearTestRun';
34
+ t.effect.only('clearStale', () => P.Effect.gen(function* () {
35
35
  const repository = yield* TR.TestRepository;
36
- const currentTestRun = yield* repository.getOrCreateCurrentTestRun(name);
37
- const results = yield* T.all({
38
- testCases,
39
- program: add,
40
- name
41
- }).pipe(P.Effect.flatMap(P.Stream.runCollect));
42
- t.assert.strictEqual(results.length, 3);
43
- yield* repository.clearTestRun(currentTestRun);
44
- const postClear = yield* repository.getTestResultsStream(currentTestRun).pipe(P.Stream.runCollect);
45
- t.assert.strictEqual(postClear.length, 0);
46
- }).pipe(P.Effect.tapError(e => P.Console.error(e)), P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
36
+ const nameA = 'to-be-cleared';
37
+ const nameB = 'dont-clear-me';
38
+ // Set up some alternative test runs,
39
+ // which are not supposed to be cleared.
40
+ yield* T.all({
41
+ testCases: [{
42
+ input: 'a',
43
+ expected: 'A!'
44
+ }],
45
+ program: s => P.Effect.succeed(s.toUpperCase()),
46
+ name: nameB
47
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
48
+ yield* repository.commitCurrentTestRun({
49
+ name: nameB,
50
+ hash: `${nameB}-1`
51
+ });
52
+ yield* T.all({
53
+ testCases: [{
54
+ input: 'a',
55
+ expected: 'A!'
56
+ }],
57
+ program: s => P.Effect.succeed(s.toUpperCase() + '!'),
58
+ name: nameB
59
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
60
+ yield* repository.commitCurrentTestRun({
61
+ name: nameB,
62
+ hash: `${nameB}-2`
63
+ });
64
+ yield* T.all({
65
+ testCases: [{
66
+ input: 'a',
67
+ expected: 'A!'
68
+ }],
69
+ program: s => P.Effect.succeed(s.toUpperCase() + '!!'),
70
+ name: nameB
71
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
72
+ // Set up the main test runs to be cleared.
73
+ yield* T.all({
74
+ testCases: [{
75
+ input: 1,
76
+ expected: 10
77
+ }],
78
+ program: n => P.Effect.succeed(n + 1),
79
+ name: nameA
80
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
81
+ yield* repository.commitCurrentTestRun({
82
+ name: nameA,
83
+ hash: `${nameA}-1`
84
+ });
85
+ yield* T.all({
86
+ testCases: [{
87
+ input: 1,
88
+ expected: 10
89
+ }],
90
+ program: n => P.Effect.succeed(n + 2),
91
+ name: nameA
92
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
93
+ yield* repository.commitCurrentTestRun({
94
+ name: nameA,
95
+ hash: `${nameA}-2`
96
+ });
97
+ yield* T.all({
98
+ testCases: [{
99
+ input: 1,
100
+ expected: 10
101
+ }],
102
+ program: n => P.Effect.succeed(n * 10),
103
+ name: nameA
104
+ }).pipe(P.Effect.flatMap(P.Stream.runDrain));
105
+ yield* repository.clearStale({
106
+ name: nameA
107
+ });
108
+ const sql = yield* Sql.client.Client;
109
+ const all = yield* sql`
110
+ SELECT
111
+ res.result,
112
+ runs.*
113
+ FROM ${sql(TR.tables.testResults)} res
114
+ JOIN ${sql(TR.tables.testRunResults)} runres ON res.id = runres.testResult
115
+ JOIN ${sql(TR.tables.testRuns)} runs ON runs.id = runres.testRun
116
+ ORDER BY ordering ASC;
117
+ `;
118
+ t.assert.deepStrictEqual(all, [{
119
+ result: '"A"',
120
+ id: 1,
121
+ name: nameB,
122
+ hash: `${nameB}-1`
123
+ }, {
124
+ result: '"A!"',
125
+ id: 2,
126
+ name: nameB,
127
+ hash: `${nameB}-2`
128
+ }, {
129
+ result: '"A!!"',
130
+ id: 3,
131
+ name: nameB,
132
+ hash: null
133
+ }, {
134
+ result: '3',
135
+ id: 5,
136
+ name: nameA,
137
+ hash: `${nameA}-2`
138
+ }, {
139
+ result: '10',
140
+ id: 6,
141
+ name: nameA,
142
+ hash: null
143
+ }]);
144
+ }).pipe(P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
47
145
  t.effect('insertTestResult', () => P.Effect.gen(function* () {
48
146
  const name = 'insertTestResult';
49
147
  const repository = yield* TR.TestRepository;