@japa/runner 2.4.0 → 2.5.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.
package/build/index.js CHANGED
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "TestContext", { enumerable: true, get: function
27
27
  Object.defineProperty(exports, "Group", { enumerable: true, get: function () { return main_1.Group; } });
28
28
  Object.defineProperty(exports, "Suite", { enumerable: true, get: function () { return main_1.Suite; } });
29
29
  Object.defineProperty(exports, "Runner", { enumerable: true, get: function () { return main_1.Runner; } });
30
+ const debug_1 = __importDefault(require("./src/debug"));
30
31
  /**
31
32
  * Filtering layers allowed by the refiner
32
33
  */
@@ -156,12 +157,15 @@ async function importFiles(files) {
156
157
  */
157
158
  async function endTests(runner) {
158
159
  if (runnerOptions.forceExit) {
160
+ (0, debug_1.default)('force exiting tests after executing them');
159
161
  await runner.end();
160
162
  }
161
163
  else {
164
+ (0, debug_1.default)('executed tests and waiting for "process.beforeExit" event');
162
165
  return new Promise((resolve) => {
163
166
  async function beforeExit() {
164
167
  process.removeListener('beforeExit', beforeExit);
168
+ (0, debug_1.default)('received "process.beforeExit" event, ending tests');
165
169
  await runner.end();
166
170
  resolve();
167
171
  }
@@ -196,6 +200,7 @@ Examples:
196
200
  */
197
201
  function configure(options) {
198
202
  const defaultOptions = {
203
+ cliArgs: {},
199
204
  cwd: process.cwd(),
200
205
  files: [],
201
206
  suites: [],
@@ -238,6 +243,7 @@ function processCliArgs(argv) {
238
243
  });
239
244
  const config = {
240
245
  filters: {},
246
+ cliArgs: parsed,
241
247
  };
242
248
  processAsString(parsed, 'tags', (tags) => (config.filters.tags = tags));
243
249
  processAsString(parsed, 'ignoreTags', (tags) => {
@@ -297,13 +303,17 @@ async function run() {
297
303
  * running plugins only
298
304
  */
299
305
  for (let plugin of runnerOptions.plugins) {
306
+ (0, debug_1.default)('running plugin "%s"', plugin.name || 'anonymous');
300
307
  await plugin(runnerOptions, runner, { Test: main_1.Test, TestContext: main_1.TestContext, Group: main_1.Group });
301
308
  }
302
309
  validateSuitesFilter();
303
310
  /**
304
311
  * Step 2: Notify runner about reporters
305
312
  */
306
- runnerOptions.reporters.forEach((reporter) => runner.registerReporter(reporter));
313
+ runnerOptions.reporters.forEach((reporter) => {
314
+ (0, debug_1.default)('registering reporter "%s"', reporter.name || 'anonymous');
315
+ runner.registerReporter(reporter);
316
+ });
307
317
  /**
308
318
  * Step 3: Configure runner hooks.
309
319
  */
@@ -324,6 +334,7 @@ async function run() {
324
334
  * as part of the default suite
325
335
  */
326
336
  if ('files' in runnerOptions && runnerOptions.files.length) {
337
+ (0, debug_1.default)('collecting files for %O globs', runnerOptions.files);
327
338
  /**
328
339
  * Create a default suite for files with no suite
329
340
  */
@@ -351,6 +362,7 @@ async function run() {
351
362
  else {
352
363
  globalTimeout = runnerOptions.timeout;
353
364
  }
365
+ (0, debug_1.default)('collecting "%s" suite files for %O globs', suite.name, suite.files);
354
366
  const files = await collectFiles(suite.files);
355
367
  /**
356
368
  * Only register the suite and import files when the suite
@@ -1,4 +1,9 @@
1
1
  import { DataSetNode, Test as BaseTest, Group as BaseGroup, Suite as BaseSuite, Runner as BaseRunner, TestHooksCleanupHandler, TestContext as BaseTestContext } from '@japa/core';
2
+ /**
3
+ * Runner specific test context. Here we extend the test context to register
4
+ * cleanup methods with the test and register hooks to get notified when
5
+ * a new instance of test context is created.
6
+ */
2
7
  export declare class TestContext extends BaseTestContext {
3
8
  test: Test;
4
9
  /**
@@ -18,15 +23,27 @@ export declare class TestContext extends BaseTestContext {
18
23
  cleanup: (handler: TestHooksCleanupHandler<this>) => void;
19
24
  constructor(test: Test);
20
25
  }
26
+ /**
27
+ * Runner specific Test with a fixed TestContext static type.
28
+ */
21
29
  export declare class Test<TestData extends DataSetNode = undefined> extends BaseTest<TestContext, TestData> {
22
30
  static disposeCallbacks: never[];
23
31
  }
32
+ /**
33
+ * Runner specific Group with a fixed TestContext static type.
34
+ */
24
35
  export declare class Group extends BaseGroup<TestContext> {
25
36
  }
37
+ /**
38
+ * Runner specific Suite with a fixed TestContext static type.
39
+ */
26
40
  export declare class Suite extends BaseSuite<TestContext> {
27
41
  onGroup(callback: (group: Group) => void): this;
28
42
  onTest(callback: (test: Test<any>) => void): this;
29
43
  }
44
+ /**
45
+ * Runner specific tests Runner with a fixed TestContext static type.
46
+ */
30
47
  export declare class Runner extends BaseRunner<TestContext> {
31
48
  onSuite(callback: (suite: Suite) => void): this;
32
49
  }
@@ -7,15 +7,25 @@
7
7
  * For the full copyright and license information, please view the LICENSE
8
8
  * file that was distributed with this source code.
9
9
  */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
10
13
  Object.defineProperty(exports, "__esModule", { value: true });
11
14
  exports.Runner = exports.Suite = exports.Group = exports.Test = exports.TestContext = void 0;
12
15
  const core_1 = require("@japa/core");
16
+ const debug_1 = __importDefault(require("../debug"));
17
+ /**
18
+ * Runner specific test context. Here we extend the test context to register
19
+ * cleanup methods with the test and register hooks to get notified when
20
+ * a new instance of test context is created.
21
+ */
13
22
  class TestContext extends core_1.TestContext {
14
23
  /**
15
24
  * Register a function to get notified when an instance of test
16
25
  * context is created. The callback must be synchronous
17
26
  */
18
27
  static created(callback) {
28
+ (0, debug_1.default)('registering test context created hook "%s"', callback);
19
29
  this.createdCallbacks.push(callback);
20
30
  return this;
21
31
  }
@@ -38,13 +48,22 @@ exports.TestContext = TestContext;
38
48
  * is created
39
49
  */
40
50
  TestContext.createdCallbacks = [];
51
+ /**
52
+ * Runner specific Test with a fixed TestContext static type.
53
+ */
41
54
  class Test extends core_1.Test {
42
55
  }
43
56
  exports.Test = Test;
44
57
  Test.disposeCallbacks = [];
58
+ /**
59
+ * Runner specific Group with a fixed TestContext static type.
60
+ */
45
61
  class Group extends core_1.Group {
46
62
  }
47
63
  exports.Group = Group;
64
+ /**
65
+ * Runner specific Suite with a fixed TestContext static type.
66
+ */
48
67
  class Suite extends core_1.Suite {
49
68
  onGroup(callback) {
50
69
  super.onGroup(callback);
@@ -56,6 +75,9 @@ class Suite extends core_1.Suite {
56
75
  }
57
76
  }
58
77
  exports.Suite = Suite;
78
+ /**
79
+ * Runner specific tests Runner with a fixed TestContext static type.
80
+ */
59
81
  class Runner extends core_1.Runner {
60
82
  onSuite(callback) {
61
83
  super.onSuite(callback);
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ declare const _default: import("util").DebugLogger;
3
+ export default _default;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /*
3
+ * @japa/runner
4
+ *
5
+ * (c) Japa.dev
6
+ *
7
+ * For the full copyright and license information, please view the LICENSE
8
+ * file that was distributed with this source code.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const util_1 = require("util");
12
+ exports.default = (0, util_1.debuglog)('japa:runner');
@@ -34,6 +34,7 @@ export type RunnerHooks = {
34
34
  * Base configuration options
35
35
  */
36
36
  export type BaseConfig = {
37
+ cliArgs?: Record<string, any>;
37
38
  cwd?: string;
38
39
  timeout?: number;
39
40
  plugins?: PluginFn[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@japa/runner",
3
- "version": "2.4.0",
3
+ "version": "2.5.1",
4
4
  "description": "Runner for Japa testing framework",
5
5
  "main": "build/index.js",
6
6
  "files": [
@@ -14,7 +14,7 @@
14
14
  "scripts": {
15
15
  "mrm": "mrm --preset=@adonisjs/mrm-preset",
16
16
  "pretest": "npm run lint",
17
- "test": "node .bin/test.js",
17
+ "test": "cross-env NODE_DEBUG=japa:runner node .bin/test.js",
18
18
  "clean": "del-cli build",
19
19
  "compile": "npm run lint && npm run clean && tsc",
20
20
  "build": "npm run compile",
@@ -36,8 +36,9 @@
36
36
  "devDependencies": {
37
37
  "@adonisjs/mrm-preset": "^5.0.3",
38
38
  "@adonisjs/require-ts": "^2.0.13",
39
- "@types/node": "^18.11.19",
39
+ "@types/node": "^18.14.0",
40
40
  "commitizen": "^4.3.0",
41
+ "cross-env": "^7.0.3",
41
42
  "cz-conventional-changelog": "^3.3.0",
42
43
  "del-cli": "^5.0.0",
43
44
  "eslint": "^8.33.0",
@@ -105,7 +106,7 @@
105
106
  "anyBranch": false
106
107
  },
107
108
  "dependencies": {
108
- "@japa/core": "^7.3.1",
109
+ "@japa/core": "^7.3.2",
109
110
  "@japa/errors-printer": "^2.1.0",
110
111
  "@poppinss/cliui": "^3.0.5",
111
112
  "@poppinss/hooks": "^6.0.2-0",