@japa/runner 2.5.1 → 3.0.0-1

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 (69) hide show
  1. package/LICENSE.md +1 -1
  2. package/build/factories/main.d.ts +3 -0
  3. package/build/factories/main.d.ts.map +1 -0
  4. package/build/factories/main.js +2 -0
  5. package/build/factories/runner.d.ts +10 -0
  6. package/build/factories/runner.d.ts.map +1 -0
  7. package/build/factories/runner.js +155 -0
  8. package/build/index.d.ts +8 -29
  9. package/build/index.js +93 -466
  10. package/build/modules/core/main.d.ts +29 -0
  11. package/build/modules/core/main.d.ts.map +1 -0
  12. package/build/modules/core/main.js +68 -0
  13. package/build/modules/core/reporters/base.d.ts +21 -0
  14. package/build/modules/core/reporters/base.d.ts.map +1 -0
  15. package/build/modules/core/reporters/base.js +136 -0
  16. package/build/modules/core/types.d.ts +6 -0
  17. package/build/modules/core/types.d.ts.map +1 -0
  18. package/build/modules/core/types.js +1 -0
  19. package/build/src/cli_parser.d.ts +6 -0
  20. package/build/src/cli_parser.d.ts.map +1 -0
  21. package/build/src/cli_parser.js +49 -0
  22. package/build/src/config_manager.d.ts +7 -0
  23. package/build/src/config_manager.d.ts.map +1 -0
  24. package/build/src/config_manager.js +115 -0
  25. package/build/src/create_test.d.ts +16 -0
  26. package/build/src/create_test.d.ts.map +1 -0
  27. package/build/src/create_test.js +33 -0
  28. package/build/src/debug.d.ts +2 -1
  29. package/build/src/debug.d.ts.map +1 -0
  30. package/build/src/debug.js +2 -12
  31. package/build/src/exceptions_manager.d.ts +7 -0
  32. package/build/src/exceptions_manager.d.ts.map +1 -0
  33. package/build/src/exceptions_manager.js +58 -0
  34. package/build/src/files_manager.d.ts +7 -0
  35. package/build/src/files_manager.d.ts.map +1 -0
  36. package/build/src/files_manager.js +28 -0
  37. package/build/src/helpers.d.ts +23 -0
  38. package/build/src/helpers.d.ts.map +1 -0
  39. package/build/src/helpers.js +2 -0
  40. package/build/src/hooks.d.ts +9 -0
  41. package/build/src/hooks.d.ts.map +1 -0
  42. package/build/src/hooks.js +26 -0
  43. package/build/src/planner.d.ts +18 -0
  44. package/build/src/planner.d.ts.map +1 -0
  45. package/build/src/planner.js +67 -0
  46. package/build/src/plugins/retry.d.ts +8 -0
  47. package/build/src/plugins/retry.d.ts.map +1 -0
  48. package/build/src/plugins/retry.js +42 -0
  49. package/build/src/reporters/dot.d.ts +7 -0
  50. package/build/src/reporters/dot.d.ts.map +1 -0
  51. package/build/src/reporters/dot.js +24 -0
  52. package/build/src/reporters/main.d.ts +5 -0
  53. package/build/src/reporters/main.d.ts.map +1 -0
  54. package/build/src/reporters/main.js +21 -0
  55. package/build/src/reporters/ndjson.d.ts +12 -0
  56. package/build/src/reporters/ndjson.d.ts.map +1 -0
  57. package/build/src/reporters/ndjson.js +61 -0
  58. package/build/src/reporters/spec.d.ts +11 -0
  59. package/build/src/reporters/spec.d.ts.map +1 -0
  60. package/build/src/reporters/spec.js +103 -0
  61. package/build/src/types.d.ts +48 -49
  62. package/build/src/types.d.ts.map +1 -0
  63. package/build/src/types.js +1 -10
  64. package/build/src/validator.d.ts +11 -0
  65. package/build/src/validator.d.ts.map +1 -0
  66. package/build/src/validator.js +46 -0
  67. package/package.json +78 -83
  68. package/build/src/core/main.d.ts +0 -49
  69. package/build/src/core/main.js +0 -87
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
 
