yeoman-test 8.0.0-alpha.3 → 8.0.0-beta.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/dist/adapter.js +1 -1
- package/dist/helpers.d.ts +17 -19
- package/dist/helpers.js +18 -9
- package/dist/run-context.d.ts +18 -13
- package/dist/run-context.js +26 -8
- package/dist/run-result.d.ts +8 -8
- package/dist/run-result.js +0 -1
- package/dist/test-context.d.ts +1 -2
- package/dist/type-helpers.d.ts +6 -0
- package/dist/type-helpers.js +1 -0
- package/package.json +44 -49
package/dist/adapter.js
CHANGED
package/dist/helpers.d.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import Environment from 'yeoman-environment';
|
|
3
|
-
import type { createEnv } from 'yeoman-environment';
|
|
4
|
-
import type { BaseEnvironmentOptions, BaseGenerator, GetGeneratorConstructor, PromptAnswers } from '@yeoman/types';
|
|
1
|
+
import type { BaseEnvironmentOptions, BaseGenerator, BaseGeneratorOptions, GetGeneratorConstructor, GetGeneratorOptions, PromptAnswers } from '@yeoman/types';
|
|
5
2
|
import type { SinonSpiedInstance } from 'sinon';
|
|
6
3
|
import { type DummyPromptOptions } from './adapter.js';
|
|
7
4
|
import RunContext, { BasicRunContext, type RunContextSettings } from './run-context.js';
|
|
5
|
+
import type { DefaultEnvironmentApi, DefaultGeneratorApi } from './type-helpers.js';
|
|
8
6
|
/**
|
|
9
7
|
* Dependencies can be path (autodiscovery) or an array [<generator>, <name>]
|
|
10
8
|
*/
|
|
11
|
-
export type Dependency = string | Parameters<
|
|
12
|
-
export type GeneratorFactory<GenParameter extends BaseGenerator =
|
|
9
|
+
export type Dependency = string | Parameters<DefaultEnvironmentApi['registerStub']>;
|
|
10
|
+
export type GeneratorFactory<GenParameter extends BaseGenerator = DefaultGeneratorApi> = GetGeneratorConstructor<GenParameter> | ((...args: ConstructorParameters<GetGeneratorConstructor<GenParameter>>) => GenParameter);
|
|
13
11
|
/**
|
|
14
12
|
* Collection of unit test helpers. (mostly related to Mocha syntax)
|
|
15
13
|
* @class YeomanTest
|
|
@@ -17,7 +15,7 @@ export type GeneratorFactory<GenParameter extends BaseGenerator = GeneratorImple
|
|
|
17
15
|
export declare class YeomanTest {
|
|
18
16
|
settings?: RunContextSettings;
|
|
19
17
|
environmentOptions?: BaseEnvironmentOptions;
|
|
20
|
-
generatorOptions?:
|
|
18
|
+
generatorOptions?: BaseGeneratorOptions;
|
|
21
19
|
/**
|
|
22
20
|
* @deprecated
|
|
23
21
|
* Create a function that will clean up the test directory,
|
|
@@ -51,28 +49,28 @@ export declare class YeomanTest {
|
|
|
51
49
|
* @example
|
|
52
50
|
* mockPrompt(angular, {'bootstrap': 'Y', 'compassBoostrap': 'Y'});
|
|
53
51
|
*/
|
|
54
|
-
mockPrompt(envOrGenerator: BaseGenerator |
|
|
52
|
+
mockPrompt(envOrGenerator: BaseGenerator | DefaultEnvironmentApi, mockedAnswers?: PromptAnswers, options?: DummyPromptOptions): void;
|
|
55
53
|
/**
|
|
56
54
|
* @deprecated
|
|
57
55
|
* Restore defaults prompts on a generator.
|
|
58
56
|
* @param generator or environment
|
|
59
57
|
*/
|
|
60
|
-
restorePrompt(envOrGenerator: BaseGenerator |
|
|
58
|
+
restorePrompt(envOrGenerator: BaseGenerator | DefaultEnvironmentApi): void;
|
|
61
59
|
/**
|
|
62
60
|
* @deprecated
|
|
63
61
|
* Provide mocked values to the config
|
|
64
62
|
* @param generator - a Yeoman generator
|
|
65
63
|
* @param localConfig - localConfig - should look just like if called config.getAll()
|
|
66
64
|
*/
|
|
67
|
-
mockLocalConfig(generator: BaseGenerator, localConfig:
|
|
65
|
+
mockLocalConfig(generator: BaseGenerator, localConfig: any): void;
|
|
68
66
|
/**
|
|
69
67
|
* Create a mocked generator
|
|
70
68
|
*/
|
|
71
|
-
createMockedGenerator(GeneratorClass
|
|
69
|
+
createMockedGenerator(GeneratorClass: any): Promise<SinonSpiedInstance<DefaultGeneratorApi>>;
|
|
72
70
|
/**
|
|
73
71
|
* Create a simple, dummy generator
|
|
74
72
|
*/
|
|
75
|
-
createDummyGenerator<GenParameter extends BaseGenerator =
|
|
73
|
+
createDummyGenerator<GenParameter extends BaseGenerator = DefaultGeneratorApi>(Generator?: GetGeneratorConstructor<GenParameter>, contents?: Record<string, (...args: any[]) => void>): Promise<new (...args: any[]) => GenParameter>;
|
|
76
74
|
/**
|
|
77
75
|
* Create a generator, using the given dependencies and controller arguments
|
|
78
76
|
* Dependecies can be path (autodiscovery) or an array [{generator}, {name}]
|
|
@@ -92,7 +90,7 @@ export declare class YeomanTest {
|
|
|
92
90
|
* ];
|
|
93
91
|
* var angular = createGenerator('angular:app', deps);
|
|
94
92
|
*/
|
|
95
|
-
createGenerator<GeneratorType extends BaseGenerator =
|
|
93
|
+
createGenerator<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(name: string, dependencies: Dependency[], args?: string[], options?: GetGeneratorOptions<GeneratorType>, localConfigOnly?: boolean): Promise<GeneratorType>;
|
|
96
94
|
/**
|
|
97
95
|
* @deprecated
|
|
98
96
|
* Register a list of dependent generators into the provided env.
|
|
@@ -100,7 +98,7 @@ export declare class YeomanTest {
|
|
|
100
98
|
*
|
|
101
99
|
* @param dependencies - paths to the generators dependencies
|
|
102
100
|
*/
|
|
103
|
-
registerDependencies(env:
|
|
101
|
+
registerDependencies(env: DefaultEnvironmentApi, dependencies: Dependency[]): void;
|
|
104
102
|
/**
|
|
105
103
|
* Shortcut to the Environment's createEnv.
|
|
106
104
|
*
|
|
@@ -116,7 +114,7 @@ export declare class YeomanTest {
|
|
|
116
114
|
* createEnv.restore();
|
|
117
115
|
* });
|
|
118
116
|
*/
|
|
119
|
-
createEnv(...args:
|
|
117
|
+
createEnv(...args: any[]): Promise<DefaultEnvironmentApi>;
|
|
120
118
|
/**
|
|
121
119
|
* Creates a test environment.
|
|
122
120
|
*
|
|
@@ -124,7 +122,7 @@ export declare class YeomanTest {
|
|
|
124
122
|
* @param {Object} - Options to be passed to the environment
|
|
125
123
|
* const env = createTestEnv(require('yeoman-environment').createEnv);
|
|
126
124
|
*/
|
|
127
|
-
createTestEnv(envContructor?: (...args:
|
|
125
|
+
createTestEnv(envContructor?: (...args: any[]) => Promise<import("@yeoman/types").BaseEnvironment>, options?: BaseEnvironmentOptions): Promise<import("@yeoman/types").BaseEnvironment>;
|
|
128
126
|
/**
|
|
129
127
|
* Get RunContext type
|
|
130
128
|
* @return {RunContext}
|
|
@@ -134,18 +132,18 @@ export declare class YeomanTest {
|
|
|
134
132
|
* Run the provided Generator
|
|
135
133
|
* @param GeneratorOrNamespace - Generator constructor or namespace
|
|
136
134
|
*/
|
|
137
|
-
run<GeneratorType extends BaseGenerator =
|
|
135
|
+
run<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(GeneratorOrNamespace: string | GeneratorFactory<GeneratorType>, settings?: RunContextSettings, envOptions?: BaseEnvironmentOptions): RunContext<GeneratorType>;
|
|
138
136
|
/**
|
|
139
137
|
* Prepare a run context
|
|
140
138
|
* @param {String|Function} GeneratorOrNamespace - Generator constructor or namespace
|
|
141
139
|
* @return {RunContext}
|
|
142
140
|
*/
|
|
143
|
-
create<GeneratorType extends BaseGenerator =
|
|
141
|
+
create<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(GeneratorOrNamespace: string | GeneratorFactory<GeneratorType>, settings?: RunContextSettings, envOptions?: BaseEnvironmentOptions): RunContext<GeneratorType>;
|
|
144
142
|
/**
|
|
145
143
|
* Prepare temporary dir without generator support.
|
|
146
144
|
* Generator and environment will be undefined.
|
|
147
145
|
*/
|
|
148
|
-
prepareTemporaryDir(settings?: RunContextSettings): BasicRunContext
|
|
146
|
+
prepareTemporaryDir(settings?: RunContextSettings): BasicRunContext<BaseGenerator>;
|
|
149
147
|
}
|
|
150
148
|
declare const defaultHelpers: YeomanTest;
|
|
151
149
|
export default defaultHelpers;
|
package/dist/helpers.js
CHANGED
|
@@ -4,8 +4,6 @@ import { resolve } from 'node:path';
|
|
|
4
4
|
import process from 'node:process';
|
|
5
5
|
import _ from 'lodash';
|
|
6
6
|
import { spy as sinonSpy, stub as sinonStub } from 'sinon';
|
|
7
|
-
import GeneratorImplementation from 'yeoman-generator';
|
|
8
|
-
import Environment from 'yeoman-environment';
|
|
9
7
|
import { DummyPrompt, TestAdapter } from './adapter.js';
|
|
10
8
|
import RunContext, { BasicRunContext } from './run-context.js';
|
|
11
9
|
import testContext from './test-context.js';
|
|
@@ -95,7 +93,7 @@ export class YeomanTest {
|
|
|
95
93
|
*/
|
|
96
94
|
restorePrompt(envOrGenerator) {
|
|
97
95
|
const environment = envOrGenerator.env ?? envOrGenerator;
|
|
98
|
-
environment.adapter.
|
|
96
|
+
environment.adapter.close();
|
|
99
97
|
}
|
|
100
98
|
/**
|
|
101
99
|
* @deprecated
|
|
@@ -109,7 +107,11 @@ export class YeomanTest {
|
|
|
109
107
|
/**
|
|
110
108
|
* Create a mocked generator
|
|
111
109
|
*/
|
|
112
|
-
createMockedGenerator(GeneratorClass
|
|
110
|
+
async createMockedGenerator(GeneratorClass) {
|
|
111
|
+
if (!GeneratorClass) {
|
|
112
|
+
const GeneratorImplementation = await import('yeoman-generator');
|
|
113
|
+
GeneratorClass = (GeneratorImplementation.default ?? GeneratorImplementation);
|
|
114
|
+
}
|
|
113
115
|
class MockedGenerator extends GeneratorClass {
|
|
114
116
|
}
|
|
115
117
|
const generator = sinonSpy(MockedGenerator);
|
|
@@ -123,12 +125,17 @@ export class YeomanTest {
|
|
|
123
125
|
/**
|
|
124
126
|
* Create a simple, dummy generator
|
|
125
127
|
*/
|
|
126
|
-
createDummyGenerator(Generator
|
|
128
|
+
async createDummyGenerator(Generator, contents = {
|
|
127
129
|
test() {
|
|
128
130
|
this.shouldRun = true;
|
|
129
131
|
},
|
|
130
132
|
}) {
|
|
131
|
-
|
|
133
|
+
if (!Generator) {
|
|
134
|
+
const GeneratorImplementation = await import('yeoman-generator');
|
|
135
|
+
Generator = (GeneratorImplementation.default ?? GeneratorImplementation);
|
|
136
|
+
}
|
|
137
|
+
const GeneratorConstructor = Generator;
|
|
138
|
+
class DummyGenerator extends GeneratorConstructor {
|
|
132
139
|
constructor(...args) {
|
|
133
140
|
const optIndex = Array.isArray(args[0]) ? 1 : 0;
|
|
134
141
|
args[optIndex] = args[optIndex] ?? {};
|
|
@@ -207,8 +214,10 @@ export class YeomanTest {
|
|
|
207
214
|
* createEnv.restore();
|
|
208
215
|
* });
|
|
209
216
|
*/
|
|
210
|
-
createEnv(...args) {
|
|
211
|
-
|
|
217
|
+
async createEnv(...args) {
|
|
218
|
+
const dynamicEnv = await import('yeoman-environment');
|
|
219
|
+
const createEnv = dynamicEnv.createEnv ?? dynamicEnv.default.createEnv;
|
|
220
|
+
return createEnv(...args);
|
|
212
221
|
}
|
|
213
222
|
/**
|
|
214
223
|
* Creates a test environment.
|
|
@@ -217,7 +226,7 @@ export class YeomanTest {
|
|
|
217
226
|
* @param {Object} - Options to be passed to the environment
|
|
218
227
|
* const env = createTestEnv(require('yeoman-environment').createEnv);
|
|
219
228
|
*/
|
|
220
|
-
createTestEnv(envContructor = this.createEnv, options = { localConfigOnly: true }) {
|
|
229
|
+
async createTestEnv(envContructor = this.createEnv, options = { localConfigOnly: true }) {
|
|
221
230
|
let envOptions = cloneDeep(this.environmentOptions ?? {});
|
|
222
231
|
if (typeof options === 'boolean') {
|
|
223
232
|
envOptions = {
|
package/dist/run-context.d.ts
CHANGED
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
import { EventEmitter } from 'node:events';
|
|
3
3
|
import { type Store } from 'mem-fs';
|
|
4
4
|
import type { BaseEnvironmentOptions, BaseGenerator, GetGeneratorConstructor, GetGeneratorOptions, PromptAnswers } from '@yeoman/types';
|
|
5
|
-
import type Environment from 'yeoman-environment';
|
|
6
5
|
import { type LookupOptions } from 'yeoman-environment';
|
|
7
|
-
import type
|
|
8
|
-
import type { StorageRecord } from 'yeoman-generator';
|
|
9
|
-
import { type MemFsEditor, type VinylMemFsEditorFile } from 'mem-fs-editor';
|
|
6
|
+
import { type MemFsEditorFile, type MemFsEditor } from 'mem-fs-editor';
|
|
10
7
|
import RunResult, { type RunResultOptions } from './run-result.js';
|
|
11
8
|
import { type Dependency, type YeomanTest, type GeneratorFactory } from './helpers.js';
|
|
12
9
|
import { type DummyPromptOptions } from './adapter.js';
|
|
10
|
+
import type { DefaultGeneratorApi, DefaultEnvironmentApi } from './type-helpers.js';
|
|
13
11
|
/**
|
|
14
12
|
* Provides settings for creating a `RunContext`.
|
|
15
13
|
*/
|
|
@@ -23,7 +21,7 @@ export type RunContextSettings = {
|
|
|
23
21
|
oldCwd?: string;
|
|
24
22
|
forwardCwd?: boolean;
|
|
25
23
|
autoCleanup?: boolean;
|
|
26
|
-
memFs?: Store
|
|
24
|
+
memFs?: Store<MemFsEditorFile>;
|
|
27
25
|
/**
|
|
28
26
|
* File path to the generator (only used if Generator is a constructor)
|
|
29
27
|
*/
|
|
@@ -35,20 +33,20 @@ export type RunContextSettings = {
|
|
|
35
33
|
namespace?: string;
|
|
36
34
|
};
|
|
37
35
|
type PromiseRunResult<GeneratorType extends BaseGenerator> = Promise<RunResult<GeneratorType>>;
|
|
38
|
-
type MockedGeneratorFactory
|
|
36
|
+
type MockedGeneratorFactory<GenParameter extends BaseGenerator = DefaultGeneratorApi> = (GeneratorClass?: GetGeneratorConstructor<GenParameter>) => Promise<GenParameter>;
|
|
39
37
|
type EnvOptions = BaseEnvironmentOptions & {
|
|
40
38
|
createEnv?: any;
|
|
41
39
|
};
|
|
42
|
-
export declare class RunContextBase<GeneratorType extends BaseGenerator =
|
|
40
|
+
export declare class RunContextBase<GeneratorType extends BaseGenerator = DefaultGeneratorApi> extends EventEmitter {
|
|
43
41
|
readonly mockedGenerators: Record<string, BaseGenerator>;
|
|
44
|
-
env:
|
|
42
|
+
env: DefaultEnvironmentApi;
|
|
45
43
|
generator: GeneratorType;
|
|
46
44
|
readonly settings: RunContextSettings;
|
|
47
45
|
readonly envOptions: EnvOptions;
|
|
48
46
|
completed: boolean;
|
|
49
47
|
targetDirectory?: string;
|
|
50
48
|
editor: MemFsEditor;
|
|
51
|
-
memFs: Store<
|
|
49
|
+
memFs: Store<MemFsEditorFile>;
|
|
52
50
|
mockedGeneratorFactory: MockedGeneratorFactory;
|
|
53
51
|
protected environmentPromise?: PromiseRunResult<GeneratorType>;
|
|
54
52
|
private args;
|
|
@@ -68,6 +66,7 @@ export declare class RunContextBase<GeneratorType extends BaseGenerator = Genera
|
|
|
68
66
|
private built;
|
|
69
67
|
private ran;
|
|
70
68
|
private errored;
|
|
69
|
+
private readonly beforePrepareCallbacks;
|
|
71
70
|
/**
|
|
72
71
|
* This class provide a run context object to façade the complexity involved in setting
|
|
73
72
|
* up a generator for testing
|
|
@@ -221,7 +220,7 @@ export declare class RunContextBase<GeneratorType extends BaseGenerator = Genera
|
|
|
221
220
|
* Mock the local configuration with the provided config
|
|
222
221
|
* @param localConfig - should look just like if called config.getAll()
|
|
223
222
|
*/
|
|
224
|
-
withLocalConfig(localConfig:
|
|
223
|
+
withLocalConfig(localConfig: any): this;
|
|
225
224
|
/**
|
|
226
225
|
* Don't reset mem-fs state cleared to aggregate snapshots from multiple runs.
|
|
227
226
|
*/
|
|
@@ -262,12 +261,18 @@ export declare class RunContextBase<GeneratorType extends BaseGenerator = Genera
|
|
|
262
261
|
* @returns
|
|
263
262
|
*/
|
|
264
263
|
onGenerator(callback: (this: this, generator: GeneratorType) => any): this;
|
|
264
|
+
/**
|
|
265
|
+
* Execute callback prefore parepare
|
|
266
|
+
* @param callback
|
|
267
|
+
* @returns
|
|
268
|
+
*/
|
|
269
|
+
onBeforePrepare(callback: (this: this) => void | Promise<void>): this;
|
|
265
270
|
/**
|
|
266
271
|
* Execute callback after environment is ready
|
|
267
272
|
* @param callback
|
|
268
273
|
* @returns
|
|
269
274
|
*/
|
|
270
|
-
onEnvironment(callback: (this: this, env:
|
|
275
|
+
onEnvironment(callback: (this: this, env: DefaultEnvironmentApi) => any): this;
|
|
271
276
|
prepare(): Promise<void>;
|
|
272
277
|
protected assertNotBuild(): void;
|
|
273
278
|
/**
|
|
@@ -294,13 +299,13 @@ export declare class RunContextBase<GeneratorType extends BaseGenerator = Genera
|
|
|
294
299
|
*/
|
|
295
300
|
private setDir;
|
|
296
301
|
}
|
|
297
|
-
export default class RunContext<GeneratorType extends BaseGenerator =
|
|
302
|
+
export default class RunContext<GeneratorType extends BaseGenerator = BaseGenerator> extends RunContextBase<GeneratorType> implements Promise<RunResult<GeneratorType>> {
|
|
298
303
|
then<TResult1 = RunResult<GeneratorType>, TResult2 = never>(onfulfilled?: ((value: RunResult<GeneratorType>) => TResult1 | PromiseLike<TResult1>) | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined): Promise<TResult1 | TResult2>;
|
|
299
304
|
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined): Promise<RunResult<GeneratorType> | TResult>;
|
|
300
305
|
finally(onfinally?: (() => void) | undefined): Promise<RunResult<GeneratorType>>;
|
|
301
306
|
get [Symbol.toStringTag](): string;
|
|
302
307
|
}
|
|
303
|
-
export declare class BasicRunContext extends RunContext {
|
|
308
|
+
export declare class BasicRunContext<GeneratorType extends BaseGenerator = BaseGenerator> extends RunContext<GeneratorType> {
|
|
304
309
|
run(): PromiseRunResult<any>;
|
|
305
310
|
}
|
|
306
311
|
export {};
|
package/dist/run-context.js
CHANGED
|
@@ -43,6 +43,7 @@ export class RunContextBase extends EventEmitter {
|
|
|
43
43
|
built = false;
|
|
44
44
|
ran = false;
|
|
45
45
|
errored = false;
|
|
46
|
+
beforePrepareCallbacks = [];
|
|
46
47
|
/**
|
|
47
48
|
* This class provide a run context object to façade the complexity involved in setting
|
|
48
49
|
* up a generator for testing
|
|
@@ -297,16 +298,14 @@ export class RunContextBase extends EventEmitter {
|
|
|
297
298
|
for (const dependency of dependencies) {
|
|
298
299
|
if (Array.isArray(dependency)) {
|
|
299
300
|
if (typeof dependency[0] === 'string') {
|
|
300
|
-
|
|
301
|
-
await env.register(...dependency);
|
|
301
|
+
env.register(...dependency);
|
|
302
302
|
}
|
|
303
303
|
else {
|
|
304
304
|
env.registerStub(...dependency);
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
else {
|
|
308
|
-
|
|
309
|
-
await env.register(dependency);
|
|
308
|
+
env.register(dependency);
|
|
310
309
|
}
|
|
311
310
|
}
|
|
312
311
|
});
|
|
@@ -333,10 +332,13 @@ export class RunContextBase extends EventEmitter {
|
|
|
333
332
|
*/
|
|
334
333
|
withMockedGenerators(namespaces) {
|
|
335
334
|
assert(Array.isArray(namespaces), 'namespaces should be an array');
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
335
|
+
return this.onBeforePrepare(async () => {
|
|
336
|
+
const MockedGenerator = await this.mockedGeneratorFactory();
|
|
337
|
+
const dependencies = namespaces.map(namespace => [MockedGenerator, namespace]);
|
|
338
|
+
const entries = dependencies.map(([generator, namespace]) => [namespace, generator]);
|
|
339
|
+
Object.assign(this.mockedGenerators, Object.fromEntries(entries));
|
|
340
|
+
this.withGenerators(dependencies);
|
|
341
|
+
});
|
|
340
342
|
}
|
|
341
343
|
/**
|
|
342
344
|
* Mock the local configuration with the provided config
|
|
@@ -417,6 +419,16 @@ export class RunContextBase extends EventEmitter {
|
|
|
417
419
|
this.onGeneratorCallbacks.push(callback);
|
|
418
420
|
return this;
|
|
419
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Execute callback prefore parepare
|
|
424
|
+
* @param callback
|
|
425
|
+
* @returns
|
|
426
|
+
*/
|
|
427
|
+
onBeforePrepare(callback) {
|
|
428
|
+
this.assertNotBuild();
|
|
429
|
+
this.beforePrepareCallbacks.push(callback);
|
|
430
|
+
return this;
|
|
431
|
+
}
|
|
420
432
|
/**
|
|
421
433
|
* Execute callback after environment is ready
|
|
422
434
|
* @param callback
|
|
@@ -428,6 +440,12 @@ export class RunContextBase extends EventEmitter {
|
|
|
428
440
|
return this;
|
|
429
441
|
}
|
|
430
442
|
async prepare() {
|
|
443
|
+
if (this.beforePrepareCallbacks.length > 0) {
|
|
444
|
+
for (const cb of this.beforePrepareCallbacks) {
|
|
445
|
+
// eslint-disable-next-line no-await-in-loop
|
|
446
|
+
await cb.call(this);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
431
449
|
this.assertNotBuild();
|
|
432
450
|
this.built = true;
|
|
433
451
|
if (!this.targetDirectory && this.settings.tmpdir !== false) {
|
package/dist/run-result.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Store } from 'mem-fs';
|
|
2
|
-
import { type MemFsEditor } from 'mem-fs-editor';
|
|
3
|
-
import type {
|
|
4
|
-
import type GeneratorImplementation from 'yeoman-generator';
|
|
2
|
+
import { type MemFsEditorFile, type MemFsEditor } from 'mem-fs-editor';
|
|
3
|
+
import type { BaseEnvironmentOptions, BaseGenerator } from '@yeoman/types';
|
|
5
4
|
import { type RunContextSettings } from './run-context.js';
|
|
6
5
|
import { type GeneratorFactory, type YeomanTest } from './helpers.js';
|
|
6
|
+
import type { DefaultEnvironmentApi, DefaultGeneratorApi } from './type-helpers.js';
|
|
7
7
|
/**
|
|
8
8
|
* Provides options for `RunResult`s.
|
|
9
9
|
*/
|
|
@@ -12,7 +12,7 @@ export type RunResultOptions<GeneratorType extends BaseGenerator> = {
|
|
|
12
12
|
/**
|
|
13
13
|
* The environment of the generator.
|
|
14
14
|
*/
|
|
15
|
-
env:
|
|
15
|
+
env: DefaultEnvironmentApi;
|
|
16
16
|
envOptions: BaseEnvironmentOptions;
|
|
17
17
|
/**
|
|
18
18
|
* The working directory after running the generator.
|
|
@@ -25,7 +25,7 @@ export type RunResultOptions<GeneratorType extends BaseGenerator> = {
|
|
|
25
25
|
/**
|
|
26
26
|
* The file-system of the generator.
|
|
27
27
|
*/
|
|
28
|
-
memFs: Store
|
|
28
|
+
memFs: Store<MemFsEditorFile>;
|
|
29
29
|
fs?: MemFsEditor;
|
|
30
30
|
/**
|
|
31
31
|
* The mocked generators of the context.
|
|
@@ -37,12 +37,12 @@ export type RunResultOptions<GeneratorType extends BaseGenerator> = {
|
|
|
37
37
|
/**
|
|
38
38
|
* This class provides utilities for testing generated content.
|
|
39
39
|
*/
|
|
40
|
-
export default class RunResult<GeneratorType extends BaseGenerator =
|
|
40
|
+
export default class RunResult<GeneratorType extends BaseGenerator = BaseGenerator> {
|
|
41
41
|
env: any;
|
|
42
42
|
generator: GeneratorType;
|
|
43
43
|
cwd: string;
|
|
44
44
|
oldCwd: string;
|
|
45
|
-
memFs: Store
|
|
45
|
+
memFs: Store<MemFsEditorFile>;
|
|
46
46
|
fs: MemFsEditor;
|
|
47
47
|
mockedGenerators: any;
|
|
48
48
|
options: RunResultOptions<GeneratorType>;
|
|
@@ -51,7 +51,7 @@ export default class RunResult<GeneratorType extends BaseGenerator = GeneratorIm
|
|
|
51
51
|
* Create another RunContext reusing the settings.
|
|
52
52
|
* See helpers.create api
|
|
53
53
|
*/
|
|
54
|
-
create<GeneratorType extends BaseGenerator =
|
|
54
|
+
create<GeneratorType extends BaseGenerator = DefaultGeneratorApi>(GeneratorOrNamespace: string | GeneratorFactory<GeneratorType>, settings?: RunContextSettings, envOptions?: BaseEnvironmentOptions): import("./run-context.js").default<GeneratorType>;
|
|
55
55
|
/**
|
|
56
56
|
* Return an object with fs changes.
|
|
57
57
|
* @param {Function} filter - parameter forwarded to mem-fs-editor#dump
|
package/dist/run-result.js
CHANGED
package/dist/test-context.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { BaseGenerator } from '@yeoman/types';
|
|
2
1
|
import type RunContext from './run-context.js';
|
|
3
2
|
import type RunResult from './run-result.js';
|
|
4
3
|
declare class TestContext {
|
|
5
|
-
runResult?: RunResult
|
|
4
|
+
runResult?: RunResult;
|
|
6
5
|
private runContext?;
|
|
7
6
|
startNewContext(runContext?: RunContext<any>): void;
|
|
8
7
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type BaseGenerator, type BaseEnvironment } from '@yeoman/types';
|
|
2
|
+
import type GeneratorImplementation from 'yeoman-generator';
|
|
3
|
+
import type EnvironmentImplementation from 'yeoman-environment';
|
|
4
|
+
import type { IfAny } from 'type-fest';
|
|
5
|
+
export type DefaultGeneratorApi = IfAny<typeof GeneratorImplementation, BaseGenerator, typeof GeneratorImplementation extends BaseGenerator ? typeof GeneratorImplementation : BaseGenerator>;
|
|
6
|
+
export type DefaultEnvironmentApi = IfAny<typeof EnvironmentImplementation, BaseEnvironment, typeof EnvironmentImplementation extends BaseEnvironment ? typeof EnvironmentImplementation : BaseEnvironment>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,31 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yeoman-test",
|
|
3
|
-
"version": "8.0.0-
|
|
3
|
+
"version": "8.0.0-beta.1",
|
|
4
4
|
"description": "Test utilities for Yeoman generators",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"yeoman",
|
|
7
|
+
"unit test"
|
|
8
|
+
],
|
|
5
9
|
"homepage": "http://yeoman.io/authoring/testing.html",
|
|
10
|
+
"repository": "yeoman/yeoman-test",
|
|
11
|
+
"license": "MIT",
|
|
6
12
|
"author": "The Yeoman Team",
|
|
7
13
|
"type": "module",
|
|
8
|
-
"files": [
|
|
9
|
-
"dist"
|
|
10
|
-
],
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
14
|
"exports": {
|
|
13
15
|
"types": "./dist/index.d.ts",
|
|
14
16
|
"import": "./dist/index.js"
|
|
15
17
|
},
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
19
21
|
],
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"coverage": "nyc report --reporter=text-lcov | coveralls",
|
|
25
|
+
"doc": "npm run doc:generate && npm run doc:fix && npm run doc:prettier",
|
|
26
|
+
"doc:fix": "sed -i -e 's:^[[:space:]]*<!--[[:space:]]*$::g' -e 's:^[[:space:]]*-->[[:space:]]*$::g' $npm_package_config_doc_path/global.html",
|
|
27
|
+
"doc:generate": "jsdoc -c jsdoc.json -d $npm_package_config_doc_path",
|
|
28
|
+
"doc:prettier": "prettier $npm_package_config_doc_path --write --ignore-path .prettierignore-doc",
|
|
29
|
+
"precommit": "lint-staged",
|
|
30
|
+
"prepare": "npm run build",
|
|
31
|
+
"pretest": "xo",
|
|
32
|
+
"test": "c8 esmocha"
|
|
24
33
|
},
|
|
25
34
|
"config": {
|
|
26
35
|
"doc_path": "../yeoman-test-doc"
|
|
27
36
|
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"inquirer": "^9.2.2",
|
|
39
|
+
"lodash": "^4.17.21",
|
|
40
|
+
"mem-fs": "^3.0.0",
|
|
41
|
+
"mem-fs-editor": "^10.0.2",
|
|
42
|
+
"sinon": "^14.0.2",
|
|
43
|
+
"temp-dir": "^3.0.0",
|
|
44
|
+
"type-fest": "^3.10.0"
|
|
45
|
+
},
|
|
28
46
|
"devDependencies": {
|
|
47
|
+
"@types/inquirer": "^9.0.3",
|
|
29
48
|
"@types/node": "^16.18.19",
|
|
30
49
|
"@types/sinon": "^10.0.13",
|
|
31
50
|
"c8": "^7.13.0",
|
|
@@ -39,47 +58,23 @@
|
|
|
39
58
|
"tui-jsdoc-template": "^1.2.2",
|
|
40
59
|
"typescript": "^5.0.4",
|
|
41
60
|
"xo": "^0.54.2",
|
|
42
|
-
"yeoman-environment": "^3.16.1"
|
|
43
|
-
|
|
44
|
-
"dependencies": {
|
|
45
|
-
"@types/inquirer": "^9.0.3",
|
|
46
|
-
"@yeoman/types": "^0.1.2",
|
|
47
|
-
"inquirer": "^9.2.2",
|
|
48
|
-
"lodash": "^4.17.21",
|
|
49
|
-
"mem-fs": "^3.0.0",
|
|
50
|
-
"mem-fs-editor": "^10.0.2",
|
|
51
|
-
"sinon": "^14.0.2",
|
|
52
|
-
"temp-dir": "^3.0.0",
|
|
53
|
-
"yeoman-generator": "^6.0.0-alpha.3"
|
|
61
|
+
"yeoman-environment": "^3.16.1",
|
|
62
|
+
"yeoman-generator": "^6.0.0-beta.1"
|
|
54
63
|
},
|
|
55
64
|
"peerDependencies": {
|
|
56
|
-
"yeoman
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"test": "c8 esmocha",
|
|
60
|
-
"build": "tsc",
|
|
61
|
-
"prepare": "npm run build",
|
|
62
|
-
"pretest": "xo",
|
|
63
|
-
"precommit": "lint-staged",
|
|
64
|
-
"doc": "npm run doc:generate && npm run doc:fix && npm run doc:prettier",
|
|
65
|
-
"doc:generate": "jsdoc -c jsdoc.json -d $npm_package_config_doc_path",
|
|
66
|
-
"doc:prettier": "prettier $npm_package_config_doc_path --write --ignore-path .prettierignore-doc",
|
|
67
|
-
"doc:fix": "sed -i -e 's:^[[:space:]]*<!--[[:space:]]*$::g' -e 's:^[[:space:]]*-->[[:space:]]*$::g' $npm_package_config_doc_path/global.html",
|
|
68
|
-
"coverage": "nyc report --reporter=text-lcov | coveralls"
|
|
65
|
+
"@yeoman/types": "^0.3.0",
|
|
66
|
+
"yeoman-environment": "^3.13.0 || ^4.0.0-alpha.0",
|
|
67
|
+
"yeoman-generator": "^5.8.0 || ^6.0.0-beta.1"
|
|
69
68
|
},
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"yeoman-environment": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"yeoman-generator": {
|
|
74
|
+
"optional": true
|
|
73
75
|
}
|
|
74
76
|
},
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"xo --fix",
|
|
78
|
-
"git add"
|
|
79
|
-
],
|
|
80
|
-
"*.json": [
|
|
81
|
-
"prettier --write",
|
|
82
|
-
"git add"
|
|
83
|
-
]
|
|
77
|
+
"engines": {
|
|
78
|
+
"node": "^16.17.0 || >=18.12.0"
|
|
84
79
|
}
|
|
85
80
|
}
|