@creative-introvert/tons-of-tests 0.4.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 +273 -0
- package/dist/cjs/Classify.js +36 -0
- package/dist/cjs/Classify.js.map +1 -0
- package/dist/cjs/DisplayConfig.js +34 -0
- package/dist/cjs/DisplayConfig.js.map +1 -0
- package/dist/cjs/Error.js +35 -0
- package/dist/cjs/Error.js.map +1 -0
- package/dist/cjs/Show.js +27 -0
- package/dist/cjs/Show.js.map +1 -0
- package/dist/cjs/Test.js +36 -0
- package/dist/cjs/Test.js.map +1 -0
- package/dist/cjs/Test.repository.js +37 -0
- package/dist/cjs/Test.repository.js.map +1 -0
- package/dist/cjs/index.js +51 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/Classify.js +123 -0
- package/dist/cjs/internal/Classify.js.map +1 -0
- package/dist/cjs/internal/DisplayConfig.js +23 -0
- package/dist/cjs/internal/DisplayConfig.js.map +1 -0
- package/dist/cjs/internal/Test.js +178 -0
- package/dist/cjs/internal/Test.js.map +1 -0
- package/dist/cjs/internal/Test.repository.sqlite.js +230 -0
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -0
- package/dist/cjs/internal/Test.repository.sqlite.spec.js +96 -0
- package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -0
- package/dist/cjs/internal/common.js +70 -0
- package/dist/cjs/internal/common.js.map +1 -0
- package/dist/cjs/internal/diff.js +86 -0
- package/dist/cjs/internal/diff.js.map +1 -0
- package/dist/cjs/internal/format-diff.js +162 -0
- package/dist/cjs/internal/format-diff.js.map +1 -0
- package/dist/cjs/internal/format-diff.spec.js +102 -0
- package/dist/cjs/internal/format-diff.spec.js.map +1 -0
- package/dist/cjs/internal/lib/Schema.js +39 -0
- package/dist/cjs/internal/lib/Schema.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/clone.js +35 -0
- package/dist/cjs/internal/lib/jsondiffpatch/clone.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js +47 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js +42 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js +26 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js +25 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js +18 -0
- package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js +76 -0
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js +388 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js +24 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js +157 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js +123 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js +169 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js +198 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js +243 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js +178 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/index.js +65 -0
- package/dist/cjs/internal/lib/jsondiffpatch/index.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/pipe.js +110 -0
- package/dist/cjs/internal/lib/jsondiffpatch/pipe.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/processor.js +71 -0
- package/dist/cjs/internal/lib/jsondiffpatch/processor.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/types.js +6 -0
- package/dist/cjs/internal/lib/jsondiffpatch/types.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js +92 -0
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
- package/dist/cjs/internal/pack.js +81 -0
- package/dist/cjs/internal/pack.js.map +1 -0
- package/dist/cjs/internal/stats.js +144 -0
- package/dist/cjs/internal/stats.js.map +1 -0
- package/dist/cjs/internal/summarize.js +173 -0
- package/dist/cjs/internal/summarize.js.map +1 -0
- package/dist/cjs/pack.js +33 -0
- package/dist/cjs/pack.js.map +1 -0
- package/dist/cjs/prelude.js +95 -0
- package/dist/cjs/prelude.js.map +1 -0
- package/dist/dts/Classify.d.ts +20 -0
- package/dist/dts/Classify.d.ts.map +1 -0
- package/dist/dts/DisplayConfig.d.ts +19 -0
- package/dist/dts/DisplayConfig.d.ts.map +1 -0
- package/dist/dts/Error.d.ts +10 -0
- package/dist/dts/Error.d.ts.map +1 -0
- package/dist/dts/Show.d.ts +37 -0
- package/dist/dts/Show.d.ts.map +1 -0
- package/dist/dts/Test.d.ts +48 -0
- package/dist/dts/Test.d.ts.map +1 -0
- package/dist/dts/Test.repository.d.ts +40 -0
- package/dist/dts/Test.repository.d.ts.map +1 -0
- package/dist/dts/index.d.ts +8 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/Classify.d.ts +34 -0
- package/dist/dts/internal/Classify.d.ts.map +1 -0
- package/dist/dts/internal/DisplayConfig.d.ts +3 -0
- package/dist/dts/internal/DisplayConfig.d.ts.map +1 -0
- package/dist/dts/internal/Test.d.ts +39 -0
- package/dist/dts/internal/Test.d.ts.map +1 -0
- package/dist/dts/internal/Test.repository.sqlite.d.ts +10 -0
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -0
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts +2 -0
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts.map +1 -0
- package/dist/dts/internal/common.d.ts +11 -0
- package/dist/dts/internal/common.d.ts.map +1 -0
- package/dist/dts/internal/diff.d.ts +9 -0
- package/dist/dts/internal/diff.d.ts.map +1 -0
- package/dist/dts/internal/format-diff.d.ts +3 -0
- package/dist/dts/internal/format-diff.d.ts.map +1 -0
- package/dist/dts/internal/format-diff.spec.d.ts +2 -0
- package/dist/dts/internal/format-diff.spec.d.ts.map +1 -0
- package/dist/dts/internal/lib/Schema.d.ts +4 -0
- package/dist/dts/internal/lib/Schema.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts +2 -0
- package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts +18 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts +15 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts +2 -0
- package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts +14 -0
- package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts +16 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts +4 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts +8 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts +8 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts +30 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +60 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts +28 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts +62 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/index.d.ts +17 -0
- package/dist/dts/internal/lib/jsondiffpatch/index.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts +25 -0
- package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +20 -0
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/types.d.ts +36 -0
- package/dist/dts/internal/lib/jsondiffpatch/types.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts +19 -0
- package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts.map +1 -0
- package/dist/dts/internal/pack.d.ts +2 -0
- package/dist/dts/internal/pack.d.ts.map +1 -0
- package/dist/dts/internal/stats.d.ts +9 -0
- package/dist/dts/internal/stats.d.ts.map +1 -0
- package/dist/dts/internal/summarize.d.ts +11 -0
- package/dist/dts/internal/summarize.d.ts.map +1 -0
- package/dist/dts/pack.d.ts +2 -0
- package/dist/dts/pack.d.ts.map +1 -0
- package/dist/dts/prelude.d.ts +24 -0
- package/dist/dts/prelude.d.ts.map +1 -0
- package/dist/esm/Classify.js +13 -0
- package/dist/esm/Classify.js.map +1 -0
- package/dist/esm/DisplayConfig.js +11 -0
- package/dist/esm/DisplayConfig.js.map +1 -0
- package/dist/esm/Error.js +12 -0
- package/dist/esm/Error.js.map +1 -0
- package/dist/esm/Show.js +27 -0
- package/dist/esm/Show.js.map +1 -0
- package/dist/esm/Test.js +13 -0
- package/dist/esm/Test.js.map +1 -0
- package/dist/esm/Test.repository.js +14 -0
- package/dist/esm/Test.repository.js.map +1 -0
- package/dist/esm/index.js +28 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/Classify.js +100 -0
- package/dist/esm/internal/Classify.js.map +1 -0
- package/dist/esm/internal/DisplayConfig.js +23 -0
- package/dist/esm/internal/DisplayConfig.js.map +1 -0
- package/dist/esm/internal/Test.js +155 -0
- package/dist/esm/internal/Test.js.map +1 -0
- package/dist/esm/internal/Test.repository.sqlite.js +207 -0
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -0
- package/dist/esm/internal/Test.repository.sqlite.spec.js +73 -0
- package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -0
- package/dist/esm/internal/common.js +66 -0
- package/dist/esm/internal/common.js.map +1 -0
- package/dist/esm/internal/diff.js +82 -0
- package/dist/esm/internal/diff.js.map +1 -0
- package/dist/esm/internal/format-diff.js +158 -0
- package/dist/esm/internal/format-diff.js.map +1 -0
- package/dist/esm/internal/format-diff.spec.js +79 -0
- package/dist/esm/internal/format-diff.spec.js.map +1 -0
- package/dist/esm/internal/lib/Schema.js +16 -0
- package/dist/esm/internal/lib/Schema.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/clone.js +35 -0
- package/dist/esm/internal/lib/jsondiffpatch/clone.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js +47 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js +38 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js +22 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js +21 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js +18 -0
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js +49 -0
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js +384 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js +24 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js +153 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js +123 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js +165 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js +198 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js +239 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js +174 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/index.js +61 -0
- package/dist/esm/internal/lib/jsondiffpatch/index.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js +110 -0
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/processor.js +71 -0
- package/dist/esm/internal/lib/jsondiffpatch/processor.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/types.js +6 -0
- package/dist/esm/internal/lib/jsondiffpatch/types.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js +88 -0
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
- package/dist/esm/internal/pack.js +58 -0
- package/dist/esm/internal/pack.js.map +1 -0
- package/dist/esm/internal/stats.js +117 -0
- package/dist/esm/internal/stats.js.map +1 -0
- package/dist/esm/internal/summarize.js +146 -0
- package/dist/esm/internal/summarize.js.map +1 -0
- package/dist/esm/pack.js +10 -0
- package/dist/esm/pack.js.map +1 -0
- package/dist/esm/prelude.js +72 -0
- package/dist/esm/prelude.js.map +1 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# tots (tons-of-tests)
|
|
2
|
+
|
|
3
|
+
`tons-of-test`, (or `tots` for short, ) is a test runner, simlar to [Jest](https://jestjs.io/), [vitest](https://vitest.dev/) or [ava](https://github.com/avajs/ava), that focuses on testing predictive functions (e.g. search, auto-complete, or ML).
|
|
4
|
+
|
|
5
|
+
## When you SHOULD use `tots`
|
|
6
|
+
|
|
7
|
+
- you have tons of test cases, and your tests purely compare inputs and outputs of the function under test
|
|
8
|
+
- you are testing a statistical model, or a predictive function, where 100% successful test results are impossible or impractical
|
|
9
|
+
- you are testing a (flaky) legacy system
|
|
10
|
+
|
|
11
|
+
## When you SHOULD NOT use `tots`
|
|
12
|
+
|
|
13
|
+
- when your tests are few, and predominantely example-based; use the conventional test runners instead (jest, ava, vitest)
|
|
14
|
+
- when you require your testing framework to do all sorts of magic (auto-mocking, spies, etc)
|
|
15
|
+
|
|
16
|
+
## Before Getting Started
|
|
17
|
+
|
|
18
|
+
Before looking at code examples, some notes on the design:
|
|
19
|
+
|
|
20
|
+
1. Unlike tools like jest or vitest, tots's CLI does not provide a
|
|
21
|
+
runtime, but is imported as a library. Check the ["Why No Runtime?" section](#why-no-runtime)
|
|
22
|
+
on the reasoning.
|
|
23
|
+
2. Though only required minimally, the library depends on using
|
|
24
|
+
[effect](https://effect.website/) (the missing standard library for
|
|
25
|
+
TypeScript). At minimum, your function under test has to return an [Effect](https://effect.website/docs/guides/essentials/the-effect-type).
|
|
26
|
+
If your function doesn't already do so, checkout the [Usage](#usage) below, to see how to trivially convert it.
|
|
27
|
+
|
|
28
|
+
Further, a cautionary note on stability:
|
|
29
|
+
|
|
30
|
+
- The library is still in alpha, and will, regularly, without warning, release
|
|
31
|
+
breaking changes.
|
|
32
|
+
- A beta phase is planned, which will keep releasing breaking changes, but
|
|
33
|
+
provide guidance on migration paths, or even code-mods for automatic
|
|
34
|
+
migration.
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
With your package manager of choice, install the following packages:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
@creative-introvert/tots
|
|
42
|
+
@creative-introvert/tots-cli
|
|
43
|
+
effect
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The examples use `pnpm` and `pnpx` + `tsx` to execute the files. Replace with
|
|
47
|
+
whatever you use in your setup (e.g. `npm` and `ts-node`, or `yarn` and `tsc +
|
|
48
|
+
node`, etc.)
|
|
49
|
+
|
|
50
|
+
### With CLI
|
|
51
|
+
|
|
52
|
+
Define your test-suite.
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
// my-test-suite.ts
|
|
56
|
+
import * as CLI from '@creative-introvert/tots-cli';
|
|
57
|
+
import {Effect} from 'effect';
|
|
58
|
+
|
|
59
|
+
const myFunction = (input: number) => Promise.resolve(input * 1.7);
|
|
60
|
+
|
|
61
|
+
void CLI.run({
|
|
62
|
+
testSuite: {
|
|
63
|
+
// Convert myFunction to Effect-returning.
|
|
64
|
+
program: (input: number) => Effect.promise(() => myFunction(input)),
|
|
65
|
+
testCases: [
|
|
66
|
+
{input: 0, expected: 0},
|
|
67
|
+
{input: 1, expected: 2},
|
|
68
|
+
{input: 2, expected: 3},
|
|
69
|
+
{input: 3, expected: 4},
|
|
70
|
+
{input: 4, expected: 5},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
testSuiteName: 'simple',
|
|
74
|
+
// Currently, test results are written to the file-system.
|
|
75
|
+
// This will be replaced by an SQLite backend soon™.
|
|
76
|
+
dirPath: '.metrics',
|
|
77
|
+
filePostfix: 'ptest',
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Summarize
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
pnpx tsx my-test-suite.ts summarize
|
|
85
|
+
|
|
86
|
+
=============================================================================
|
|
87
|
+
SUMMARY
|
|
88
|
+
=============================================================================
|
|
89
|
+
index | id | input | tags | label | expected | result | previous result
|
|
90
|
+
-----------------------------------------------------------------------------
|
|
91
|
+
1/5 │ 5feceb66 │ 0 │ │ TP │ 0 │ 0 │ ∅
|
|
92
|
+
-----------------------------------------------------------------------------
|
|
93
|
+
2/5 │ 6b86b273 │ 1 │ │ FP │ 2 │ 1.7 │ ∅
|
|
94
|
+
-----------------------------------------------------------------------------
|
|
95
|
+
3/5 │ d4735e3a │ 2 │ │ FP │ 3 │ 3.4 │ ∅
|
|
96
|
+
-----------------------------------------------------------------------------
|
|
97
|
+
4/5 │ 4e074085 │ 3 │ │ FP │ 4 │ 5.1 │ ∅
|
|
98
|
+
-----------------------------------------------------------------------------
|
|
99
|
+
5/5 │ 4b227777 │ 4 │ │ FP │ 5 │ 6.8 │ ∅
|
|
100
|
+
=============================================================================
|
|
101
|
+
index | id | input | tags | label | expected | result | previous result
|
|
102
|
+
=============================================================================
|
|
103
|
+
|
|
104
|
+
======================================
|
|
105
|
+
STATS
|
|
106
|
+
======================================
|
|
107
|
+
TP | TN | FP | FN | precision | recall
|
|
108
|
+
--------------------------------------
|
|
109
|
+
1 | 0 | 4 | 0 | 0.20 | 1.00
|
|
110
|
+
======================================
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### Summarize With Labels Filter
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
pnpx tsx my-test-suite.ts summarize --labels TP
|
|
117
|
+
|
|
118
|
+
=============================================================================
|
|
119
|
+
SUMMARY
|
|
120
|
+
=============================================================================
|
|
121
|
+
index | id | input | tags | label | expected | result | previous result
|
|
122
|
+
-----------------------------------------------------------------------------
|
|
123
|
+
1/1 │ 5feceb66 │ 0 │ │ TP │ 0 │ 0 │ ∅
|
|
124
|
+
=============================================================================
|
|
125
|
+
index | id | input | tags | label | expected | result | previous result
|
|
126
|
+
=============================================================================
|
|
127
|
+
|
|
128
|
+
======================================
|
|
129
|
+
STATS
|
|
130
|
+
======================================
|
|
131
|
+
TP | TN | FP | FN | precision | recall
|
|
132
|
+
--------------------------------------
|
|
133
|
+
1 | 0 | 0 | 0 | 1.00 | 1.00
|
|
134
|
+
======================================
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### Write Test Results
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
pnpx tsx my-test-suite.ts write
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Diff
|
|
144
|
+
|
|
145
|
+
Assuming you have (1) previous test results, and (2) something changed, e.g. the
|
|
146
|
+
inputs/expecations of your test suite, or the function-under-test
|
|
147
|
+
implementation.
|
|
148
|
+
|
|
149
|
+
```diff
|
|
150
|
+
diff --git a/my-test-suite.ts b/my-test-suite.ts
|
|
151
|
+
index 21cd713..ab1b6dc 100644
|
|
152
|
+
--- a/my-test-suite.ts
|
|
153
|
+
+++ b/my-test-suite.ts
|
|
154
|
+
@@ -1,7 +1,7 @@
|
|
155
|
+
import * as CLI from '@creative-introvert/tots-cli';
|
|
156
|
+
import {Effect} from 'effect';
|
|
157
|
+
|
|
158
|
+
-const myFunction = (input: number) => Promise.resolve(input * 1.7);
|
|
159
|
+
+const myFunction = (input: number) => Promise.resolve(input * 2);
|
|
160
|
+
|
|
161
|
+
void CLI.run({
|
|
162
|
+
testSuite: {
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
pnpx tsx my-test-suite.ts diff
|
|
167
|
+
# or, if you want it to process.exit(1) on diff
|
|
168
|
+
pnpx tsx my-test-suite.ts diff --ci
|
|
169
|
+
|
|
170
|
+
=============================================================================
|
|
171
|
+
SUMMARY
|
|
172
|
+
=============================================================================
|
|
173
|
+
index | id | input | tags | label | expected | result | previous result
|
|
174
|
+
-----------------------------------------------------------------------------
|
|
175
|
+
1/4 │ 6b86b273 │ 1 │ │ TP │ 2 │ 2 │ 1.7
|
|
176
|
+
-----------------------------------------------------------------------------
|
|
177
|
+
2/4 │ d4735e3a │ 2 │ │ FP │ 3 │ 4 │ 3.4
|
|
178
|
+
-----------------------------------------------------------------------------
|
|
179
|
+
3/4 │ 4e074085 │ 3 │ │ FP │ 4 │ 6 │ 5.1
|
|
180
|
+
-----------------------------------------------------------------------------
|
|
181
|
+
4/4 │ 4b227777 │ 4 │ │ FP │ 5 │ 8 │ 6.8
|
|
182
|
+
=============================================================================
|
|
183
|
+
index | id | input | tags | label | expected | result | previous result
|
|
184
|
+
=============================================================================
|
|
185
|
+
|
|
186
|
+
======================================
|
|
187
|
+
DIFF
|
|
188
|
+
======================================
|
|
189
|
+
TP | TN | FP | FN | precision | recall
|
|
190
|
+
--------------------------------------
|
|
191
|
+
0 │ 0 │ -1 │ 0 │ 0.05 │ 0.00
|
|
192
|
+
======================================
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Checkout `workspace/examples/src/with-cli` for more examples.
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
pnpx tsx <file-path>
|
|
199
|
+
# e.g.
|
|
200
|
+
pnpx tsx ./workspace/examples/src/with-cli/simple.ts
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Without CLI
|
|
204
|
+
|
|
205
|
+
For full control over execution, and if you're not afraid of using [effect](https://effect.website/)
|
|
206
|
+
you may simply import the runner functions individually.
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
import * as PT from '@creative-introvert/tots';
|
|
210
|
+
import {Console, Duration, Effect, Stream} from 'effect';
|
|
211
|
+
|
|
212
|
+
type Input = number;
|
|
213
|
+
type Result = number;
|
|
214
|
+
|
|
215
|
+
const program = (input: Input) =>
|
|
216
|
+
Effect.promise(() => Promise.resolve(input * 2)).pipe(
|
|
217
|
+
Effect.delay(Duration.millis(500)),
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
const testCases: PT.TestCase<Input, Result>[] = [
|
|
221
|
+
{input: 0, expected: 0},
|
|
222
|
+
{input: 1, expected: 1},
|
|
223
|
+
{input: 2, expected: 2},
|
|
224
|
+
{input: 3, expected: 3},
|
|
225
|
+
{input: 4, expected: 4},
|
|
226
|
+
];
|
|
227
|
+
|
|
228
|
+
await PT.testAll({
|
|
229
|
+
testCases,
|
|
230
|
+
program,
|
|
231
|
+
}).pipe(
|
|
232
|
+
PT.runFoldEffect,
|
|
233
|
+
Effect.tap(testRun => Console.log(PT.Show.summary({testRun}))),
|
|
234
|
+
Effect.runPromise,
|
|
235
|
+
);
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Checkout `workspace/examples/src/as-library` for more examples.
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
pnpx tsx <file-path>
|
|
242
|
+
# e.g.
|
|
243
|
+
pnpx tsx ./workspace/examples/src/as-library/simple.ts
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Why No Runtime?
|
|
247
|
+
|
|
248
|
+
Tools like jest and vitest provide a dedicated CLI, which the user can run,
|
|
249
|
+
separately from other entrypoints into their app. For example, jest provides
|
|
250
|
+
the `jest` binary, which, magically, finds all the test files, and executes
|
|
251
|
+
them, reporting on the results.
|
|
252
|
+
|
|
253
|
+
Unfortunately, this comes with a lot of complexity:
|
|
254
|
+
|
|
255
|
+
1. Unless the user provides their tests as ES5 JavaScript (not a thing these
|
|
256
|
+
days), jest has to figure out how transpile/compile the source. Given the
|
|
257
|
+
level of, let's call it, variation in JavaScript land (Typescript, and its
|
|
258
|
+
many different configurations, custom runtimes like svelte, ESM vs CommonJS,
|
|
259
|
+
etc), this is no easy feat. The code required for enabling this would easily
|
|
260
|
+
overshadow the actual test runner in terms of complexity.
|
|
261
|
+
2. As `jest` (etc) essentially behave as a _framework_ (jest calls _your_ code)
|
|
262
|
+
as opposed to a _library_ (you call jest), customization requires additional
|
|
263
|
+
complexity in the framework, which now has to provide various entrypoints
|
|
264
|
+
into its execution.
|
|
265
|
+
|
|
266
|
+
Alternatively, the library could hook into an existing test runner (I've seen
|
|
267
|
+
that vite provides some programatic context), but I have not yet looked deeper
|
|
268
|
+
into that. Though saving me from solving this problem myself, this would likely
|
|
269
|
+
come with its own limitations.
|
|
270
|
+
|
|
271
|
+
Providing `tots` as a library is maybe not as satisfying and
|
|
272
|
+
convenient as a dedicated binary, but is **vastly** simpler, and far more
|
|
273
|
+
powerful, enabling trivial extensibility for the user.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.values = exports.defaultIsEqual = exports.LabelSchema = void 0;
|
|
7
|
+
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/Classify.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
const values = exports.values = internal.values;
|
|
34
|
+
const defaultIsEqual = exports.defaultIsEqual = internal.defaultIsEqual;
|
|
35
|
+
const LabelSchema = exports.LabelSchema = internal.LabelSchema;
|
|
36
|
+
//# sourceMappingURL=Classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Classify.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","values","exports","defaultIsEqual","LabelSchema"],"sources":["../../src/Classify.ts"],"sourcesContent":[null],"mappings":";;;;;;AAEA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAmD,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,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;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAI5C,MAAMW,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAGvB,QAAQ,CAACuB,MAAM;AAC9B,MAAME,cAAc,GAAAD,OAAA,CAAAC,cAAA,GAAGzB,QAAQ,CAACyB,cAAc;AAa9C,MAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG1B,QAAQ,CAAC0B,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeDefault = void 0;
|
|
7
|
+
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/DisplayConfig.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
const makeDefault = exports.makeDefault = internal.makeDefault;
|
|
34
|
+
//# sourceMappingURL=DisplayConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisplayConfig.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","makeDefault","exports"],"sources":["../../src/DisplayConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAwD,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,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;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAoBjD,MAAMW,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGvB,QAAQ,CAACuB,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DuplicateTestCase = void 0;
|
|
7
|
+
var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./prelude.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
class DuplicateTestCase extends P.Data.TaggedError('DuplicateTestCase') {}
|
|
34
|
+
exports.DuplicateTestCase = DuplicateTestCase;
|
|
35
|
+
//# sourceMappingURL=Error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Error.js","names":["P","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DuplicateTestCase","Data","TaggedError","exports"],"sources":["../../src/Error.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,CAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAkC,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,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;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAE5B,MAAOW,iBAAqB,SAAQvB,CAAC,CAACwB,IAAI,CAACC,WAAW,CACxD,mBAAmB,CAIrB;AAAGC,OAAA,CAAAH,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
package/dist/cjs/Show.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "diff", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _diff.showDiff;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "stats", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _stats.showStats;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "summarize", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _summarize.showSummary;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
var _summarize = /*#__PURE__*/require("./internal/summarize.js");
|
|
25
|
+
var _diff = /*#__PURE__*/require("./internal/diff.js");
|
|
26
|
+
var _stats = /*#__PURE__*/require("./internal/stats.js");
|
|
27
|
+
//# sourceMappingURL=Show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Show.js","names":["_summarize","require","_diff","_stats"],"sources":["../../src/Show.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,UAAA,gBAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAD,OAAA;AACA,IAAAE,MAAA,gBAAAF,OAAA","ignoreList":[]}
|
package/dist/cjs/Test.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runCollectRecord = exports.diff = exports.all = void 0;
|
|
7
|
+
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/Test.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
const all = exports.all = internal.all;
|
|
34
|
+
const diff = exports.diff = internal.diff;
|
|
35
|
+
const runCollectRecord = exports.runCollectRecord = internal.runCollectRecord;
|
|
36
|
+
//# sourceMappingURL=Test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Test.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","all","exports","diff","runCollectRecord"],"sources":["../../src/Test.ts"],"sourcesContent":[null],"mappings":";;;;;;AAEA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAA+C,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,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;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AA+CxC,MAAMW,GAAG,GAAAC,OAAA,CAAAD,GAAA,GAAGvB,QAAQ,CAACuB,GAAG;AACxB,MAAME,IAAI,GAAAD,OAAA,CAAAC,IAAA,GAAGzB,QAAQ,CAACyB,IAAI;AAC1B,MAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG1B,QAAQ,CAAC0B,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeSqliteLiveLayer = exports.TestRepository = exports.SqliteTestLayer = exports.LiveLayer = void 0;
|
|
7
|
+
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/Test.repository.sqlite.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
const TestRepository = exports.TestRepository = internal.TestRepository;
|
|
34
|
+
const LiveLayer = exports.LiveLayer = internal.LiveLayer;
|
|
35
|
+
const makeSqliteLiveLayer = exports.makeSqliteLiveLayer = internal.makeSqliteLiveLayer;
|
|
36
|
+
const SqliteTestLayer = exports.SqliteTestLayer = internal.SqliteTestLayer;
|
|
37
|
+
//# sourceMappingURL=Test.repository.js.map
|
|
@@ -0,0 +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;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,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;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;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":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TestRepository = exports.Test = exports.Show = exports.Error = exports.DisplayConfig = exports.Classify = void 0;
|
|
7
|
+
Object.defineProperty(exports, "pack", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _pack.pack;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _Test = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.js"));
|
|
14
|
+
exports.Test = _Test;
|
|
15
|
+
var _TestRepository = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.repository.js"));
|
|
16
|
+
exports.TestRepository = _TestRepository;
|
|
17
|
+
var _Show = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Show.js"));
|
|
18
|
+
exports.Show = _Show;
|
|
19
|
+
var _Classify = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Classify.js"));
|
|
20
|
+
exports.Classify = _Classify;
|
|
21
|
+
var _Error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Error.js"));
|
|
22
|
+
exports.Error = _Error;
|
|
23
|
+
var _DisplayConfig = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./DisplayConfig.js"));
|
|
24
|
+
exports.DisplayConfig = _DisplayConfig;
|
|
25
|
+
var _pack = /*#__PURE__*/require("./internal/pack.js");
|
|
26
|
+
function _getRequireWildcardCache(e) {
|
|
27
|
+
if ("function" != typeof WeakMap) return null;
|
|
28
|
+
var r = new WeakMap(),
|
|
29
|
+
t = new WeakMap();
|
|
30
|
+
return (_getRequireWildcardCache = function (e) {
|
|
31
|
+
return e ? t : r;
|
|
32
|
+
})(e);
|
|
33
|
+
}
|
|
34
|
+
function _interopRequireWildcard(e, r) {
|
|
35
|
+
if (!r && e && e.__esModule) return e;
|
|
36
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
37
|
+
default: e
|
|
38
|
+
};
|
|
39
|
+
var t = _getRequireWildcardCache(r);
|
|
40
|
+
if (t && t.has(e)) return t.get(e);
|
|
41
|
+
var n = {
|
|
42
|
+
__proto__: null
|
|
43
|
+
},
|
|
44
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
45
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
46
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
47
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
48
|
+
}
|
|
49
|
+
return n.default = e, t && t.set(e, n), n;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_pack","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAAA,KAAA,gBAAAC,OAAA;AAAwC,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAI,wBAAAJ,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAM,OAAA,EAAAN;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA;EAAA,IAAAS,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA;IAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA","ignoreList":[]}
|