testeranto 0.146.2 → 0.146.5
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/dist/common/src/Node.js +9 -6
- package/dist/common/src/PM/PM_WithEslintAndTsc.js +75 -58
- package/dist/common/src/PM/main.js +131 -79
- package/dist/common/src/PM/node.js +1 -14
- package/dist/common/src/PM/nodeSidecar.js +0 -1
- package/dist/common/src/Pure.js +17 -1
- package/dist/common/src/Pure.test.js +172 -0
- package/dist/common/src/build.js +0 -1
- package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +22 -11
- package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +24 -0
- package/dist/common/src/esbuildConfigs/pure.js +2 -1
- package/dist/common/src/esbuildConfigs/rebuildPlugin.js +1 -4
- package/dist/common/src/lib/BaseSuite.js +89 -0
- package/dist/common/src/lib/BaseSuite.test/node.test.js +9 -0
- package/dist/common/src/lib/BaseSuite.test/pure.test.js +9 -0
- package/dist/common/src/lib/BaseSuite.test/test.js +232 -0
- package/dist/common/src/lib/BaseSuite.test/web.test.js +9 -0
- package/dist/common/src/lib/abstractBase.js +1 -90
- package/dist/common/src/lib/abstractBase.test/MockGiven.js +17 -0
- package/dist/common/src/lib/abstractBase.test/MockThen.js +13 -0
- package/dist/common/src/lib/abstractBase.test/MockWhen.js +13 -0
- package/dist/common/src/lib/abstractBase.test/implementation.js +42 -0
- package/dist/common/src/lib/abstractBase.test/index.js +17 -0
- package/dist/common/src/lib/abstractBase.test/interface.js +12 -0
- package/dist/common/src/lib/abstractBase.test/specification.js +19 -0
- package/dist/common/src/lib/abstractBase.test/types.js +2 -0
- package/dist/common/src/lib/baseBuilder.test/TestBaseBuilder.js +36 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +97 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.interface.js +17 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.node.js +11 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.pure.js +11 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +13 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.types.js +2 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.web.js +11 -0
- package/dist/common/src/lib/basebuilder.js +2 -20
- package/dist/common/src/lib/classBuilder.test/TestClassBuilder.js +41 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.implementation.js +182 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.interface.js +17 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.js +11 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.specification.js +41 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.types.js +2 -0
- package/dist/common/src/lib/core.js +4 -13
- package/dist/common/src/lib/core.test/MockCore.js +25 -0
- package/dist/common/src/lib/core.test/core.test.implementation.js +102 -0
- package/dist/common/src/lib/core.test/core.test.interface.js +18 -0
- package/dist/common/src/lib/core.test/core.test.js +17 -0
- package/dist/common/src/lib/core.test/core.test.specification.js +33 -0
- package/dist/common/src/lib/core.test/core.test.types.js +2 -0
- package/dist/common/src/lib/pmProxy.js +9 -166
- package/dist/common/src/lib/pmProxy.test/implementation.js +76 -0
- package/dist/common/src/lib/pmProxy.test/index.js +15 -0
- package/dist/common/src/lib/pmProxy.test/interface.js +37 -0
- package/dist/common/src/lib/pmProxy.test/mockPM.js +34 -0
- package/dist/common/src/lib/pmProxy.test/mockPMBase.js +115 -0
- package/dist/common/src/lib/pmProxy.test/specification.js +39 -0
- package/dist/common/src/lib/pmProxy.test/types.js +2 -0
- package/dist/common/src/run.js +6 -6
- package/dist/common/testeranto.config.js +33 -18
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/Node.js +9 -6
- package/dist/module/src/PM/PM_WithEslintAndTsc.js +75 -58
- package/dist/module/src/PM/main.js +131 -79
- package/dist/module/src/PM/node.js +1 -14
- package/dist/module/src/PM/nodeSidecar.js +0 -1
- package/dist/module/src/Pure.js +17 -1
- package/dist/module/src/Pure.test.js +167 -0
- package/dist/module/src/build.js +0 -1
- package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +19 -11
- package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +21 -0
- package/dist/module/src/esbuildConfigs/pure.js +2 -1
- package/dist/module/src/esbuildConfigs/rebuildPlugin.js +1 -4
- package/dist/module/src/lib/BaseSuite.js +85 -0
- package/dist/module/src/lib/BaseSuite.test/node.test.js +4 -0
- package/dist/module/src/lib/BaseSuite.test/pure.test.js +4 -0
- package/dist/module/src/lib/BaseSuite.test/test.js +227 -0
- package/dist/module/src/lib/BaseSuite.test/web.test.js +4 -0
- package/dist/module/src/lib/abstractBase.js +1 -89
- package/dist/module/src/lib/abstractBase.test/MockGiven.js +13 -0
- package/dist/module/src/lib/abstractBase.test/MockThen.js +9 -0
- package/dist/module/src/lib/abstractBase.test/MockWhen.js +9 -0
- package/dist/module/src/lib/abstractBase.test/implementation.js +39 -0
- package/dist/module/src/lib/abstractBase.test/index.js +12 -0
- package/dist/module/src/lib/abstractBase.test/interface.js +9 -0
- package/dist/module/src/lib/abstractBase.test/specification.js +15 -0
- package/dist/module/src/lib/abstractBase.test/types.js +1 -0
- package/dist/module/src/lib/baseBuilder.test/TestBaseBuilder.js +32 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +94 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.interface.js +14 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.node.js +6 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.pure.js +6 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +9 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.types.js +1 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.web.js +6 -0
- package/dist/module/src/lib/basebuilder.js +2 -20
- package/dist/module/src/lib/classBuilder.test/TestClassBuilder.js +37 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.implementation.js +179 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.interface.js +14 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.js +6 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.specification.js +37 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.types.js +1 -0
- package/dist/module/src/lib/core.js +3 -12
- package/dist/module/src/lib/core.test/MockCore.js +18 -0
- package/dist/module/src/lib/core.test/core.test.implementation.js +99 -0
- package/dist/module/src/lib/core.test/core.test.interface.js +15 -0
- package/dist/module/src/lib/core.test/core.test.js +12 -0
- package/dist/module/src/lib/core.test/core.test.specification.js +29 -0
- package/dist/module/src/lib/core.test/core.test.types.js +1 -0
- package/dist/module/src/lib/pmProxy.js +9 -166
- package/dist/module/src/lib/pmProxy.test/implementation.js +73 -0
- package/dist/module/src/lib/pmProxy.test/index.js +10 -0
- package/dist/module/src/lib/pmProxy.test/interface.js +34 -0
- package/dist/module/src/lib/pmProxy.test/mockPM.js +30 -0
- package/dist/module/src/lib/pmProxy.test/mockPMBase.js +111 -0
- package/dist/module/src/lib/pmProxy.test/specification.js +35 -0
- package/dist/module/src/lib/pmProxy.test/types.js +1 -0
- package/dist/module/src/run.js +6 -6
- package/dist/module/testeranto.config.js +33 -18
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/Project.js +16 -15
- package/dist/prebuild/TestReport.js +14 -12
- package/dist/prebuild/build.mjs +34 -34
- package/dist/prebuild/run.mjs +259 -173
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -1
- package/dist/types/src/PM/main.d.ts +5 -2
- package/dist/types/src/Pure.d.ts +2 -2
- package/dist/types/src/Pure.test.d.ts +36 -0
- package/dist/types/src/Types.d.ts +7 -6
- package/dist/types/src/Web.d.ts +1 -1
- package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +1 -1
- package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +2 -0
- package/dist/types/src/lib/BaseSuite.d.ts +39 -0
- package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +3 -0
- package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +3 -0
- package/dist/types/src/lib/BaseSuite.test/test.d.ts +42 -0
- package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.d.ts +1 -36
- package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +7 -0
- package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +6 -0
- package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +6 -0
- package/dist/types/src/lib/abstractBase.test/implementation.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/index.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/interface.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/specification.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/types.d.ts +39 -0
- package/dist/types/src/lib/baseBuilder.test/TestBaseBuilder.d.ts +15 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.interface.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.node.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.pure.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.specification.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +20 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.web.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/TestClassBuilder.d.ts +21 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.interface.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.specification.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.types.d.ts +56 -0
- package/dist/types/src/lib/core.d.ts +1 -1
- package/dist/types/src/lib/core.test/MockCore.d.ts +10 -0
- package/dist/types/src/lib/core.test/core.test.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.interface.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.specification.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.types.d.ts +46 -0
- package/dist/types/src/lib/index.d.ts +2 -1
- package/dist/types/src/lib/pmProxy.d.ts +11 -6
- package/dist/types/src/lib/pmProxy.test/implementation.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/index.d.ts +7 -0
- package/dist/types/src/lib/pmProxy.test/interface.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +10 -0
- package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +39 -0
- package/dist/types/src/lib/pmProxy.test/specification.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/types.d.ts +42 -0
- package/dist/types/src/lib/types.d.ts +2 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/docs.html +35 -33
- package/index.html +23 -30
- package/package.json +8 -18
- package/src/lib/basebuilder.ts +0 -24
- package/testeranto/Project.css +1 -26
- package/testeranto/Project.js +3337 -385
- package/testeranto/TestReport.css +1 -26
- package/testeranto/TestReport.js +43 -16
- package/testeranto/bundles/node/allTests/metafile.json +1 -1
- package/testeranto/bundles/pure/allTests/metafile.json +1 -1
- package/testeranto/bundles/web/allTests/metafile.json +1 -1
- package/testeranto/index.html +1 -1
- package/testeranto/reports/allTests/index.html +1 -1
- package/testeranto/reports/allTests/src/Pure.test/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.json +137 -1539
- package/testeranto/reports/allTests/src/Pure.test/pure/logs.txt +2 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.json +58 -620
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.json +58 -620
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/logs.txt +2 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/lint_errors.json +58 -620
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.json +104 -966
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.json +104 -966
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.json +104 -966
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.json +63 -791
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.json +39 -416
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.json +156 -1724
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +3 -3
- package/testeranto.config.ts +1 -1
- package/tsc.log +36 -38
|
@@ -1,92 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import {
|
|
4
|
-
export class BaseSuite {
|
|
5
|
-
constructor(name, index, givens = {}, checks = []) {
|
|
6
|
-
this.name = name;
|
|
7
|
-
this.index = index;
|
|
8
|
-
this.givens = givens;
|
|
9
|
-
this.checks = checks;
|
|
10
|
-
this.fails = 0;
|
|
11
|
-
}
|
|
12
|
-
features() {
|
|
13
|
-
const features = Object.keys(this.givens)
|
|
14
|
-
.map((k) => this.givens[k].features)
|
|
15
|
-
.flat()
|
|
16
|
-
.filter((value, index, array) => {
|
|
17
|
-
return array.indexOf(value) === index;
|
|
18
|
-
});
|
|
19
|
-
return features || [];
|
|
20
|
-
}
|
|
21
|
-
toObj() {
|
|
22
|
-
const givens = Object.keys(this.givens).map((k) => this.givens[k].toObj());
|
|
23
|
-
const checks = Object.keys(this.checks).map((k) => this.checks[k].toObj());
|
|
24
|
-
return {
|
|
25
|
-
name: this.name,
|
|
26
|
-
givens,
|
|
27
|
-
checks,
|
|
28
|
-
fails: this.fails,
|
|
29
|
-
failed: this.failed,
|
|
30
|
-
features: this.features(),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
setup(s, artifactory, tr, pm) {
|
|
34
|
-
return new Promise((res) => res(s));
|
|
35
|
-
}
|
|
36
|
-
assertThat(t) {
|
|
37
|
-
return !!t;
|
|
38
|
-
}
|
|
39
|
-
afterAll(store, artifactory, pm) {
|
|
40
|
-
return store;
|
|
41
|
-
}
|
|
42
|
-
async run(input, testResourceConfiguration, artifactory, tLog, pm) {
|
|
43
|
-
this.testResourceConfiguration = testResourceConfiguration;
|
|
44
|
-
// tLog("test resources: ", JSON.stringify(testResourceConfiguration));
|
|
45
|
-
const suiteArtifactory = (fPath, value) => artifactory(`suite-${this.index}-${this.name}/${fPath}`, value);
|
|
46
|
-
// console.log("\nSuite:", this.index, this.name);
|
|
47
|
-
tLog("\nSuite:", this.index, this.name);
|
|
48
|
-
const sNdx = this.index;
|
|
49
|
-
// const sName = this.name;
|
|
50
|
-
const subject = await this.setup(input, suiteArtifactory, testResourceConfiguration, beforeAllProxy(pm, sNdx.toString()));
|
|
51
|
-
for (const [gKey, g] of Object.entries(this.givens)) {
|
|
52
|
-
const giver = this.givens[gKey];
|
|
53
|
-
try {
|
|
54
|
-
this.store = await giver.give(subject, gKey, testResourceConfiguration, this.assertThat, suiteArtifactory, tLog, pm, sNdx);
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
this.failed = true;
|
|
58
|
-
this.fails = this.fails + 1;
|
|
59
|
-
console.error(e);
|
|
60
|
-
// this.fails.push(giver);
|
|
61
|
-
// return this;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
for (const [ndx, thater] of this.checks.entries()) {
|
|
65
|
-
await thater.check(subject, thater.name, testResourceConfiguration, this.assertThat, suiteArtifactory, tLog, pm);
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
this.afterAll(this.store, artifactory, afterAllProxy(pm, sNdx.toString()));
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
console.error(e);
|
|
72
|
-
// this.fails.push(this);
|
|
73
|
-
// return this;
|
|
74
|
-
}
|
|
75
|
-
// @TODO fix me
|
|
76
|
-
// for (const k of Object.keys(this.givens)) {
|
|
77
|
-
// const giver = this.givens[k];
|
|
78
|
-
// try {
|
|
79
|
-
// giver.afterAll(this.store, artifactory, pm);
|
|
80
|
-
// } catch (e) {
|
|
81
|
-
// console.error(e);
|
|
82
|
-
// this.fails.push(giver);
|
|
83
|
-
// return this;
|
|
84
|
-
// }
|
|
85
|
-
// }
|
|
86
|
-
////////////////
|
|
87
|
-
return this;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
3
|
+
import { afterEachProxy, andWhenProxy, beforeEachProxy, butThenProxy, } from "./pmProxy.js";
|
|
90
4
|
export class BaseGiven {
|
|
91
5
|
constructor(name, features, whens, thens, givenCB, initialValues) {
|
|
92
6
|
this.name = name;
|
|
@@ -183,7 +97,6 @@ export class BaseWhen {
|
|
|
183
97
|
async test(store, testResourceConfiguration, tLog, pm, filepath) {
|
|
184
98
|
tLog(" When:", this.name);
|
|
185
99
|
return await this.andWhen(store, this.whenCB, testResourceConfiguration, andWhenProxy(pm, filepath)).catch((e) => {
|
|
186
|
-
console.log("MARK9", e);
|
|
187
100
|
this.error = e;
|
|
188
101
|
throw e;
|
|
189
102
|
});
|
|
@@ -211,7 +124,6 @@ export class BaseThen {
|
|
|
211
124
|
return this.thenCB;
|
|
212
125
|
}
|
|
213
126
|
}, testResourceConfiguration, butThenProxy(pm, filepath)).catch((e) => {
|
|
214
|
-
console.log("test failed 3", e);
|
|
215
127
|
this.error = e;
|
|
216
128
|
throw e;
|
|
217
129
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseGiven } from "../abstractBase";
|
|
2
|
+
export class MockGiven extends BaseGiven {
|
|
3
|
+
constructor(name, features, whens, thens, givenCB, initialValues) {
|
|
4
|
+
super(name, features, whens, thens, givenCB, initialValues);
|
|
5
|
+
}
|
|
6
|
+
async givenThat(subject, testResourceConfiguration, artifactory, givenCB, initialValues, pm) {
|
|
7
|
+
return givenCB();
|
|
8
|
+
}
|
|
9
|
+
uberCatcher(e) {
|
|
10
|
+
console.error("MockGiven error:", e);
|
|
11
|
+
this.error = e;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PassThrough } from "stream";
|
|
2
|
+
export const implementation = {
|
|
3
|
+
suites: {
|
|
4
|
+
Default: "Abstract Base Test Suite",
|
|
5
|
+
},
|
|
6
|
+
givens: {
|
|
7
|
+
Default: () => ({
|
|
8
|
+
testStore: { value: "initial" },
|
|
9
|
+
testSelection: { selected: true },
|
|
10
|
+
}),
|
|
11
|
+
WithError: () => ({
|
|
12
|
+
testStore: { value: "error" },
|
|
13
|
+
testSelection: { selected: false },
|
|
14
|
+
}),
|
|
15
|
+
},
|
|
16
|
+
whens: {
|
|
17
|
+
modifyStore: (newValue) => (store) => (Object.assign(Object.assign({}, store), { testStore: { value: newValue } })),
|
|
18
|
+
throwError: () => () => {
|
|
19
|
+
throw new Error("Test error");
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
thens: {
|
|
23
|
+
verifyStore: (expected) => (store) => {
|
|
24
|
+
if (store.testStore.value !== expected) {
|
|
25
|
+
throw new Error(`Expected ${expected}, got ${store.testStore.value}`);
|
|
26
|
+
}
|
|
27
|
+
return store;
|
|
28
|
+
},
|
|
29
|
+
verifyError: (expected) => (store) => {
|
|
30
|
+
if (!store.error || !store.error.message.includes(expected)) {
|
|
31
|
+
throw new Error(`Expected error "${expected}" not found`);
|
|
32
|
+
}
|
|
33
|
+
return store;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
checks: {
|
|
37
|
+
Default: () => new PassThrough(),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Testeranto from "../../Node";
|
|
2
|
+
import { specification } from "./specification";
|
|
3
|
+
import { implementation } from "./implementation";
|
|
4
|
+
import { testInterface } from "./interface";
|
|
5
|
+
import { MockGiven } from "./MockGiven";
|
|
6
|
+
import { MockThen } from "./MockThen";
|
|
7
|
+
import { MockWhen } from "./MockWhen";
|
|
8
|
+
export default Testeranto({
|
|
9
|
+
MockGiven,
|
|
10
|
+
MockWhen,
|
|
11
|
+
MockThen,
|
|
12
|
+
}, specification, implementation, testInterface);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const testInterface = {
|
|
2
|
+
beforeEach: async (subject, initializer) => initializer(),
|
|
3
|
+
andWhen: async (store, whenCB) => whenCB(store),
|
|
4
|
+
butThen: async (store, thenCB) => thenCB(store),
|
|
5
|
+
afterEach: (store) => store,
|
|
6
|
+
afterAll: () => { },
|
|
7
|
+
assertThis: (result) => !!result,
|
|
8
|
+
beforeAll: async (input) => input
|
|
9
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const specification = (Suite, Given, When, Then, Check) => [
|
|
2
|
+
Suite.Default("BaseGiven Tests", {
|
|
3
|
+
initialization: Given.Default(["Should initialize with default values"], [], [Then.verifyStore("initial")]),
|
|
4
|
+
errorHandling: Given.WithError(["Should handle errors properly"], [When.throwError()], [Then.verifyError("Test error")])
|
|
5
|
+
}),
|
|
6
|
+
Suite.Default("BaseWhen Tests", {
|
|
7
|
+
stateModification: Given.Default(["Should modify state correctly"], [When.modifyStore("modified")], [Then.verifyStore("modified")]),
|
|
8
|
+
errorPropagation: Given.Default(["Should propagate errors"], [When.throwError()], [Then.verifyError("Test error")])
|
|
9
|
+
}),
|
|
10
|
+
Suite.Default("BaseThen Tests", {
|
|
11
|
+
assertionPassing: Given.Default(["Should pass valid assertions"], [When.modifyStore("asserted")], [Then.verifyStore("asserted")]),
|
|
12
|
+
assertionFailing: Given.Default(["Should fail invalid assertions"], [When.modifyStore("wrong")], [Then.verifyStore("right")] // This should fail
|
|
13
|
+
)
|
|
14
|
+
})
|
|
15
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BaseBuilder } from "../basebuilder";
|
|
2
|
+
/**
|
|
3
|
+
* Concrete implementation of BaseBuilder for testing purposes only
|
|
4
|
+
*/
|
|
5
|
+
export class TestBaseBuilder extends BaseBuilder {
|
|
6
|
+
constructor(input, suitesOverrides = {}, givenOverrides = {}, whenOverrides = {}, thenOverrides = {}, checkOverrides = {}, testResourceRequirement = { ports: [] }, testSpecification = () => []) {
|
|
7
|
+
super(input, suitesOverrides, givenOverrides, whenOverrides, thenOverrides, checkOverrides, testResourceRequirement, testSpecification);
|
|
8
|
+
this.summary = {};
|
|
9
|
+
this.summary = {};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Simplified version for testing that doesn't actually run tests
|
|
13
|
+
*/
|
|
14
|
+
testRun(puppetMaster) {
|
|
15
|
+
this.summary = {
|
|
16
|
+
[puppetMaster.testResourceConfiguration.name]: {
|
|
17
|
+
typeErrors: 0,
|
|
18
|
+
staticErrors: 0,
|
|
19
|
+
runTimeError: "",
|
|
20
|
+
prompt: "",
|
|
21
|
+
failingFeatures: {},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
return Promise.resolve({
|
|
25
|
+
failed: false,
|
|
26
|
+
fails: 0,
|
|
27
|
+
artifacts: [],
|
|
28
|
+
logPromise: Promise.resolve(),
|
|
29
|
+
features: [],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { PassThrough } from "stream";
|
|
2
|
+
import { TestBaseBuilder } from "./TestBaseBuilder";
|
|
3
|
+
import { BaseBuilder } from "../basebuilder";
|
|
4
|
+
export const implementation = {
|
|
5
|
+
suites: {
|
|
6
|
+
Default: "BaseBuilder test suite",
|
|
7
|
+
},
|
|
8
|
+
givens: {
|
|
9
|
+
Default: () => {
|
|
10
|
+
return new TestBaseBuilder({}, {}, {}, {}, {}, {}, { ports: [] }, () => []);
|
|
11
|
+
},
|
|
12
|
+
WithCustomInput: (input) => {
|
|
13
|
+
return new TestBaseBuilder(input, {}, {}, {}, {}, {}, { ports: [] }, () => []);
|
|
14
|
+
},
|
|
15
|
+
WithResourceRequirements: (requirements) => {
|
|
16
|
+
return new TestBaseBuilder({}, {}, {}, {}, {}, {}, requirements, () => []);
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
whens: {
|
|
20
|
+
addArtifact: (artifact) => (builder) => {
|
|
21
|
+
builder.artifacts.push(artifact);
|
|
22
|
+
return builder;
|
|
23
|
+
},
|
|
24
|
+
setTestJobs: (jobs) => (builder) => {
|
|
25
|
+
builder.testJobs = jobs;
|
|
26
|
+
return builder;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
thens: {
|
|
30
|
+
initializedProperly: () => (builder) => {
|
|
31
|
+
if (!(builder instanceof BaseBuilder)) {
|
|
32
|
+
throw new Error("Builder was not properly initialized");
|
|
33
|
+
}
|
|
34
|
+
return builder;
|
|
35
|
+
},
|
|
36
|
+
specsGenerated: () => (builder) => {
|
|
37
|
+
if (!Array.isArray(builder.specs)) {
|
|
38
|
+
throw new Error("Specs were not generated");
|
|
39
|
+
}
|
|
40
|
+
return builder;
|
|
41
|
+
},
|
|
42
|
+
jobsCreated: () => (builder) => {
|
|
43
|
+
if (!Array.isArray(builder.testJobs)) {
|
|
44
|
+
throw new Error("Test jobs were not created");
|
|
45
|
+
}
|
|
46
|
+
return builder;
|
|
47
|
+
},
|
|
48
|
+
artifactsTracked: () => (builder) => {
|
|
49
|
+
if (!Array.isArray(builder.artifacts)) {
|
|
50
|
+
throw new Error("Artifacts array not initialized");
|
|
51
|
+
}
|
|
52
|
+
return builder;
|
|
53
|
+
},
|
|
54
|
+
resourceRequirementsSet: () => (builder) => {
|
|
55
|
+
if (!builder.testResourceRequirement) {
|
|
56
|
+
throw new Error("Resource requirements not set");
|
|
57
|
+
}
|
|
58
|
+
return builder;
|
|
59
|
+
},
|
|
60
|
+
suitesOverridesConfigured: () => (builder) => {
|
|
61
|
+
if (!builder.suitesOverrides) {
|
|
62
|
+
throw new Error("Suites overrides not configured");
|
|
63
|
+
}
|
|
64
|
+
return builder;
|
|
65
|
+
},
|
|
66
|
+
givensOverridesConfigured: () => (builder) => {
|
|
67
|
+
if (!builder.givenOverides) {
|
|
68
|
+
throw new Error("Givens overrides not configured");
|
|
69
|
+
}
|
|
70
|
+
return builder;
|
|
71
|
+
},
|
|
72
|
+
whensOverridesConfigured: () => (builder) => {
|
|
73
|
+
if (!builder.whenOverides) {
|
|
74
|
+
throw new Error("Whens overrides not configured");
|
|
75
|
+
}
|
|
76
|
+
return builder;
|
|
77
|
+
},
|
|
78
|
+
thensOverridesConfigured: () => (builder) => {
|
|
79
|
+
if (!builder.thenOverides) {
|
|
80
|
+
throw new Error("Thens overrides not configured");
|
|
81
|
+
}
|
|
82
|
+
return builder;
|
|
83
|
+
},
|
|
84
|
+
checksOverridesConfigured: () => (builder) => {
|
|
85
|
+
if (!builder.checkOverides) {
|
|
86
|
+
throw new Error("Checks overrides not configured");
|
|
87
|
+
}
|
|
88
|
+
return builder;
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
checks: {
|
|
92
|
+
Default: () => new PassThrough(), // Not used in these tests
|
|
93
|
+
},
|
|
94
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const testInterface = {
|
|
2
|
+
beforeEach: async (subject, initializer) => {
|
|
3
|
+
return initializer();
|
|
4
|
+
},
|
|
5
|
+
andWhen: async (store, whenCB, testResource, utils) => {
|
|
6
|
+
return whenCB(store, utils);
|
|
7
|
+
},
|
|
8
|
+
butThen: async (store, thenCB, testResource, pm) => {
|
|
9
|
+
return thenCB(store, pm);
|
|
10
|
+
},
|
|
11
|
+
afterEach: (store) => store,
|
|
12
|
+
afterAll: () => { },
|
|
13
|
+
assertThis: (x) => { },
|
|
14
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Testeranto from "../../Pure";
|
|
2
|
+
import { specification } from "./baseBuilder.test.specification";
|
|
3
|
+
import { implementation } from "./baseBuilder.test.implementation";
|
|
4
|
+
import { testInterface } from "./baseBuilder.test.interface";
|
|
5
|
+
import { BaseBuilder } from "../basebuilder";
|
|
6
|
+
export default Testeranto(BaseBuilder.prototype, specification, implementation, testInterface);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Testeranto from "../../Pure";
|
|
2
|
+
import { specification } from "./baseBuilder.test.specification";
|
|
3
|
+
import { implementation } from "./baseBuilder.test.implementation";
|
|
4
|
+
import { testInterface } from "./baseBuilder.test.interface";
|
|
5
|
+
import { BaseBuilder } from "../basebuilder";
|
|
6
|
+
export default Testeranto(BaseBuilder.prototype, specification, implementation, testInterface);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const specification = (Suite, Given, When, Then, Check) => {
|
|
2
|
+
return [
|
|
3
|
+
Suite.Default("Testing BaseBuilder functionality", {
|
|
4
|
+
testInitialization: Given.Default(["BaseBuilder should initialize correctly"], [], [Then.initializedProperly()]),
|
|
5
|
+
testSpecsGeneration: Given.Default(["BaseBuilder should generate specs from test specification"], [], [Then.specsGenerated()]),
|
|
6
|
+
testJobsCreation: Given.Default(["BaseBuilder should create test jobs"], [], [Then.jobsCreated()]),
|
|
7
|
+
}, []),
|
|
8
|
+
];
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Testeranto from "../../Web";
|
|
2
|
+
import { specification } from "./baseBuilder.test.specification";
|
|
3
|
+
import { implementation } from "./baseBuilder.test.implementation";
|
|
4
|
+
import { testInterface } from "./baseBuilder.test.interface";
|
|
5
|
+
import { BaseBuilder } from "../basebuilder";
|
|
6
|
+
export default Testeranto(BaseBuilder.prototype, specification, implementation, testInterface);
|
|
@@ -31,8 +31,9 @@ export class BaseBuilder {
|
|
|
31
31
|
receiveTestResourceConfig: async function (puppetMaster) {
|
|
32
32
|
const logFilePath = "log.txt";
|
|
33
33
|
const access = await puppetMaster.createWriteStream(logFilePath);
|
|
34
|
+
// deprecated?
|
|
34
35
|
const tLog = async (...l) => {
|
|
35
|
-
//
|
|
36
|
+
//
|
|
36
37
|
};
|
|
37
38
|
const suiteDone = await runner(puppetMaster, tLog);
|
|
38
39
|
const logPromise = new Promise(async (res) => {
|
|
@@ -41,25 +42,6 @@ export class BaseBuilder {
|
|
|
41
42
|
});
|
|
42
43
|
const fails = suiteDone.fails;
|
|
43
44
|
await puppetMaster.writeFileSync(`bdd_errors.txt`, fails.toString());
|
|
44
|
-
// await puppetMaster.writeFileSync(
|
|
45
|
-
// `index.html`,
|
|
46
|
-
// `
|
|
47
|
-
// <!DOCTYPE html>
|
|
48
|
-
// <html lang="en">
|
|
49
|
-
// <head>
|
|
50
|
-
// <meta name="description" content="Webpage description goes here" />
|
|
51
|
-
// <meta charset="utf-8" />
|
|
52
|
-
// <title>kokomoBay - testeranto</title>
|
|
53
|
-
// <meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
54
|
-
// <meta name="author" content="" />
|
|
55
|
-
// <link rel="stylesheet" href="/kokomoBay/testeranto/TestReport.css" />
|
|
56
|
-
// <script src="/kokomoBay/testeranto/TestReport.js"></script>
|
|
57
|
-
// </head>
|
|
58
|
-
// <body>
|
|
59
|
-
// <div id="root"/>
|
|
60
|
-
// </body>
|
|
61
|
-
// `
|
|
62
|
-
// );
|
|
63
45
|
await puppetMaster.writeFileSync(`tests.json`, JSON.stringify(this.toObj(), null, 2));
|
|
64
46
|
return {
|
|
65
47
|
failed: fails > 0,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseBuilder } from "../basebuilder";
|
|
2
|
+
/**
|
|
3
|
+
* Concrete implementation of BaseBuilder for testing ClassBuilder
|
|
4
|
+
*/
|
|
5
|
+
export class TestClassBuilder extends BaseBuilder {
|
|
6
|
+
constructor(testImplementation, testSpecification, input, suiteKlasser, givenKlasser, whenKlasser, thenKlasser, checkKlasser, testResourceRequirement) {
|
|
7
|
+
super(input, {}, // suitesOverrides
|
|
8
|
+
{}, // givenOverides
|
|
9
|
+
{}, // whenOverides
|
|
10
|
+
{}, // thenOverides
|
|
11
|
+
{}, // checkOverides
|
|
12
|
+
testResourceRequirement, testSpecification);
|
|
13
|
+
this.summary = {};
|
|
14
|
+
this.summary = {};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Simplified test run for verification
|
|
18
|
+
*/
|
|
19
|
+
testRun(puppetMaster) {
|
|
20
|
+
this.summary = {
|
|
21
|
+
[puppetMaster.testResourceConfiguration.name]: {
|
|
22
|
+
typeErrors: 0,
|
|
23
|
+
staticErrors: 0,
|
|
24
|
+
runTimeError: "",
|
|
25
|
+
prompt: "",
|
|
26
|
+
failingFeatures: {},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
return Promise.resolve({
|
|
30
|
+
failed: false,
|
|
31
|
+
fails: 0,
|
|
32
|
+
artifacts: [],
|
|
33
|
+
logPromise: Promise.resolve(),
|
|
34
|
+
features: [],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { PassThrough } from "stream";
|
|
3
|
+
import { TestClassBuilder } from "./TestClassBuilder";
|
|
4
|
+
import { specification } from "./classBuilder.test.specification";
|
|
5
|
+
export const implementation = {
|
|
6
|
+
suites: {
|
|
7
|
+
Default: "ClassBuilder test suite",
|
|
8
|
+
},
|
|
9
|
+
givens: {
|
|
10
|
+
Default: () => {
|
|
11
|
+
return new TestClassBuilder(implementation, // Use the current implementation
|
|
12
|
+
specification, // Use the current specification
|
|
13
|
+
{}, // Default input
|
|
14
|
+
class {
|
|
15
|
+
}, // suiteKlasser
|
|
16
|
+
class {
|
|
17
|
+
}, // givenKlasser
|
|
18
|
+
class {
|
|
19
|
+
}, // whenKlasser
|
|
20
|
+
class {
|
|
21
|
+
}, // thenKlasser
|
|
22
|
+
class {
|
|
23
|
+
}, // checkKlasser
|
|
24
|
+
{ ports: [] } // Default resource requirements
|
|
25
|
+
);
|
|
26
|
+
},
|
|
27
|
+
WithCustomInput: (input) => {
|
|
28
|
+
return new TestClassBuilder(implementation, specification, input, class {
|
|
29
|
+
}, class {
|
|
30
|
+
}, class {
|
|
31
|
+
}, class {
|
|
32
|
+
}, class {
|
|
33
|
+
}, { ports: [] });
|
|
34
|
+
},
|
|
35
|
+
WithResourceRequirements: (requirements) => {
|
|
36
|
+
return new TestClassBuilder(implementation, specification, {}, class {
|
|
37
|
+
}, class {
|
|
38
|
+
}, class {
|
|
39
|
+
}, class {
|
|
40
|
+
}, class {
|
|
41
|
+
}, requirements);
|
|
42
|
+
},
|
|
43
|
+
WithCustomImplementation: (impl) => {
|
|
44
|
+
return new TestClassBuilder(impl, specification, {}, class {
|
|
45
|
+
}, class {
|
|
46
|
+
}, class {
|
|
47
|
+
}, class {
|
|
48
|
+
}, class {
|
|
49
|
+
}, { ports: [] });
|
|
50
|
+
},
|
|
51
|
+
WithCustomSpecification: (spec) => {
|
|
52
|
+
return new TestClassBuilder(implementation, spec, {}, class {
|
|
53
|
+
}, class {
|
|
54
|
+
}, class {
|
|
55
|
+
}, class {
|
|
56
|
+
}, class {
|
|
57
|
+
}, { ports: [] });
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
whens: {
|
|
61
|
+
addArtifact: (artifact) => (builder) => {
|
|
62
|
+
builder.artifacts.push(artifact);
|
|
63
|
+
return builder;
|
|
64
|
+
},
|
|
65
|
+
setTestJobs: (jobs) => (builder) => {
|
|
66
|
+
builder.testJobs = jobs;
|
|
67
|
+
return builder;
|
|
68
|
+
},
|
|
69
|
+
modifySpecs: (modifier) => (builder) => {
|
|
70
|
+
builder.specs = modifier(builder.specs || []);
|
|
71
|
+
return builder;
|
|
72
|
+
},
|
|
73
|
+
modifyJobs: (modifier) => (builder) => {
|
|
74
|
+
builder.testJobs = modifier(builder.testJobs || []);
|
|
75
|
+
return builder;
|
|
76
|
+
},
|
|
77
|
+
triggerError: (message) => (builder) => {
|
|
78
|
+
throw new Error(message);
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
thens: {
|
|
82
|
+
initializedProperly: () => (builder) => {
|
|
83
|
+
if (!(builder instanceof TestClassBuilder)) {
|
|
84
|
+
throw new Error("Builder was not properly initialized");
|
|
85
|
+
}
|
|
86
|
+
return builder;
|
|
87
|
+
},
|
|
88
|
+
specsGenerated: () => (builder) => {
|
|
89
|
+
if (!Array.isArray(builder.specs)) {
|
|
90
|
+
throw new Error("Specs were not generated");
|
|
91
|
+
}
|
|
92
|
+
return builder;
|
|
93
|
+
},
|
|
94
|
+
jobsCreated: () => (builder) => {
|
|
95
|
+
if (!Array.isArray(builder.testJobs)) {
|
|
96
|
+
throw new Error("Test jobs were not created");
|
|
97
|
+
}
|
|
98
|
+
return builder;
|
|
99
|
+
},
|
|
100
|
+
artifactsTracked: () => (builder) => {
|
|
101
|
+
if (!Array.isArray(builder.artifacts)) {
|
|
102
|
+
throw new Error("Artifacts array not initialized");
|
|
103
|
+
}
|
|
104
|
+
return builder;
|
|
105
|
+
},
|
|
106
|
+
resourceRequirementsSet: () => (builder) => {
|
|
107
|
+
if (!builder.testResourceRequirement) {
|
|
108
|
+
throw new Error("Resource requirements not set");
|
|
109
|
+
}
|
|
110
|
+
return builder;
|
|
111
|
+
},
|
|
112
|
+
suitesOverridesConfigured: () => (builder) => {
|
|
113
|
+
if (!builder.suitesOverrides) {
|
|
114
|
+
throw new Error("Suites overrides not configured");
|
|
115
|
+
}
|
|
116
|
+
return builder;
|
|
117
|
+
},
|
|
118
|
+
givensOverridesConfigured: () => (builder) => {
|
|
119
|
+
if (!builder.givenOverides) {
|
|
120
|
+
throw new Error("Givens overrides not configured");
|
|
121
|
+
}
|
|
122
|
+
return builder;
|
|
123
|
+
},
|
|
124
|
+
whensOverridesConfigured: () => (builder) => {
|
|
125
|
+
if (!builder.whenOverides) {
|
|
126
|
+
throw new Error("Whens overrides not configured");
|
|
127
|
+
}
|
|
128
|
+
return builder;
|
|
129
|
+
},
|
|
130
|
+
thensOverridesConfigured: () => (builder) => {
|
|
131
|
+
if (!builder.thenOverides) {
|
|
132
|
+
throw new Error("Thens overrides not configured");
|
|
133
|
+
}
|
|
134
|
+
return builder;
|
|
135
|
+
},
|
|
136
|
+
checksOverridesConfigured: () => (builder) => {
|
|
137
|
+
if (!builder.checkOverides) {
|
|
138
|
+
throw new Error("Checks overrides not configured");
|
|
139
|
+
}
|
|
140
|
+
return builder;
|
|
141
|
+
},
|
|
142
|
+
specsModified: (expectedCount) => (builder) => {
|
|
143
|
+
if (builder.specs.length <= expectedCount) {
|
|
144
|
+
throw new Error(`Expected at least ${expectedCount} modified specs`);
|
|
145
|
+
}
|
|
146
|
+
return builder;
|
|
147
|
+
},
|
|
148
|
+
jobsModified: (expectedCount) => (builder) => {
|
|
149
|
+
if (builder.testJobs.length <= expectedCount) {
|
|
150
|
+
throw new Error(`Expected at least ${expectedCount} modified jobs`);
|
|
151
|
+
}
|
|
152
|
+
return builder;
|
|
153
|
+
},
|
|
154
|
+
errorThrown: (expectedMessage) => (builder) => {
|
|
155
|
+
// This is handled by the test runner
|
|
156
|
+
return builder;
|
|
157
|
+
},
|
|
158
|
+
testRunSuccessful: () => async (builder) => {
|
|
159
|
+
try {
|
|
160
|
+
await builder.testRun({
|
|
161
|
+
testResourceConfiguration: {
|
|
162
|
+
name: "test",
|
|
163
|
+
fs: "/tmp",
|
|
164
|
+
ports: [],
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
return builder;
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
throw new Error(`Test run failed: ${e.message}`);
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
checks: {
|
|
175
|
+
Default: () => new PassThrough(),
|
|
176
|
+
ImplementationCheck: (validator) => validator(implementation),
|
|
177
|
+
SpecificationCheck: (validator) => validator(specification),
|
|
178
|
+
},
|
|
179
|
+
};
|