yeoman-test 7.1.0 → 7.2.0

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/helpers.d.ts CHANGED
@@ -9,7 +9,7 @@ import type { RunContextSettings } from './run-context.js';
9
9
  /**
10
10
  * Dependencies can be path (autodiscovery) or an array [<generator>, <name>]
11
11
  */
12
- export type Dependency = string | Parameters<Environment['registerStub']>;
12
+ export type Dependency = string | Parameters<Environment['registerStub']> | Parameters<Environment['register']>;
13
13
  type GeneratorNew<GenParameter extends YeomanGenerator = YeomanGenerator> = new (...args: ConstructorParameters<typeof YeomanGenerator<GenParameter['options']>>) => YeomanGenerator<GenParameter['options']>;
14
14
  type GeneratorBuilder<GenParameter extends YeomanGenerator = YeomanGenerator> = (...args: ConstructorParameters<typeof YeomanGenerator<GenParameter['options']>>) => YeomanGenerator<GenParameter['options']>;
15
15
  export type GeneratorConstructor<GenParameter extends YeomanGenerator = YeomanGenerator> = GeneratorNew<GenParameter> | GeneratorBuilder<GenParameter>;
package/dist/helpers.js CHANGED
@@ -168,7 +168,12 @@ export class YeomanTest {
168
168
  registerDependencies(env, dependencies) {
169
169
  for (const dependency of dependencies) {
170
170
  if (Array.isArray(dependency)) {
171
- env.registerStub(dependency[0], dependency[1]);
171
+ if (typeof dependency[0] === 'string') {
172
+ env.register(...dependency);
173
+ }
174
+ else {
175
+ env.registerStub(...dependency);
176
+ }
172
177
  }
173
178
  else {
174
179
  env.register(dependency);
@@ -31,7 +31,7 @@ export type RunContextSettings = {
31
31
  namespace?: string;
32
32
  };
33
33
  type PromiseRunResult<GeneratorType extends Generator> = Promise<RunResult<GeneratorType>>;
34
- export declare class RunContextBase<GeneratorType extends Generator> extends EventEmitter {
34
+ export declare class RunContextBase<GeneratorType extends Generator = Generator> extends EventEmitter {
35
35
  readonly mockedGenerators: Record<string, Generator>;
36
36
  env: Environment;
37
37
  generator: GeneratorType;
@@ -54,6 +54,7 @@ export declare class RunContextBase<GeneratorType extends Generator> extends Eve
54
54
  private oldCwd?;
55
55
  private eventListenersSet;
56
56
  private envCB;
57
+ private built;
57
58
  private ran;
58
59
  private errored;
59
60
  /**
@@ -32,6 +32,7 @@ export class RunContextBase extends EventEmitter {
32
32
  oldCwd;
33
33
  eventListenersSet = false;
34
34
  envCB;
35
+ built = false;
35
36
  ran = false;
36
37
  errored = false;
37
38
  /**
@@ -47,14 +48,9 @@ export class RunContextBase extends EventEmitter {
47
48
  constructor(generatorType, settings, envOptions = {}, helpers = defaultHelpers) {
48
49
  super();
49
50
  this.settings = {
50
- namespace: 'gen:test',
51
51
  ...settings,
52
52
  };
53
53
  this.Generator = generatorType;
54
- if (typeof generatorType !== 'string') {
55
- const { namespace, resolved } = this.settings;
56
- this.withGenerators([[generatorType, namespace, resolved]]);
57
- }
58
54
  this.envOptions = envOptions;
59
55
  this.withOptions({
60
56
  force: true,
@@ -72,7 +68,8 @@ export class RunContextBase extends EventEmitter {
72
68
  * @return {PromiseRunResult} Promise a RunResult instance.
73
69
  */
74
70
  async run() {
75
- if (!this.ran) {
71
+ this.ran = true;
72
+ if (!this.built) {
76
73
  await this.build();
77
74
  }
78
75
  try {
@@ -288,13 +285,20 @@ export class RunContextBase extends EventEmitter {
288
285
  */
289
286
  withGenerators(dependencies) {
290
287
  assert(Array.isArray(dependencies), 'dependencies should be an array');
291
- return this.onEnvironment(env => {
288
+ return this.onEnvironment(async (env) => {
292
289
  for (const dependency of dependencies) {
293
290
  if (Array.isArray(dependency)) {
294
- env.registerStub(...dependency);
291
+ if (typeof dependency[0] === 'string') {
292
+ // eslint-disable-next-line no-await-in-loop, @typescript-eslint/await-thenable
293
+ await env.register(...dependency);
294
+ }
295
+ else {
296
+ env.registerStub(...dependency);
297
+ }
295
298
  }
296
299
  else {
297
- env.register(dependency);
300
+ // eslint-disable-next-line no-await-in-loop, @typescript-eslint/await-thenable
301
+ await env.register(dependency);
298
302
  }
299
303
  }
300
304
  });
@@ -397,7 +401,7 @@ export class RunContextBase extends EventEmitter {
397
401
  return this;
398
402
  }
399
403
  assertNotBuild() {
400
- if (this.ran || this.completed) {
404
+ if (this.built || this.completed) {
401
405
  throw new Error('The context is already built');
402
406
  }
403
407
  }
@@ -407,7 +411,7 @@ export class RunContextBase extends EventEmitter {
407
411
  */
408
412
  async build() {
409
413
  this.assertNotBuild();
410
- this.ran = true;
414
+ this.built = true;
411
415
  if (!this.targetDirectory && this.settings.tmpdir !== false) {
412
416
  this.inTmpDir();
413
417
  }
@@ -439,13 +443,14 @@ export class RunContextBase extends EventEmitter {
439
443
  // eslint-disable-next-line no-await-in-loop
440
444
  await onEnvironmentCallback.call(this, this.env);
441
445
  }
442
- let { namespace } = this.settings;
443
- if (typeof this.Generator === 'string') {
444
- namespace = this.env.namespace(this.Generator);
445
- if (namespace !== this.Generator) {
446
- // Generator is a file path, it should be registered.
447
- this.env.register(this.Generator);
448
- }
446
+ const { namespace = typeof this.Generator === 'string' ? this.env.namespace(this.Generator) : 'gen:test' } = this.settings;
447
+ if (typeof this.Generator === 'string' && namespace !== this.Generator) {
448
+ // Generator is a file path, it should be registered.
449
+ this.env.register(this.Generator, namespace);
450
+ }
451
+ else if (typeof this.Generator !== 'string') {
452
+ const { resolved } = this.settings;
453
+ this.env.registerStub(this.Generator, namespace, resolved);
449
454
  }
450
455
  // eslint-disable-next-line @typescript-eslint/await-thenable
451
456
  this.generator = (await this.env.create(namespace, this.args, this.options));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yeoman-test",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "description": "Test utilities for Yeoman generators",
5
5
  "homepage": "http://yeoman.io/authoring/testing.html",
6
6
  "author": "The Yeoman Team",