diff --git a/compiler/main.js b/compiler/main.js index aa25d1a8b5df60a8ad647e0e21c7d24ab7d2965a..a6ecac25d28f78ab1817f57d88c5a5cdffd67e5a 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -34,7 +34,8 @@ const staticPreviewPage = process.env.aceStaticPreview; const abilityConfig = { abilityType: process.env.abilityType || 'page', abilityEntryFile: null, - projectAbilityPath: [] + projectAbilityPath: [], + testRunnerFile: [] }; const projectConfig = {}; const resources = { @@ -61,10 +62,13 @@ function loadEntryObj(projectConfig) { initProjectConfig(projectConfig); if (process.env.aceManifestPath) { setEntryFile(projectConfig); + setFaTestRunnerFile(projectConfig); } if (process.env.aceModuleJsonPath) { setAbilityPages(projectConfig) + setStageTestRunnerFile(projectConfig); } + if(staticPreviewPage) { projectConfig.entryObj['./' + staticPreviewPage] = projectConfig.projectPath + path.sep + staticPreviewPage + '.ets?entry'; @@ -147,6 +151,38 @@ function setAbilityPages(projectConfig) { } } +function setFaTestRunnerFile(projectConfig) { + const index =projectConfig.projectPath.split(path.sep).join('/').lastIndexOf('\/'); + const testRunnerPath = path.resolve(projectConfig.projectPath.substring(0,index + 1), "TestRunner"); + if (fs.existsSync(testRunnerPath)) { + const testRunnerFiles = []; + readFile(testRunnerPath, testRunnerFiles); + testRunnerFiles.forEach((item) => { + if (/\.(ts|js)$/.test(item)) { + const relativePath = path.relative(testRunnerPath, item).replace(/\.(ts|js)$/, ''); + projectConfig.entryObj["../TestRunner/" + relativePath] = item; + abilityConfig.testRunnerFile.push(item); + } + }) + } +} + +function setStageTestRunnerFile(projectConfig) { + const index =projectConfig.projectPath.split(path.sep).join('/').lastIndexOf('\/'); + const testRunnerPath = path.resolve(projectConfig.projectPath, "TestRunner"); + if (fs.existsSync(testRunnerPath)) { + const testRunnerFiles = []; + readFile(testRunnerPath, testRunnerFiles); + testRunnerFiles.forEach((item) => { + if (/\.(ts|js)$/.test(item)) { + const relativePath = path.relative(testRunnerPath, item).replace(/\.(ts|js)$/, ''); + projectConfig.entryObj["./TestRunner/" + relativePath] = item; + abilityConfig.testRunnerFile.push(item); + } + }) + } +} + function setAbilityFile(projectConfig, abilityPages) { abilityPages.forEach(abilityPath => { if (abilityPath && fs.existsSync(path.resolve(projectConfig.projectPath, '../', abilityPath))) { diff --git a/compiler/src/result_process.ts b/compiler/src/result_process.ts index fb0269ad4b64546e0c524cee5e380250a612b012..8e80ed3f6cb6e46c44b3ce4e41bfd37b7e15ba88 100644 --- a/compiler/src/result_process.ts +++ b/compiler/src/result_process.ts @@ -59,7 +59,7 @@ module.exports = function resultProcess(source: string, map: any): void { resetLog(); } } - if ([abilityConfig.abilityEntryFile].concat(abilityConfig.projectAbilityPath).includes(this.resourcePath)) { + if ([abilityConfig.abilityEntryFile].concat(abilityConfig.projectAbilityPath).concat(abilityConfig.testRunnerFile).includes(this.resourcePath)) { source = source.replace(/exports\.default/, 'globalThis.exports.default'); }