yeoman-test 7.0.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 +4 -5
- package/dist/helpers.js +16 -5
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/run-context.d.ts +2 -1
- package/dist/run-context.js +24 -19
- package/dist/test-context.d.ts +0 -1
- package/dist/test-context.js +0 -1
- package/package.json +2 -2
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>;
|
|
@@ -95,7 +95,7 @@ export declare class YeomanTest {
|
|
|
95
95
|
* ];
|
|
96
96
|
* var angular = createGenerator('angular:app', deps);
|
|
97
97
|
*/
|
|
98
|
-
createGenerator<GeneratorType extends YeomanGenerator = YeomanGenerator>(name: string, dependencies: Dependency[], args?: string[], options?: YeomanGenerator.GeneratorOptions, localConfigOnly?: boolean): GeneratorType
|
|
98
|
+
createGenerator<GeneratorType extends YeomanGenerator = YeomanGenerator>(name: string, dependencies: Dependency[], args?: string[], options?: YeomanGenerator.GeneratorOptions, localConfigOnly?: boolean): GeneratorType | Promise<GeneratorType>;
|
|
99
99
|
/**
|
|
100
100
|
* @deprecated
|
|
101
101
|
* Register a list of dependent generators into the provided env.
|
|
@@ -119,16 +119,15 @@ export declare class YeomanTest {
|
|
|
119
119
|
* createEnv.restore();
|
|
120
120
|
* });
|
|
121
121
|
*/
|
|
122
|
-
createEnv(...args: Parameters<typeof createEnv>): ReturnType<typeof createEnv
|
|
122
|
+
createEnv(...args: Parameters<typeof createEnv>): ReturnType<typeof createEnv> | Promise<ReturnType<typeof createEnv>>;
|
|
123
123
|
/**
|
|
124
124
|
* Creates a test environment.
|
|
125
125
|
*
|
|
126
126
|
* @param {Function} envContructor - environment constructor method.
|
|
127
127
|
* @param {Object} [options] - Options to be passed to the environment
|
|
128
|
-
* @returns {Object} environment instance
|
|
129
128
|
* const env = createTestEnv(require('yeoman-environment').createEnv);
|
|
130
129
|
*/
|
|
131
|
-
createTestEnv(envContructor?: (args?: string | string[] | undefined, opts?: Environment.Options | undefined, adapter?: import("yeoman-environment/lib/adapter.js") | undefined) => Environment<Environment.Options
|
|
130
|
+
createTestEnv(envContructor?: (args?: string | string[] | undefined, opts?: Environment.Options | undefined, adapter?: import("yeoman-environment/lib/adapter.js") | undefined) => Environment<Environment.Options> | Promise<Environment<Environment.Options>>, options?: Environment.Options): Environment<Environment.Options> | Promise<Environment<Environment.Options>>;
|
|
132
131
|
/**
|
|
133
132
|
* Get RunContext type
|
|
134
133
|
* @return {RunContext}
|
package/dist/helpers.js
CHANGED
|
@@ -147,9 +147,16 @@ export class YeomanTest {
|
|
|
147
147
|
* var angular = createGenerator('angular:app', deps);
|
|
148
148
|
*/
|
|
149
149
|
createGenerator(name, dependencies, args, options, localConfigOnly = true) {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
const maybeEnv = this.createEnv([], { sharedOptions: { localConfigOnly } });
|
|
151
|
+
// TODO convert method to async.
|
|
152
|
+
if ('then' in maybeEnv) {
|
|
153
|
+
return maybeEnv.then(env => {
|
|
154
|
+
this.registerDependencies(env, dependencies);
|
|
155
|
+
return env.create(name, args, options);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
this.registerDependencies(maybeEnv, dependencies);
|
|
159
|
+
return maybeEnv.create(name, args, options);
|
|
153
160
|
}
|
|
154
161
|
/**
|
|
155
162
|
* @deprecated
|
|
@@ -161,7 +168,12 @@ export class YeomanTest {
|
|
|
161
168
|
registerDependencies(env, dependencies) {
|
|
162
169
|
for (const dependency of dependencies) {
|
|
163
170
|
if (Array.isArray(dependency)) {
|
|
164
|
-
|
|
171
|
+
if (typeof dependency[0] === 'string') {
|
|
172
|
+
env.register(...dependency);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
env.registerStub(...dependency);
|
|
176
|
+
}
|
|
165
177
|
}
|
|
166
178
|
else {
|
|
167
179
|
env.register(dependency);
|
|
@@ -191,7 +203,6 @@ export class YeomanTest {
|
|
|
191
203
|
*
|
|
192
204
|
* @param {Function} envContructor - environment constructor method.
|
|
193
205
|
* @param {Object} [options] - Options to be passed to the environment
|
|
194
|
-
* @returns {Object} environment instance
|
|
195
206
|
* const env = createTestEnv(require('yeoman-environment').createEnv);
|
|
196
207
|
*/
|
|
197
208
|
createTestEnv(envContructor = this.createEnv, options = { localConfigOnly: true }) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default, createHelpers, YeomanTest, type Dependency } from './helpers.js';
|
|
2
2
|
export { default as RunContext, RunContextBase, type RunContextSettings } from './run-context.js';
|
|
3
3
|
export { default as RunResult, type RunResultOptions } from './run-result.js';
|
|
4
|
+
export { default as context } from './test-context.js';
|
|
4
5
|
export { DummyPrompt, TestAdapter } from './adapter.js';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default, createHelpers, YeomanTest } from './helpers.js';
|
|
2
2
|
export { default as RunContext, RunContextBase } from './run-context.js';
|
|
3
3
|
export { default as RunResult } from './run-result.js';
|
|
4
|
+
export { default as context } from './test-context.js';
|
|
4
5
|
export { DummyPrompt, TestAdapter } from './adapter.js';
|
package/dist/run-context.d.ts
CHANGED
|
@@ -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
|
/**
|
package/dist/run-context.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
414
|
+
this.built = true;
|
|
411
415
|
if (!this.targetDirectory && this.settings.tmpdir !== false) {
|
|
412
416
|
this.inTmpDir();
|
|
413
417
|
}
|
|
@@ -424,7 +428,7 @@ export class RunContextBase extends EventEmitter {
|
|
|
424
428
|
if (!this.targetDirectory) {
|
|
425
429
|
throw new Error('targetDirectory is required');
|
|
426
430
|
}
|
|
427
|
-
const testEnv = this.helpers.createTestEnv(this.envOptions.createEnv, {
|
|
431
|
+
const testEnv = await this.helpers.createTestEnv(this.envOptions.createEnv, {
|
|
428
432
|
cwd: this.settings.forwardCwd ? this.targetDirectory : undefined,
|
|
429
433
|
...this.options,
|
|
430
434
|
...this.envOptions,
|
|
@@ -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
|
-
|
|
443
|
-
if (typeof this.Generator === 'string') {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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/dist/test-context.d.ts
CHANGED
package/dist/test-context.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yeoman-test",
|
|
3
|
-
"version": "7.
|
|
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",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"doc_path": "../yeoman-test-doc"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@
|
|
29
|
+
"@node-loaders/esbuild": "^0.6.0",
|
|
30
30
|
"@types/mocha": "^10.0.0",
|
|
31
31
|
"@types/sinon": "^10.0.13",
|
|
32
32
|
"coveralls": "^3.1.1",
|