@japa/runner 3.0.0-7 → 3.0.0-8
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/build/chunk-7THDHQFT.js +283 -0
- package/build/chunk-HN4AVHWN.js +17 -0
- package/build/chunk-MCOW34SG.js +269 -0
- package/build/chunk-W5IABAQU.js +502 -0
- package/build/factories/main.d.ts +42 -2
- package/build/factories/main.js +209 -13
- package/build/index.d.ts +14 -9
- package/build/index.js +237 -202
- package/build/main-63126780.d.ts +109 -0
- package/build/modules/core/main.d.ts +3 -62
- package/build/modules/core/main.js +21 -121
- package/build/src/reporters/main.d.ts +9 -4
- package/build/src/reporters/main.js +11 -37
- package/build/src/types.d.ts +23 -19
- package/build/src/types.js +14 -9
- package/package.json +26 -17
- package/build/factories/runner.d.ts +0 -27
- package/build/factories/runner.js +0 -206
- package/build/modules/core/reporters/base.d.ts +0 -41
- package/build/modules/core/reporters/base.js +0 -183
- package/build/modules/core/types.d.ts +0 -5
- package/build/modules/core/types.js +0 -9
- package/build/src/cli_parser.d.ts +0 -14
- package/build/src/cli_parser.js +0 -75
- package/build/src/config_manager.d.ts +0 -18
- package/build/src/config_manager.js +0 -168
- package/build/src/create_test.d.ts +0 -21
- package/build/src/create_test.js +0 -53
- package/build/src/debug.d.ts +0 -3
- package/build/src/debug.js +0 -10
- package/build/src/exceptions_manager.d.ts +0 -19
- package/build/src/exceptions_manager.js +0 -85
- package/build/src/files_manager.d.ts +0 -18
- package/build/src/files_manager.js +0 -57
- package/build/src/helpers.d.ts +0 -22
- package/build/src/helpers.js +0 -10
- package/build/src/hooks.d.ts +0 -20
- package/build/src/hooks.js +0 -46
- package/build/src/planner.d.ts +0 -25
- package/build/src/planner.js +0 -98
- package/build/src/plugins/retry.d.ts +0 -20
- package/build/src/plugins/retry.js +0 -66
- package/build/src/reporters/dot.d.ts +0 -15
- package/build/src/reporters/dot.js +0 -41
- package/build/src/reporters/ndjson.d.ts +0 -15
- package/build/src/reporters/ndjson.js +0 -86
- package/build/src/reporters/spec.d.ts +0 -13
- package/build/src/reporters/spec.js +0 -154
- package/build/src/validator.d.ts +0 -30
- package/build/src/validator.js +0 -85
package/build/factories/main.js
CHANGED
|
@@ -1,13 +1,209 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import {
|
|
2
|
+
CliParser,
|
|
3
|
+
ConfigManager,
|
|
4
|
+
GlobalHooks,
|
|
5
|
+
Planner,
|
|
6
|
+
createTest,
|
|
7
|
+
createTestGroup
|
|
8
|
+
} from "../chunk-W5IABAQU.js";
|
|
9
|
+
import "../chunk-7THDHQFT.js";
|
|
10
|
+
import {
|
|
11
|
+
Emitter,
|
|
12
|
+
Runner,
|
|
13
|
+
Suite
|
|
14
|
+
} from "../chunk-MCOW34SG.js";
|
|
15
|
+
import "../chunk-HN4AVHWN.js";
|
|
16
|
+
|
|
17
|
+
// factories/runner.ts
|
|
18
|
+
import { fileURLToPath } from "node:url";
|
|
19
|
+
var RunnerFactory = class {
|
|
20
|
+
#emitter = new Emitter();
|
|
21
|
+
#config;
|
|
22
|
+
#cliArgs;
|
|
23
|
+
#file = fileURLToPath(import.meta.url);
|
|
24
|
+
get #refiner() {
|
|
25
|
+
return this.#config.refiner;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Registers plugins
|
|
29
|
+
*/
|
|
30
|
+
async #registerPlugins(runner2) {
|
|
31
|
+
for (let plugin of this.#config.plugins) {
|
|
32
|
+
await plugin({
|
|
33
|
+
config: this.#config,
|
|
34
|
+
runner: runner2,
|
|
35
|
+
emitter: this.#emitter,
|
|
36
|
+
cliArgs: this.#cliArgs
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configure runner
|
|
42
|
+
*/
|
|
43
|
+
configure(config, argv) {
|
|
44
|
+
this.#cliArgs = new CliParser().parse(argv || []);
|
|
45
|
+
this.#config = new ConfigManager(config, this.#cliArgs).hydrate();
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Define a custom emitter instance to use
|
|
50
|
+
*/
|
|
51
|
+
useEmitter(emitter) {
|
|
52
|
+
this.#emitter = emitter;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Run a test using the runner
|
|
57
|
+
*/
|
|
58
|
+
async runTest(title, callback) {
|
|
59
|
+
return this.runSuites((emitter, refiner, file) => {
|
|
60
|
+
const defaultSuite = new Suite("default", emitter, refiner);
|
|
61
|
+
createTest(title, emitter, refiner, {
|
|
62
|
+
suite: defaultSuite,
|
|
63
|
+
file
|
|
64
|
+
}).run(callback);
|
|
65
|
+
return [defaultSuite];
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Run dummy tests. You might use
|
|
70
|
+
*/
|
|
71
|
+
async runSuites(suites) {
|
|
72
|
+
const runner2 = new Runner(this.#emitter);
|
|
73
|
+
await this.#registerPlugins(runner2);
|
|
74
|
+
const { config, reporters, refinerFilters } = await new Planner(this.#config).plan();
|
|
75
|
+
const globalHooks = new GlobalHooks();
|
|
76
|
+
globalHooks.apply(config);
|
|
77
|
+
reporters.forEach((reporter) => {
|
|
78
|
+
runner2.registerReporter(reporter);
|
|
79
|
+
});
|
|
80
|
+
refinerFilters.forEach((filter) => {
|
|
81
|
+
config.refiner.add(filter.layer, filter.filters);
|
|
82
|
+
});
|
|
83
|
+
suites(this.#emitter, this.#refiner, this.#file).forEach((suite) => runner2.add(suite));
|
|
84
|
+
await globalHooks.setup(runner2);
|
|
85
|
+
await runner2.start();
|
|
86
|
+
await runner2.exec();
|
|
87
|
+
await runner2.end();
|
|
88
|
+
await globalHooks.teardown(null, runner2);
|
|
89
|
+
return runner2.getSummary();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// factories/create_diverse_tests.ts
|
|
94
|
+
import assert from "node:assert";
|
|
95
|
+
function createUnitTestsSuite(emitter, refiner, file) {
|
|
96
|
+
const suite = new Suite("unit", emitter, refiner);
|
|
97
|
+
const group = createTestGroup("Maths#add", emitter, refiner, {
|
|
98
|
+
suite,
|
|
99
|
+
file
|
|
100
|
+
});
|
|
101
|
+
createTest("A top level test inside a suite", emitter, refiner, {
|
|
102
|
+
suite,
|
|
103
|
+
file
|
|
104
|
+
}).run(() => {
|
|
105
|
+
});
|
|
106
|
+
createTest("add two numbers", emitter, refiner, { group, file }).run(() => {
|
|
107
|
+
assert.equal(2 + 2, 4);
|
|
108
|
+
});
|
|
109
|
+
createTest("add three numbers", emitter, refiner, {
|
|
110
|
+
group,
|
|
111
|
+
file
|
|
112
|
+
}).run(() => {
|
|
113
|
+
assert.equal(2 + 2 + 2, 6);
|
|
114
|
+
});
|
|
115
|
+
createTest("add group of numbers", emitter, refiner, { group, file });
|
|
116
|
+
createTest("use math.js lib", emitter, refiner, { group, file }).skip(
|
|
117
|
+
true,
|
|
118
|
+
"Library work pending"
|
|
119
|
+
);
|
|
120
|
+
createTest("add multiple numbers", emitter, refiner, {
|
|
121
|
+
file,
|
|
122
|
+
group
|
|
123
|
+
}).run(() => {
|
|
124
|
+
assert.equal(2 + 2 + 2 + 2, 6);
|
|
125
|
+
});
|
|
126
|
+
createTest("add floating numbers", emitter, refiner, { group, file }).run(() => {
|
|
127
|
+
assert.equal(2 + 2.2 + 2.1, 6);
|
|
128
|
+
}).fails("Have to add support for floating numbers");
|
|
129
|
+
createTest("A test with an error that is not an AssertionError", emitter, refiner, {
|
|
130
|
+
group,
|
|
131
|
+
file
|
|
132
|
+
}).run(() => {
|
|
133
|
+
throw new Error("This is an error");
|
|
134
|
+
});
|
|
135
|
+
return suite;
|
|
136
|
+
}
|
|
137
|
+
function createFunctionalTestsSuite(emitter, refiner, file) {
|
|
138
|
+
const suite = new Suite("functional", emitter, refiner);
|
|
139
|
+
const group = createTestGroup("Users/store", emitter, refiner, {
|
|
140
|
+
suite,
|
|
141
|
+
file
|
|
142
|
+
});
|
|
143
|
+
createTest("Validate user data", emitter, refiner, {
|
|
144
|
+
group,
|
|
145
|
+
file
|
|
146
|
+
}).run(() => {
|
|
147
|
+
});
|
|
148
|
+
createTest("Disallow duplicate emails", emitter, refiner, {
|
|
149
|
+
group,
|
|
150
|
+
file
|
|
151
|
+
}).run(() => {
|
|
152
|
+
});
|
|
153
|
+
createTest("Disallow duplicate emails across tenants", emitter, refiner, {
|
|
154
|
+
group,
|
|
155
|
+
file
|
|
156
|
+
}).run(() => {
|
|
157
|
+
const users = ["", ""];
|
|
158
|
+
assert.equal(users.length, 1);
|
|
159
|
+
});
|
|
160
|
+
createTest("Normalize email before persisting it", emitter, refiner, {
|
|
161
|
+
group,
|
|
162
|
+
file
|
|
163
|
+
}).skip(true, "Have to build a normalizer");
|
|
164
|
+
createTest("Send email verification mail", emitter, refiner, {
|
|
165
|
+
group,
|
|
166
|
+
file
|
|
167
|
+
});
|
|
168
|
+
const usersListGroup = createTestGroup("Users/list", emitter, refiner, {
|
|
169
|
+
suite,
|
|
170
|
+
file
|
|
171
|
+
});
|
|
172
|
+
usersListGroup.setup(() => {
|
|
173
|
+
throw new Error("Unable to cleanup database");
|
|
174
|
+
});
|
|
175
|
+
createTest("A test that will never because the group hooks fails", emitter, refiner, {
|
|
176
|
+
group: usersListGroup
|
|
177
|
+
});
|
|
178
|
+
createTest("A top level test inside functional suite", emitter, refiner, {
|
|
179
|
+
suite,
|
|
180
|
+
file
|
|
181
|
+
}).run(() => {
|
|
182
|
+
});
|
|
183
|
+
return suite;
|
|
184
|
+
}
|
|
185
|
+
function createDiverseTests(emitter, refiner, file) {
|
|
186
|
+
return [
|
|
187
|
+
createUnitTestsSuite(emitter, refiner, file),
|
|
188
|
+
createFunctionalTestsSuite(emitter, refiner, file)
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// factories/main.ts
|
|
193
|
+
var runner = () => new RunnerFactory();
|
|
194
|
+
var syncReporter = {
|
|
195
|
+
name: "sync",
|
|
196
|
+
handler(r, emitter) {
|
|
197
|
+
emitter.on("runner:end", function() {
|
|
198
|
+
const summary = r.getSummary();
|
|
199
|
+
if (summary.hasError) {
|
|
200
|
+
throw summary.failureTree[0].children[0].errors[0].error;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
export {
|
|
206
|
+
createDiverseTests,
|
|
207
|
+
runner,
|
|
208
|
+
syncReporter
|
|
209
|
+
};
|
package/build/index.d.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { TestExecutor } from '@japa/core/types';
|
|
2
|
+
import { Config } from './src/types.js';
|
|
3
|
+
import { T as TestContext, a as Test, G as Group } from './main-63126780.js';
|
|
4
|
+
import '@poppinss/hooks/types';
|
|
5
|
+
import '@japa/core';
|
|
6
|
+
|
|
4
7
|
/**
|
|
5
8
|
* Create a Japa test. Defining a test without the callback
|
|
6
9
|
* will create a todo test.
|
|
7
10
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
declare function test(title: string, callback?: TestExecutor<TestContext, undefined>): Test<undefined>;
|
|
12
|
+
declare namespace test {
|
|
10
13
|
var group: (title: string, callback: (group: Group) => void) => void;
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
16
|
* Get the test of currently running test
|
|
14
17
|
*/
|
|
15
|
-
|
|
18
|
+
declare function getActiveTest(): Test<any> | undefined;
|
|
16
19
|
/**
|
|
17
20
|
* Make Japa process command line arguments. Later the parsed output
|
|
18
21
|
* will be used by Japa to compute the configuration
|
|
19
22
|
*/
|
|
20
|
-
|
|
23
|
+
declare function processCLIArgs(argv: string[]): void;
|
|
21
24
|
/**
|
|
22
25
|
* Configure the tests runner with inline configuration. You must
|
|
23
26
|
* call configure method before the run method.
|
|
@@ -25,9 +28,11 @@ export declare function processCLIArgs(argv: string[]): void;
|
|
|
25
28
|
* Do note: The CLI flags will overwrite the options provided
|
|
26
29
|
* to the configure method.
|
|
27
30
|
*/
|
|
28
|
-
|
|
31
|
+
declare function configure(options: Config): void;
|
|
29
32
|
/**
|
|
30
33
|
* Execute Japa tests. Calling this function will import the test
|
|
31
34
|
* files behind the scenes
|
|
32
35
|
*/
|
|
33
|
-
|
|
36
|
+
declare function run(): Promise<void>;
|
|
37
|
+
|
|
38
|
+
export { configure, getActiveTest, processCLIArgs, run, test };
|