11import { existsSync , mkdirSync , rmSync } from 'node:fs' ;
2+ import { createRequire } from 'node:module' ;
23import { resolve } from 'node:path' ;
34import process from 'node:process' ;
45import { mock } from 'node:test' ;
@@ -18,13 +19,15 @@ import RunContext, { BasicRunContext, type RunContextSettings } from './run-cont
1819import testContext from './test-context.js' ;
1920import { createEnv as createEnvironment } from './default-environment.js' ;
2021
21- let GeneratorImplementation ;
22- try {
23- const GeneratorImport = await import ( 'yeoman-generator' ) ;
24- GeneratorImplementation = GeneratorImport . default ?? GeneratorImport ;
25- } catch {
26- // Ignore error
27- }
22+ let dummyParentClass ;
23+ export const setDefaultDummyParentClass = parentClass => {
24+ dummyParentClass = parentClass ;
25+ } ;
26+
27+ const getDummyParentClass = ( ) => {
28+ dummyParentClass ??= createRequire ( import . meta. url ) ( 'yeoman-generator' ) . default ;
29+ return dummyParentClass ;
30+ } ;
2831
2932export type CreateEnv = ( options : BaseEnvironmentOptions ) => Promise < BaseEnvironment > ;
3033
@@ -145,7 +148,7 @@ export class YeomanTest {
145148 /**
146149 * Create a mocked generator
147150 */
148- createMockedGenerator ( GeneratorClass = GeneratorImplementation ) : ReturnType < typeof mock . fn > {
151+ createMockedGenerator ( GeneratorClass = getDummyParentClass ( ) ) : ReturnType < typeof mock . fn > {
149152 class MockedGenerator extends GeneratorClass { }
150153 const generator = mock . fn ( MockedGenerator ) ;
151154 for ( const methodName of [ 'run' , 'queueTasks' , 'runWithOptions' , 'queueOwnTasks' ] ) {
@@ -161,7 +164,7 @@ export class YeomanTest {
161164 * Create a simple, dummy generator
162165 */
163166 createDummyGenerator < GenParameter extends BaseGenerator = DefaultGeneratorApi > (
164- Generator : GetGeneratorConstructor < GenParameter > = GeneratorImplementation ,
167+ Generator : GetGeneratorConstructor < GenParameter > = getDummyParentClass ( ) ,
165168 contents : Record < string , ( ...arguments_ : any [ ] ) => void > = {
166169 test ( this : any ) {
167170 this . shouldRun = true ;
0 commit comments