@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.
Files changed (50) hide show
  1. package/build/chunk-7THDHQFT.js +283 -0
  2. package/build/chunk-HN4AVHWN.js +17 -0
  3. package/build/chunk-MCOW34SG.js +269 -0
  4. package/build/chunk-W5IABAQU.js +502 -0
  5. package/build/factories/main.d.ts +42 -2
  6. package/build/factories/main.js +209 -13
  7. package/build/index.d.ts +14 -9
  8. package/build/index.js +237 -202
  9. package/build/main-63126780.d.ts +109 -0
  10. package/build/modules/core/main.d.ts +3 -62
  11. package/build/modules/core/main.js +21 -121
  12. package/build/src/reporters/main.d.ts +9 -4
  13. package/build/src/reporters/main.js +11 -37
  14. package/build/src/types.d.ts +23 -19
  15. package/build/src/types.js +14 -9
  16. package/package.json +26 -17
  17. package/build/factories/runner.d.ts +0 -27
  18. package/build/factories/runner.js +0 -206
  19. package/build/modules/core/reporters/base.d.ts +0 -41
  20. package/build/modules/core/reporters/base.js +0 -183
  21. package/build/modules/core/types.d.ts +0 -5
  22. package/build/modules/core/types.js +0 -9
  23. package/build/src/cli_parser.d.ts +0 -14
  24. package/build/src/cli_parser.js +0 -75
  25. package/build/src/config_manager.d.ts +0 -18
  26. package/build/src/config_manager.js +0 -168
  27. package/build/src/create_test.d.ts +0 -21
  28. package/build/src/create_test.js +0 -53
  29. package/build/src/debug.d.ts +0 -3
  30. package/build/src/debug.js +0 -10
  31. package/build/src/exceptions_manager.d.ts +0 -19
  32. package/build/src/exceptions_manager.js +0 -85
  33. package/build/src/files_manager.d.ts +0 -18
  34. package/build/src/files_manager.js +0 -57
  35. package/build/src/helpers.d.ts +0 -22
  36. package/build/src/helpers.js +0 -10
  37. package/build/src/hooks.d.ts +0 -20
  38. package/build/src/hooks.js +0 -46
  39. package/build/src/planner.d.ts +0 -25
  40. package/build/src/planner.js +0 -98
  41. package/build/src/plugins/retry.d.ts +0 -20
  42. package/build/src/plugins/retry.js +0 -66
  43. package/build/src/reporters/dot.d.ts +0 -15
  44. package/build/src/reporters/dot.js +0 -41
  45. package/build/src/reporters/ndjson.d.ts +0 -15
  46. package/build/src/reporters/ndjson.js +0 -86
  47. package/build/src/reporters/spec.d.ts +0 -13
  48. package/build/src/reporters/spec.js +0 -154
  49. package/build/src/validator.d.ts +0 -30
  50. package/build/src/validator.js +0 -85
@@ -1,13 +1,209 @@
1
- /*
2
- * @japa/runner
3
- *
4
- * (c) Japa
5
- *
6
- * For the full copyright and license information, please view the LICENSE
7
- * file that was distributed with this source code.
8
- */
9
- import { RunnerFactory } from './runner.js';
10
- /**
11
- * Create an instance of the runner factory
12
- */
13
- export const runner = () => new RunnerFactory();
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 type { TestExecutor } from '@japa/core/types';
2
- import type { Config } from './src/types.js';
3
- import { Group, Test, TestContext } from './modules/core/main.js';
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
- export declare function test(title: string, callback?: TestExecutor<TestContext, undefined>): Test<undefined>;
9
- export declare namespace test {
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
- export declare function getActiveTest(): Test<any> | undefined;
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
- export declare function processCLIArgs(argv: string[]): void;
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
- export declare function configure(options: Config): void;
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
- export declare function run(): Promise<void>;
36
+ declare function run(): Promise<void>;
37
+
38
+ export { configure, getActiveTest, processCLIArgs, run, test };