3
- Copyright 2022 Harminder Virk, contributors
3
+ Copyright (c) 2023 Harminder Virk
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
@@ -0,0 +1,3 @@
1
+ import { RunnerFactory } from './runner.js';
2
+ export declare const runner: () => RunnerFactory;
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../factories/main.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAK3C,eAAO,MAAM,MAAM,qBAA4B,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { RunnerFactory } from './runner.js';
2
+ export const runner = () => new RunnerFactory();
@@ -0,0 +1,10 @@
1
+ import { Config } from '../src/types.js';
2
+ import { Suite, Emitter } from '../modules/core/main.js';
3
+ export declare class RunnerFactory {
4
+ #private;
5
+ configure(config: Config, argv?: string[]): this;
6
+ withSuites(suites: Suite[]): this;
7
+ useEmitter(emitter: Emitter): this;
8
+ run(): Promise<import("@japa/core/types").RunnerSummary>;
9
+ }
10
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../factories/runner.ts"],"names":[],"mappings":"AAeA,OAAO,EAAW,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,EAAS,KAAK,EAAU,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAOvE,qBAAa,aAAa;;IAmJxB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE;IAUzC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;IAQ1B,UAAU,CAAC,OAAO,EAAE,OAAO;IAQrB,GAAG;CAoCV"}
@@ -0,0 +1,155 @@
1
+ import assert from 'node:assert';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { Planner } from '../src/planner.js';
4
+ import { GlobalHooks } from '../src/hooks.js';
5
+ import { CliParser } from '../src/cli_parser.js';
6
+ import { ConfigManager } from '../src/config_manager.js';
7
+ import { createTest, createTestGroup } from '../src/create_test.js';
8
+ import { Suite, Runner, Emitter } from '../modules/core/main.js';
9
+ export class RunnerFactory {
10
+ #emitter = new Emitter();
11
+ #config;
12
+ #cliArgs;
13
+ #suites;
14
+ #file = fileURLToPath(import.meta.url);
15
+ get #refiner() {
16
+ return this.#config.refiner;
17
+ }
18
+ #createSuites() {
19
+ return [
20
+ new Suite('unit', this.#emitter, this.#refiner),
21
+ new Suite('functional', this.#emitter, this.#refiner),
22
+ ];
23
+ }
24
+ #createAdditionTests(group) {
25
+ createTest('add two numbers', this.#emitter, this.#refiner, { group, file: this.#file }).run(() => {
26
+ assert.equal(2 + 2, 4);
27
+ });
28
+ createTest('add three numbers', this.#emitter, this.#refiner, {
29
+ group,
30
+ file: this.#file,
31
+ }).run(() => {
32
+ assert.equal(2 + 2 + 2, 6);
33
+ });
34
+ createTest('add group of numbers', this.#emitter, this.#refiner, { group, file: this.#file });
35
+ createTest('use math.js lib', this.#emitter, this.#refiner, { group, file: this.#file }).skip(true, 'Library work pending');
36
+ createTest('add multiple numbers', this.#emitter, this.#refiner, {
37
+ file: this.#file,
38
+ group,
39
+ }).run(() => {
40
+ assert.equal(2 + 2 + 2 + 2, 6);
41
+ });
42
+ createTest('add floating numbers', this.#emitter, this.#refiner, { group, file: this.#file })
43
+ .run(() => {
44
+ assert.equal(2 + 2.2 + 2.1, 6);
45
+ })
46
+ .fails('Have to add support for floating numbers');
47
+ }
48
+ #createUserStoreTests(group) {
49
+ createTest('Validate user data', this.#emitter, this.#refiner, {
50
+ group,
51
+ file: this.#file,
52
+ }).run(() => { });
53
+ createTest('Disallow duplicate emails', this.#emitter, this.#refiner, {
54
+ group,
55
+ file: this.#file,
56
+ }).run(() => { });
57
+ createTest('Disallow duplicate emails across tenants', this.#emitter, this.#refiner, {
58
+ group,
59
+ file: this.#file,
60
+ }).run(() => {
61
+ const users = ['', ''];
62
+ assert.equal(users.length, 1);
63
+ });
64
+ createTest('Normalize email before persisting it', this.#emitter, this.#refiner, {
65
+ group,
66
+ file: this.#file,
67
+ }).skip(true, 'Have to build a normalizer');
68
+ createTest('Send email verification mail', this.#emitter, this.#refiner, {
69
+ group,
70
+ file: this.#file,
71
+ });
72
+ }
73
+ #createUnitTests(suite) {
74
+ const additionGroup = createTestGroup('Maths#add', this.#emitter, this.#refiner, {
75
+ suite,
76
+ file: this.#file,
77
+ });
78
+ this.#createAdditionTests(additionGroup);
79
+ createTest('A top level test inside a suite', this.#emitter, this.#refiner, {
80
+ suite,
81
+ file: this.#file,
82
+ }).run(() => { });
83
+ }
84
+ #createFunctionalTests(suite) {
85
+ const usersStoreGroup = createTestGroup('Users/store', this.#emitter, this.#refiner, {
86
+ suite,
87
+ file: this.#file,
88
+ });
89
+ this.#createUserStoreTests(usersStoreGroup);
90
+ const usersListGroup = createTestGroup('Users/list', this.#emitter, this.#refiner, {
91
+ suite,
92
+ file: this.#file,
93
+ });
94
+ usersListGroup.setup(() => {
95
+ throw new Error('Unable to cleanup database');
96
+ });
97
+ createTest('A test that will never because the group hooks fails', this.#emitter, this.#refiner, { group: usersListGroup });
98
+ createTest('A top level test inside functional suite', this.#emitter, this.#refiner, {
99
+ suite,
100
+ file: this.#file,
101
+ }).run(() => { });
102
+ }
103
+ async #registerPlugins(runner) {
104
+ for (let plugin of this.#config.plugins) {
105
+ await plugin({
106
+ config: this.#config,
107
+ runner,
108
+ emitter: this.#emitter,
109
+ cliArgs: this.#cliArgs,
110
+ });
111
+ }
112
+ }
113
+ configure(config, argv) {
114
+ this.#cliArgs = new CliParser().parse(argv || []);
115
+ this.#config = new ConfigManager(config, this.#cliArgs).hydrate();
116
+ return this;
117
+ }
118
+ withSuites(suites) {
119
+ this.#suites = suites;
120
+ return this;
121
+ }
122
+ useEmitter(emitter) {
123
+ this.#emitter = emitter;
124
+ return this;
125
+ }
126
+ async run() {
127
+ const runner = new Runner(this.#emitter);
128
+ await this.#registerPlugins(runner);
129
+ const { config, reporters, refinerFilters } = await new Planner(this.#config).plan();
130
+ const globalHooks = new GlobalHooks();
131
+ globalHooks.apply(config);
132
+ reporters.forEach((reporter) => {
133
+ runner.registerReporter(reporter);
134
+ });
135
+ refinerFilters.forEach((filter) => {
136
+ config.refiner.add(filter.layer, filter.filters);
137
+ });
138
+ if (this.#suites) {
139
+ this.#suites.forEach((suite) => runner.add(suite));
140
+ }
141
+ else {
142
+ const [unit, functional] = this.#createSuites();
143
+ this.#createUnitTests(unit);
144
+ runner.add(unit);
145
+ this.#createFunctionalTests(functional);
146
+ runner.add(functional);
147
+ }
148
+ await globalHooks.setup(runner);
149
+ await runner.start();
150
+ await runner.exec();
151
+ await runner.end();
152
+ await globalHooks.teardown(null, runner);
153
+ return runner.getSummary();
154
+ }
155
+ }
package/build/index.d.ts CHANGED
@@ -1,33 +1,12 @@
1
- import { TestExecutor, ReporterContract } from '@japa/core';
2
- import { Test, TestContext, Group, Suite, Runner } from './src/core/main';
3
- import { Config, PluginFn, RunnerHooksHandler, RunnerHooksCleanupHandler } from './src/types';
4
- export { Test, Config, Suite, Runner, Group, PluginFn, TestContext, ReporterContract, RunnerHooksHandler, RunnerHooksCleanupHandler, };
5
- /**
6
- * Configure the tests runner
7
- */
8
- export declare function configure(options: Config): void;
9
- /**
10
- * Process CLI arguments into configuration options. The following
11
- * command line arguments are processed.
12
- *
13
- * * --tests=Specify test titles
14
- * * --tags=Specify test tags
15
- * * --groups=Specify group titles
16
- * * --ignore-tags=Specify negated tags
17
- * * --files=Specify files to match and run
18
- * * --force-exit=Enable/disable force exit
19
- * * --timeout=Define timeout for all the tests
20
- * * -h, --help=Show help
21
- */
22
- export declare function processCliArgs(argv: string[]): Partial<Config>;
23
- /**
24
- * Run japa tests
25
- */
26
- export declare function run(): Promise<void>;
27
- /**
28
- * Add a new test
29
- */
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';
30
4
  export declare function test(title: string, callback?: TestExecutor<TestContext, undefined>): Test<undefined>;
31
5
  export declare namespace test {
32
6
  var group: (title: string, callback: (group: Group) => void) => void;
33
7
  }
8
+ export declare function getActiveTest(): Test<any> | undefined;
9
+ export declare function processCLIArgs(argv: string[]): void;
10
+ export declare function configure(options: Config): void;
11
+ export declare function run(): Promise<void>;
12
+ //# sourceMappingURL=index.d.ts.map