feat(core): Implement Protocol V2 with enhanced settings and lifecycle hooks
This commit is contained in:
		| @@ -161,9 +161,45 @@ export class TsTest { | ||||
|       process.env.TSTEST_FILTER_TAGS = this.filterTags.join(','); | ||||
|     } | ||||
|  | ||||
|     const execResultStreaming = await this.smartshellInstance.execStreamingSilent( | ||||
|       `tsrun ${fileNameArg}${tsrunOptions}` | ||||
|     ); | ||||
|     // Check for 00init.ts file in test directory | ||||
|     const testDir = plugins.path.dirname(fileNameArg); | ||||
|     const initFile = plugins.path.join(testDir, '00init.ts'); | ||||
|     let runCommand = `tsrun ${fileNameArg}${tsrunOptions}`; | ||||
|      | ||||
|     const initFileExists = await plugins.smartfile.fs.fileExists(initFile); | ||||
|      | ||||
|     // If 00init.ts exists, run it first | ||||
|     if (initFileExists) { | ||||
|       // Create a temporary loader file that imports both 00init.ts and the test file | ||||
|       const absoluteInitFile = plugins.path.resolve(initFile); | ||||
|       const absoluteTestFile = plugins.path.resolve(fileNameArg); | ||||
|       const loaderContent = ` | ||||
| import '${absoluteInitFile.replace(/\\/g, '/')}'; | ||||
| import '${absoluteTestFile.replace(/\\/g, '/')}'; | ||||
| `; | ||||
|       const loaderPath = plugins.path.join(testDir, `.loader_${plugins.path.basename(fileNameArg)}`); | ||||
|       await plugins.smartfile.memory.toFs(loaderContent, loaderPath); | ||||
|       runCommand = `tsrun ${loaderPath}${tsrunOptions}`; | ||||
|     } | ||||
|  | ||||
|     const execResultStreaming = await this.smartshellInstance.execStreamingSilent(runCommand); | ||||
|      | ||||
|     // If we created a loader file, clean it up after test execution | ||||
|     if (initFileExists) { | ||||
|       const loaderPath = plugins.path.join(testDir, `.loader_${plugins.path.basename(fileNameArg)}`); | ||||
|       const cleanup = () => { | ||||
|         try { | ||||
|           if (plugins.smartfile.fs.fileExistsSync(loaderPath)) { | ||||
|             plugins.smartfile.fs.removeSync(loaderPath); | ||||
|           } | ||||
|         } catch (e) { | ||||
|           // Ignore cleanup errors | ||||
|         } | ||||
|       }; | ||||
|        | ||||
|       execResultStreaming.childProcess.on('exit', cleanup); | ||||
|       execResultStreaming.childProcess.on('error', cleanup); | ||||
|     } | ||||
|      | ||||
|     // Handle timeout if specified | ||||
|     if (this.timeoutSeconds !== null) { | ||||
| @@ -382,10 +418,10 @@ export class TsTest { | ||||
|     try { | ||||
|       // Delete 00err and 00diff directories if they exist | ||||
|       if (await plugins.smartfile.fs.isDirectory(errDir)) { | ||||
|         await plugins.smartfile.fs.remove(errDir); | ||||
|         plugins.smartfile.fs.removeSync(errDir); | ||||
|       } | ||||
|       if (await plugins.smartfile.fs.isDirectory(diffDir)) { | ||||
|         await plugins.smartfile.fs.remove(diffDir); | ||||
|         plugins.smartfile.fs.removeSync(diffDir); | ||||
|       } | ||||
|        | ||||
|       // Get all .log files in log directory (not in subdirectories) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user