1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use rollupObject file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 17import { expect } from 'chai'; 18import mocha from 'mocha'; 19import path from 'path'; 20import sinon from 'sinon'; 21import fs from 'fs'; 22import childProcess from 'child_process'; 23import cluster from 'cluster'; 24 25import { toUnixPath } from '../../../lib/utils'; 26import { SourceMapGenerator } from '../../../lib/fast_build/ark_compiler/generate_sourcemap'; 27import { shouldETSOrTSFileTransformToJS } from '../../../lib/fast_build/ark_compiler/utils'; 28import { 29 RELEASE, 30 DEBUG, 31 MODULES_ABC, 32 EXTNAME_TS, 33 EXTNAME_JS, 34 EXTNAME_ETS, 35 OH_MODULES, 36 GEN_ABC_PLUGIN_NAME 37} from '../../../lib/fast_build/ark_compiler/common/ark_define'; 38import RollUpPluginMock from '../mock/rollup_mock/rollup_plugin_mock'; 39import ModuleModeMock from '../mock/class_mock/module_mode_mock'; 40import { ModuleHotreloadMode } from '../../../lib/fast_build/ark_compiler/module/module_hotreload_mode'; 41import { ModuleMode } from '../../../lib/fast_build/ark_compiler/module/module_mode'; 42import { 43 ENTRYABILITY_TS_PATH_DEFAULT, 44 ENTRYABILITY_JS_PATH_DEFAULT, 45 INDEX_ETS_PATH_DEFAULT, 46 INDEX_JS_PATH_DEFAULT, 47 ENTRYABILITY_TS_RECORDNAME, 48 ENTRYABILITY_JS_RECORDNAME, 49 INDEX_ETS_RECORDNAME, 50 ENTRYABILITY_TS_NORMALIZED_RECORDNAME, 51 ENTRYABILITY_JS_NORMALIZED_RECORDNAME, 52 INDEX_ETS_NORMALIZED_RECORDNAME, 53 PKG_MODULES, 54 ENTRY_MODULE_NAME_DEFAULT, 55 TEST, 56 NEWFILE, 57 ENTRY_MODULE_VERSION_DEFAULT 58} from '../mock/rollup_mock/common'; 59import projectConfig from '../utils/processProjectConfig'; 60import { 61 EXPECT_SOURCEMAP_JSON, 62 PKG_MODULES_OHPM_HYPIUM, 63 ES2ABC_PATH, 64 DEBUG_INFO, 65 BUILD_NPM, 66 BUILD_INFO, 67 PREVIEW_DEBUG_INFO, 68 PREVIEW_DEBUG_NPM, 69 DEFAULT_ETS, 70 PREVIEW_MODULES_ABC, 71 BUILD_CACHE, 72 PREVIEW_DEBUG_CACHE, 73 TEST_TS, 74 ENTRY_LIST, 75 OUTPUT, 76 FILE_THREADS, 77 MERGE_ABC, 78 CACHE_FILE, 79 TARGET_API_VERSION 80} from '../mock/rollup_mock/path_config'; 81import { 82 scanFiles, 83 sleep, 84 cpus 85} from "../utils/utils"; 86import { AOT_FULL } from '../../../lib/pre_define'; 87import { 88 ArkObfuscator 89} from 'arkguard'; 90 91function checkGenerateEs2AbcCmdExpect(cmdArgs: Array<object>, compatibleSdkVersion: string, byteCodeHar: boolean): void { 92 const fileThreads: number = cpus(); 93 94 expect(cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 95 if (!byteCodeHar) { 96 expect(cmdArgs[1] === OUTPUT).to.be.true; 97 expect(cmdArgs[2] === FILE_THREADS).to.be.true; 98 expect(cmdArgs[3] === `\"${fileThreads}\"`).to.be.true; 99 expect(cmdArgs[4] === MERGE_ABC).to.be.true; 100 expect(cmdArgs[5].indexOf(compatibleSdkVersion) > 0).to.be.true; 101 } 102 expect(cmdArgs[1] === ENTRY_LIST).to.be.true; 103 expect(cmdArgs[2] === OUTPUT).to.be.true; 104 expect(cmdArgs[3] === FILE_THREADS).to.be.true; 105 expect(cmdArgs[4] === `\"${fileThreads}\"`).to.be.true; 106 expect(cmdArgs[5] === MERGE_ABC).to.be.true; 107 expect(cmdArgs[6].indexOf(compatibleSdkVersion) > 0).to.be.true; 108} 109 110mocha.describe('test module_mode file api', function () { 111 mocha.before(function () { 112 this.rollup = new RollUpPluginMock(); 113 }); 114 115 mocha.after(() => { 116 delete this.rollup; 117 }); 118 119 mocha.it('1-1: test collectModuleFileList under build debug', function () { 120 this.rollup.build(); 121 SourceMapGenerator.initInstance(this.rollup); 122 const moduleMode = new ModuleModeMock(this.rollup); 123 const fileList = this.rollup.getModuleIds(); 124 for (const filePath of fileList) { 125 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 126 const moduleInfo = this.rollup.getModuleInfo(filePath); 127 moduleInfo.setIsNodeEntryFile(true); 128 moduleInfo.setIsLocalDependency(false); 129 } 130 } 131 moduleMode.projectConfig.packageDir = OH_MODULES; 132 moduleMode.collectModuleFileListMock(this.rollup); 133 moduleMode.moduleInfos.forEach(moduleInfo => { 134 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 135 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 136 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 137 138 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 139 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 140 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 141 142 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 143 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 144 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 145 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 146 }); 147 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 148 SourceMapGenerator.cleanSourceMapObject(); 149 }); 150 151 mocha.it('1-2: test collectModuleFileList under build release', function () { 152 this.rollup.build(RELEASE); 153 SourceMapGenerator.initInstance(this.rollup); 154 const moduleMode = new ModuleModeMock(this.rollup); 155 const fileList = this.rollup.getModuleIds(); 156 for (const filePath of fileList) { 157 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 158 const moduleInfo = this.rollup.getModuleInfo(filePath); 159 moduleInfo.setIsNodeEntryFile(true); 160 moduleInfo.setIsLocalDependency(false); 161 } 162 } 163 moduleMode.projectConfig.packageDir = OH_MODULES; 164 moduleMode.collectModuleFileListMock(this.rollup); 165 moduleMode.moduleInfos.forEach(moduleInfo => { 166 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 167 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 168 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 169 170 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 171 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 172 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 173 174 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 175 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 176 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 177 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 178 }); 179 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 180 SourceMapGenerator.cleanSourceMapObject(); 181 }); 182 183 mocha.it('1-3: test collectModuleFileList under preview debug', function () { 184 this.rollup.preview(); 185 SourceMapGenerator.initInstance(this.rollup); 186 const moduleMode = new ModuleModeMock(this.rollup); 187 const fileList = this.rollup.getModuleIds(); 188 for (const filePath of fileList) { 189 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 190 const moduleInfo = this.rollup.getModuleInfo(filePath); 191 moduleInfo.setIsNodeEntryFile(true); 192 moduleInfo.setIsLocalDependency(false); 193 } 194 } 195 moduleMode.projectConfig.packageDir = OH_MODULES; 196 moduleMode.collectModuleFileListMock(this.rollup); 197 moduleMode.moduleInfos.forEach(moduleInfo => { 198 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 199 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 200 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 201 202 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 203 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 204 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 205 206 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 207 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 208 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 209 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 210 }); 211 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 212 SourceMapGenerator.cleanSourceMapObject(); 213 }); 214 215 mocha.it('1-4: test collectModuleFileList under hot reload debug', function () { 216 this.rollup.hotReload(); 217 SourceMapGenerator.initInstance(this.rollup); 218 const moduleMode = new ModuleModeMock(this.rollup); 219 const fileList = this.rollup.getModuleIds(); 220 for (const filePath of fileList) { 221 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 222 const moduleInfo = this.rollup.getModuleInfo(filePath); 223 moduleInfo.setIsNodeEntryFile(true); 224 moduleInfo.setIsLocalDependency(false); 225 } 226 } 227 moduleMode.projectConfig.packageDir = OH_MODULES; 228 moduleMode.collectModuleFileListMock(this.rollup); 229 moduleMode.moduleInfos.forEach(moduleInfo => { 230 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 231 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 232 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 233 234 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 235 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 236 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 237 238 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 239 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 240 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 241 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 242 }); 243 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 244 SourceMapGenerator.cleanSourceMapObject(); 245 }); 246 247 mocha.it('1-5: test collectModuleFileList useNormalizedOHMUrl under build debug', function () { 248 this.rollup.build(); 249 SourceMapGenerator.initInstance(this.rollup); 250 this.rollup.useNormalizedOHMUrl(); 251 this.rollup.share.projectConfig.pkgContextInfo = { 252 'entry': { 253 'packageName': 'entry', 254 'bundleName': '', 255 'moduleName': '', 256 'version': '', 257 'entryPath': 'Index.ets', 258 'isSO': false 259 } 260 }; 261 const moduleMode = new ModuleModeMock(this.rollup); 262 const fileList = this.rollup.getModuleIds(); 263 for (const filePath of fileList) { 264 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 265 const moduleInfo = this.rollup.getModuleInfo(filePath); 266 moduleInfo.setIsNodeEntryFile(true); 267 moduleInfo.setIsLocalDependency(false); 268 moduleInfo.meta.pkgName = 'entry'; 269 } 270 } 271 moduleMode.projectConfig.packageDir = OH_MODULES; 272 moduleMode.collectModuleFileListMock(this.rollup); 273 moduleMode.moduleInfos.forEach(moduleInfo => { 274 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 275 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 276 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 277 278 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 279 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 280 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 281 282 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 283 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 284 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 285 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 286 }); 287 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 288 SourceMapGenerator.cleanSourceMapObject(); 289 }); 290 291 mocha.it('1-6: test collectModuleFileList useNormalizedOHMUrl under build release', function () { 292 this.rollup.build(RELEASE); 293 SourceMapGenerator.initInstance(this.rollup); 294 this.rollup.useNormalizedOHMUrl(); 295 this.rollup.share.projectConfig.pkgContextInfo = { 296 'entry': { 297 'packageName': 'entry', 298 'bundleName': '', 299 'moduleName': '', 300 'version': '', 301 'entryPath': 'Index.ets', 302 'isSO': false 303 } 304 }; 305 const moduleMode = new ModuleModeMock(this.rollup); 306 const fileList = this.rollup.getModuleIds(); 307 for (const filePath of fileList) { 308 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 309 const moduleInfo = this.rollup.getModuleInfo(filePath); 310 moduleInfo.setIsNodeEntryFile(true); 311 moduleInfo.setIsLocalDependency(false); 312 moduleInfo.meta.pkgName = 'entry'; 313 } 314 } 315 moduleMode.projectConfig.packageDir = OH_MODULES; 316 moduleMode.collectModuleFileListMock(this.rollup); 317 moduleMode.moduleInfos.forEach(moduleInfo => { 318 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 319 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 320 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 321 322 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 323 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 324 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 325 326 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 327 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 328 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 329 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 330 }); 331 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 332 SourceMapGenerator.cleanSourceMapObject(); 333 }); 334 335 mocha.it('1-7: test collectModuleFileList useNormalizedOHMUrl under preview debug', function () { 336 this.rollup.preview(); 337 SourceMapGenerator.initInstance(this.rollup); 338 this.rollup.useNormalizedOHMUrl(); 339 this.rollup.share.projectConfig.pkgContextInfo = { 340 'entry': { 341 'packageName': 'entry', 342 'bundleName': '', 343 'moduleName': '', 344 'version': '', 345 'entryPath': 'Index.ets', 346 'isSO': false 347 } 348 }; 349 const moduleMode = new ModuleModeMock(this.rollup); 350 const fileList = this.rollup.getModuleIds(); 351 for (const filePath of fileList) { 352 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 353 const moduleInfo = this.rollup.getModuleInfo(filePath); 354 moduleInfo.setIsNodeEntryFile(true); 355 moduleInfo.setIsLocalDependency(false); 356 moduleInfo.meta.pkgName = 'entry'; 357 } 358 } 359 moduleMode.projectConfig.packageDir = OH_MODULES; 360 moduleMode.collectModuleFileListMock(this.rollup); 361 moduleMode.moduleInfos.forEach(moduleInfo => { 362 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 363 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 364 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 365 366 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 367 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 368 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 369 370 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 371 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 372 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 373 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 374 }); 375 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 376 SourceMapGenerator.cleanSourceMapObject(); 377 }); 378 379 mocha.it('1-8: test collectModuleFileList useNormalizedOHMUrl under hot reload debug', function () { 380 this.rollup.hotReload(); 381 SourceMapGenerator.initInstance(this.rollup); 382 this.rollup.useNormalizedOHMUrl(); 383 this.rollup.share.projectConfig.pkgContextInfo = { 384 'entry': { 385 'packageName': 'entry', 386 'bundleName': '', 387 'moduleName': '', 388 'version': '', 389 'entryPath': 'Index.ets', 390 'isSO': false 391 } 392 }; 393 const moduleMode = new ModuleModeMock(this.rollup); 394 const fileList = this.rollup.getModuleIds(); 395 for (const filePath of fileList) { 396 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 397 const moduleInfo = this.rollup.getModuleInfo(filePath); 398 moduleInfo.setIsNodeEntryFile(true); 399 moduleInfo.setIsLocalDependency(false); 400 moduleInfo.meta.pkgName = 'entry'; 401 } 402 } 403 moduleMode.projectConfig.packageDir = OH_MODULES; 404 moduleMode.collectModuleFileListMock(this.rollup); 405 moduleMode.moduleInfos.forEach(moduleInfo => { 406 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 407 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 408 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 409 410 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 411 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 412 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 413 414 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 415 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 416 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 417 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 418 }); 419 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 420 SourceMapGenerator.cleanSourceMapObject(); 421 }); 422 423 mocha.it('2-1-1: test addModuleInfoItem under build debug: isPackageModulesFile`s return is true', function () { 424 this.rollup.build(); 425 SourceMapGenerator.initInstance(this.rollup); 426 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 427 const moduleMode = new ModuleModeMock(this.rollup); 428 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 429 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 430 moduleMode.moduleInfos.forEach(value => { 431 expect(value.packageName === PKG_MODULES).to.be.true; 432 }); 433 SourceMapGenerator.cleanSourceMapObject(); 434 }); 435 436 mocha.it('2-1-2: test addModuleInfoItem under build debug: isPackageModulesFile`s return is false', function () { 437 this.rollup.build(); 438 SourceMapGenerator.initInstance(this.rollup); 439 const moduleMode = new ModuleModeMock(this.rollup); 440 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 441 moduleMode.moduleInfos.forEach(moduleInfo => { 442 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 443 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 444 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 445 446 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 447 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 448 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 449 450 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 451 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 452 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 453 454 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 455 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 456 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 457 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 458 }); 459 SourceMapGenerator.cleanSourceMapObject(); 460 }); 461 462 mocha.it('2-1-3: test addModuleInfoItem under build debug: extName is not null', function () { 463 this.rollup.build(); 464 SourceMapGenerator.initInstance(this.rollup); 465 const moduleMode = new ModuleModeMock(this.rollup); 466 moduleMode.addModuleInfoItemMock(this.rollup, false, EXTNAME_TS); 467 moduleMode.moduleInfos.forEach(value => { 468 expect(value.cacheFilePath.endsWith(EXTNAME_TS)).to.be.true; 469 }); 470 SourceMapGenerator.cleanSourceMapObject(); 471 }); 472 473 mocha.it('2-2: test addModuleInfoItem under build release', function () { 474 this.rollup.build(RELEASE); 475 SourceMapGenerator.initInstance(this.rollup); 476 const moduleMode = new ModuleModeMock(this.rollup); 477 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 478 moduleMode.moduleInfos.forEach(moduleInfo => { 479 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 480 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 481 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 482 483 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 484 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 485 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 486 487 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 488 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 489 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 490 491 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 492 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 493 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 494 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 495 }); 496 SourceMapGenerator.cleanSourceMapObject(); 497 }); 498 499 mocha.it('2-3: test addModuleInfoItem under preview debug', function () { 500 this.rollup.preview(); 501 SourceMapGenerator.initInstance(this.rollup); 502 const moduleMode = new ModuleModeMock(this.rollup); 503 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 504 moduleMode.moduleInfos.forEach(moduleInfo => { 505 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 506 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 507 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 508 509 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 510 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 511 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 512 513 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 514 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 515 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 516 517 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 518 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 519 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 520 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 521 }); 522 SourceMapGenerator.cleanSourceMapObject(); 523 }); 524 525 mocha.it('2-4: test addModuleInfoItem under hot reload debug', function () { 526 this.rollup.hotReload(); 527 SourceMapGenerator.initInstance(this.rollup); 528 const moduleMode = new ModuleModeMock(this.rollup); 529 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 530 moduleMode.moduleInfos.forEach(moduleInfo => { 531 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 532 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 533 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 534 535 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 536 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 537 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 538 539 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 540 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 541 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 542 543 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 544 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 545 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 546 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 547 }); 548 SourceMapGenerator.cleanSourceMapObject(); 549 }); 550 551 mocha.it('2-5-1: test addModuleInfoItem under build debug: sourceFile equals sourcemap new key', function () { 552 this.rollup.build(); 553 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 554 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 555 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 556 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 557 }); 558 SourceMapGenerator.cleanSourceMapObject(); 559 }); 560 561 mocha.it('2-5-2: test addModuleInfoItem under build release: sourceFile equals sourcemap new key', function () { 562 this.rollup.build(RELEASE); 563 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 564 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 565 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 566 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 567 }); 568 SourceMapGenerator.cleanSourceMapObject(); 569 }); 570 571 mocha.it('2-5-3: test addModuleInfoItem under preview debug: sourceFile equals sourcemap new key', function () { 572 this.rollup.preview(); 573 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 574 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 575 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 576 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 577 }); 578 SourceMapGenerator.cleanSourceMapObject(); 579 }); 580 581 mocha.it('2-5-4: test addModuleInfoItem under hot reload debug: sourceFile equals sourcemap new key', function () { 582 this.rollup.hotReload(); 583 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 584 const moduleInfosAndSourceMap = ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 585 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 586 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 587 }); 588 SourceMapGenerator.cleanSourceMapObject(); 589 }); 590 591 mocha.it('2-6-1: test addModuleInfoItem under build debug: sourceFile equals sourcemap old key', function () { 592 this.rollup.build(); 593 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 594 sourceMapGenerator.setNewSoureMaps(false); 595 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 596 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 597 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 598 }); 599 SourceMapGenerator.cleanSourceMapObject(); 600 }); 601 602 mocha.it('2-6-2: test addModuleInfoItem under build release: sourceFile equals sourcemap old key', function () { 603 this.rollup.build(RELEASE); 604 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 605 sourceMapGenerator.setNewSoureMaps(false); 606 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 607 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 608 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 609 }); 610 SourceMapGenerator.cleanSourceMapObject(); 611 }); 612 613 mocha.it('2-6-3: test addModuleInfoItem under preview debug: sourceFile equals sourcemap old key', function () { 614 this.rollup.preview(); 615 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 616 sourceMapGenerator.setNewSoureMaps(false); 617 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 618 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 619 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 620 }); 621 SourceMapGenerator.cleanSourceMapObject(); 622 }); 623 624 mocha.it('2-6-4: test addModuleInfoItem under hot reload debug: sourceFile equals sourcemap old key', function () { 625 this.rollup.hotReload(); 626 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 627 sourceMapGenerator.setNewSoureMaps(false); 628 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 629 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 630 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 631 }); 632 SourceMapGenerator.cleanSourceMapObject(); 633 }); 634 635 mocha.it('2-7-1: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is true', function () { 636 this.rollup.build(RELEASE); 637 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 638 sourceMapGenerator.setNewSoureMaps(true); 639 640 this.rollup.share.projectConfig = { 641 buildMode: 'Release' 642 } 643 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 644 options: { 645 enableFileNameObfuscation: true 646 } 647 }; 648 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 649 650 const moduleMode = new ModuleModeMock(this.rollup); 651 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 652 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 653 654 let index = 0; 655 moduleMode.moduleInfos.forEach(moduleInfo => { 656 if (index === 1) { 657 expect(moduleInfo.sourceFile == 'entry|entry|1.0.0|src/main/entryability/EntryAbility.js').to.be.true; 658 expect(moduleInfo.recordName == 'pkg_modules/src/main/pkg_modulesability/EntryAbility').to.be.true; 659 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 660 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 661 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 662 } 663 if (index === 2) { 664 expect(moduleInfo.sourceFile == 'entry|entry|1.0.0|src/main/pages/Index.js').to.be.true; 665 expect(moduleInfo.recordName == 'pkg_modules/src/main/pages/Index').to.be.true; 666 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 667 expect(moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 668 expect(moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 669 } 670 index++; 671 }); 672 SourceMapGenerator.cleanSourceMapObject(); 673 }); 674 675 mocha.it('2-7-2: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is true and old key', function () { 676 this.rollup.build(RELEASE); 677 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 678 sourceMapGenerator.setNewSoureMaps(false); 679 680 this.rollup.share.projectConfig = { 681 buildMode: 'Release' 682 } 683 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 684 options: { 685 enableFileNameObfuscation: true 686 } 687 }; 688 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 689 690 const moduleMode = new ModuleModeMock(this.rollup); 691 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 692 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 693 694 let index = 0; 695 moduleMode.moduleInfos.forEach(moduleInfo => { 696 if (index === 1) { 697 expect(moduleInfo.sourceFile == 'entry/build/entry/src/main/entryability/EntryAbility.ts').to.be.true; 698 expect(moduleInfo.recordName == 'pkg_modules/src/main/pkg_modulesability/EntryAbility').to.be.true; 699 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 700 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 701 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 702 } 703 if (index === 2) { 704 expect(moduleInfo.sourceFile == 'entry/build/entry/src/main/pages/Index.ets').to.be.true; 705 expect(moduleInfo.recordName == 'pkg_modules/src/main/pages/Index').to.be.true; 706 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 707 expect(moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 708 expect(moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 709 } 710 index++; 711 }); 712 SourceMapGenerator.cleanSourceMapObject(); 713 }); 714 715 mocha.it('2-7-3: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is false', function () { 716 this.rollup.build(RELEASE); 717 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 718 sourceMapGenerator.setNewSoureMaps(true); 719 720 this.rollup.share.projectConfig = { 721 buildMode: 'Release' 722 } 723 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 724 options: { 725 enableFileNameObfuscation: true 726 } 727 }; 728 729 const arkguardConfig = { 730 mRenameFileName: { 731 mEnable: true, 732 mNameGeneratorType: 1, 733 mReservedFileNames: [ 734 "entry", 735 "src", 736 "main" 737 ] 738 }, 739 mPerformancePrinter: [] 740 } 741 742 let arkObfuscator: ArkObfuscator = new ArkObfuscator(); 743 arkObfuscator.init(arkguardConfig); 744 745 const moduleMode = new ModuleModeMock(this.rollup); 746 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 747 748 moduleMode.moduleInfos.forEach(moduleInfo => { 749 expect(moduleInfo.packageName === 'entry').to.be.true; 750 expect(/.*entry\|entry\|1\.0\.0\|src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.sourceFile)).to.be.true; 751 expect(/.*\/entry\/src\/main\/[a-z]\/[a-z].*/.test(moduleInfo.recordName)).to.be.true; 752 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.filePath)).to.be.true; 753 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.cacheFilePath)).to.be.true; 754 }); 755 SourceMapGenerator.cleanSourceMapObject(); 756 }); 757 758 mocha.it('2-7-4: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is false and old key', function () { 759 this.rollup.build(RELEASE); 760 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 761 sourceMapGenerator.setNewSoureMaps(false); 762 763 this.rollup.share.projectConfig = { 764 buildMode: 'Release' 765 } 766 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 767 options: { 768 enableFileNameObfuscation: true 769 } 770 }; 771 772 const moduleMode = new ModuleModeMock(this.rollup); 773 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 774 775 moduleMode.moduleInfos.forEach(moduleInfo => { 776 expect(moduleInfo.packageName === 'entry').to.be.true; 777 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.sourceFile)).to.be.true; 778 expect(/.*\/entry\/src\/main\/[a-z]\/[a-z].*/.test(moduleInfo.recordName)).to.be.true; 779 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.filePath)).to.be.true; 780 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.cacheFilePath)).to.be.true; 781 }); 782 SourceMapGenerator.cleanSourceMapObject(); 783 }); 784 785 mocha.it('3-1-1: test updateCachedSourceMaps under build debug: cacheSourceMapPath not exist', function () { 786 this.rollup.build(); 787 const moduleMode = new ModuleModeMock(this.rollup); 788 moduleMode.cacheSourceMapPath = ''; 789 790 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 791 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 792 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 793 794 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 795 sourceMapGenerator.setNewSoureMaps(false); 796 for (const key in cacheSourceMapObject) { 797 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 798 } 799 800 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 801 for (const key of Object.keys(newSourceMaps)) { 802 delete newSourceMaps[key]; 803 } 804 SourceMapGenerator.cleanSourceMapObject(); 805 }); 806 807 mocha.it('3-1-2: test updateCachedSourceMaps under build debug: compileFileList has not sourceFileAbsolutePath', function () { 808 this.rollup.build(); 809 const moduleMode = new ModuleModeMock(this.rollup); 810 moduleMode.cacheSourceMapPath = EXPECT_SOURCEMAP_JSON; 811 812 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 813 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: '' }); 814 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), { FILE: '' }); 815 816 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 817 sourceMapGenerator.setNewSoureMaps(false); 818 for (const key in cacheSourceMapObject) { 819 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 820 } 821 822 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: TEST }); 823 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 824 sourceMapGenerator.setNewSoureMaps(false); 825 for (const key in cacheSourceMapObject) { 826 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 827 } 828 829 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: TEST, NEWFILE: NEWFILE }); 830 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 831 sourceMapGenerator.setNewSoureMaps(false); 832 for (const key in cacheSourceMapObject) { 833 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 834 } 835 836 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 837 for (const key of Object.keys(newSourceMaps)) { 838 delete newSourceMaps[key]; 839 } 840 SourceMapGenerator.cleanSourceMapObject(); 841 }); 842 843 mocha.it('3-2: test updateCachedSourceMaps under build release', function () { 844 this.rollup.build(RELEASE); 845 const moduleMode = new ModuleModeMock(this.rollup); 846 moduleMode.cacheSourceMapPath = ''; 847 848 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 849 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 850 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 851 852 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 853 sourceMapGenerator.setNewSoureMaps(false); 854 for (const key in cacheSourceMapObject) { 855 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 856 } 857 858 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 859 for (const key of Object.keys(newSourceMaps)) { 860 delete newSourceMaps[key]; 861 } 862 SourceMapGenerator.cleanSourceMapObject(); 863 }); 864 865 mocha.it('3-3: test updateCachedSourceMaps under preview debug', function () { 866 this.rollup.preview(); 867 const moduleMode = new ModuleModeMock(this.rollup); 868 moduleMode.cacheSourceMapPath = ''; 869 870 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 871 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 872 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 873 874 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 875 sourceMapGenerator.setNewSoureMaps(false); 876 for (const key in cacheSourceMapObject) { 877 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 878 } 879 880 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 881 for (const key of Object.keys(newSourceMaps)) { 882 delete newSourceMaps[key]; 883 } 884 SourceMapGenerator.cleanSourceMapObject(); 885 }); 886 887 mocha.it('3-4: test updateCachedSourceMaps under hot reload debug', function () { 888 this.rollup.hotReload(); 889 const moduleMode = new ModuleModeMock(this.rollup); 890 moduleMode.cacheSourceMapPath = ''; 891 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 892 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 893 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 894 895 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 896 sourceMapGenerator.setNewSoureMaps(false); 897 for (const key in cacheSourceMapObject) { 898 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 899 } 900 901 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 902 for (const key of Object.keys(newSourceMaps)) { 903 delete newSourceMaps[key]; 904 } 905 SourceMapGenerator.cleanSourceMapObject(); 906 }); 907 908 mocha.it('3-5: test updateCachedSourceMaps when ets(ts) file is transformed to js file', function () { 909 this.rollup.build(); 910 const moduleMode = new ModuleModeMock(this.rollup); 911 moduleMode.cacheSourceMapPath = ''; 912 913 let prefix = `${ENTRY_MODULE_NAME_DEFAULT}|${ENTRY_MODULE_NAME_DEFAULT}|${ENTRY_MODULE_VERSION_DEFAULT}|`; 914 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 915 let moduleId: string = path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT); 916 sourceMapGenerator.updateSourceMap(moduleId, {}); 917 918 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 919 if (shouldETSOrTSFileTransformToJS(moduleId, moduleMode.projectConfig)) { 920 expect(prefix + INDEX_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 921 } else { 922 expect(prefix + INDEX_ETS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 923 } 924 925 moduleId = path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT); 926 sourceMapGenerator.updateSourceMap(moduleId, {}); 927 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 928 if (shouldETSOrTSFileTransformToJS(moduleId, moduleMode.projectConfig)) { 929 expect(prefix + ENTRYABILITY_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 930 } else { 931 expect(prefix + ENTRYABILITY_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 932 } 933 934 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 935 for (const key of Object.keys(newSourceMaps)) { 936 delete newSourceMaps[key]; 937 } 938 SourceMapGenerator.cleanSourceMapObject(); 939 }) 940 941 mocha.it('4-1: test generateCompileFilesInfo under build debug', function () { 942 this.rollup.build(); 943 SourceMapGenerator.initInstance(this.rollup); 944 const moduleMode = new ModuleModeMock(this.rollup); 945 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 946 moduleMode.generateCompileFilesInfoMock(false); 947 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 948 SourceMapGenerator.cleanSourceMapObject(); 949 }); 950 951 mocha.it('4-2: test generateCompileFilesInfo under build release', function () { 952 this.rollup.build(RELEASE); 953 SourceMapGenerator.initInstance(this.rollup); 954 const moduleMode = new ModuleModeMock(this.rollup); 955 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 956 moduleMode.generateCompileFilesInfoMock(false); 957 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 958 SourceMapGenerator.cleanSourceMapObject(); 959 }); 960 961 mocha.it('4-3: test generateCompileFilesInfo under preview debug', function () { 962 this.rollup.preview(); 963 SourceMapGenerator.initInstance(this.rollup); 964 const moduleMode = new ModuleModeMock(this.rollup); 965 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 966 moduleMode.generateCompileFilesInfoMock(false); 967 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 968 SourceMapGenerator.cleanSourceMapObject(); 969 }); 970 971 mocha.it('4-4: test generateCompileFilesInfo under hot reload debug', function () { 972 this.rollup.hotReload(); 973 SourceMapGenerator.initInstance(this.rollup); 974 const moduleMode = new ModuleModeMock(this.rollup); 975 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 976 moduleMode.generateCompileFilesInfoMock(false); 977 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 978 SourceMapGenerator.cleanSourceMapObject(); 979 }); 980 981 mocha.it('4-5: test generateCompileFilesInfo under exist abcPaths', function () { 982 this.rollup.hotReload(); 983 SourceMapGenerator.initInstance(this.rollup); 984 this.rollup.share.projectConfig.byteCodeHarInfo = { 985 'har': { 986 'abcPath': 'module.abc' 987 } 988 }; 989 const moduleMode = new ModuleModeMock(this.rollup); 990 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 991 moduleMode.generateCompileFilesInfoMock(true); 992 expect(moduleMode.checkGenerateCompileFilesInfo(true) === true).to.be.true; 993 SourceMapGenerator.cleanSourceMapObject(); 994 }); 995 996 mocha.it('4-6: test generateCompileFilesInfo under hot reload debug incremental', function () { 997 this.rollup.hotReload(); 998 SourceMapGenerator.initInstance(this.rollup); 999 this.rollup.share.projectConfig.byteCodeHarInfo = { 1000 'har': { 1001 'abcPath': 'module.abc' 1002 } 1003 }; 1004 const moduleMode = new ModuleModeMock(this.rollup); 1005 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1006 moduleMode.generateCompileFilesInfoMock(false); 1007 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 1008 SourceMapGenerator.cleanSourceMapObject(); 1009 }); 1010 1011 mocha.it('5-1: test generateNpmEntriesInfo under build debug', function () { 1012 this.rollup.build(); 1013 SourceMapGenerator.initInstance(this.rollup); 1014 const moduleMode = new ModuleModeMock(this.rollup); 1015 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1016 moduleMode.generateNpmEntriesInfoMock(); 1017 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1018 SourceMapGenerator.cleanSourceMapObject(); 1019 }); 1020 1021 mocha.it('5-2: test generateNpmEntriesInfo under build release', function () { 1022 this.rollup.build(RELEASE); 1023 SourceMapGenerator.initInstance(this.rollup); 1024 const moduleMode = new ModuleModeMock(this.rollup); 1025 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1026 moduleMode.generateNpmEntriesInfoMock(); 1027 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1028 SourceMapGenerator.cleanSourceMapObject(); 1029 }); 1030 1031 mocha.it('5-3: test generateNpmEntriesInfo under preview debug', function () { 1032 this.rollup.preview(); 1033 SourceMapGenerator.initInstance(this.rollup); 1034 const moduleMode = new ModuleModeMock(this.rollup); 1035 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1036 moduleMode.generateNpmEntriesInfoMock(); 1037 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1038 SourceMapGenerator.cleanSourceMapObject(); 1039 }); 1040 1041 mocha.it('5-4: test generateNpmEntriesInfo under hot reload debug', function () { 1042 this.rollup.hotReload(); 1043 SourceMapGenerator.initInstance(this.rollup); 1044 const moduleMode = new ModuleModeMock(this.rollup); 1045 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1046 moduleMode.generateNpmEntriesInfoMock(); 1047 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1048 SourceMapGenerator.cleanSourceMapObject(); 1049 }); 1050 1051 mocha.it('6-1: test generateAbcCacheFilesInfo under build debug', function () { 1052 this.rollup.build(); 1053 SourceMapGenerator.initInstance(this.rollup); 1054 const moduleMode = new ModuleModeMock(this.rollup); 1055 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1056 moduleMode.generateAbcCacheFilesInfoMock(); 1057 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1058 SourceMapGenerator.cleanSourceMapObject(); 1059 }); 1060 1061 mocha.it('6-2: test generateAbcCacheFilesInfo under build release', function () { 1062 this.rollup.build(RELEASE); 1063 SourceMapGenerator.initInstance(this.rollup); 1064 const moduleMode = new ModuleModeMock(this.rollup); 1065 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1066 moduleMode.generateAbcCacheFilesInfoMock(); 1067 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1068 SourceMapGenerator.cleanSourceMapObject(); 1069 }); 1070 1071 mocha.it('6-3: test generateAbcCacheFilesInfo under preview debug', function () { 1072 this.rollup.preview(); 1073 SourceMapGenerator.initInstance(this.rollup); 1074 const moduleMode = new ModuleModeMock(this.rollup); 1075 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1076 moduleMode.generateAbcCacheFilesInfoMock(); 1077 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1078 SourceMapGenerator.cleanSourceMapObject(); 1079 }); 1080 1081 mocha.it('6-4: test generateAbcCacheFilesInfo under hot reload debug', function () { 1082 this.rollup.hotReload(); 1083 SourceMapGenerator.initInstance(this.rollup); 1084 const moduleMode = new ModuleModeMock(this.rollup); 1085 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1086 moduleMode.generateAbcCacheFilesInfoMock(); 1087 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1088 SourceMapGenerator.cleanSourceMapObject(); 1089 }); 1090 1091 mocha.it('7-1: test getPackageEntryInfo under build debug', function () { 1092 this.rollup.build(); 1093 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1094 const moduleMode = new ModuleModeMock(this.rollup); 1095 moduleMode.checkGetPackageEntryInfo(this.rollup); 1096 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1097 }); 1098 1099 mocha.it('7-2: test getPackageEntryInfo under build release', function () { 1100 this.rollup.build(RELEASE); 1101 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1102 const moduleMode = new ModuleModeMock(this.rollup); 1103 moduleMode.checkGetPackageEntryInfo(this.rollup); 1104 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1105 }); 1106 1107 mocha.it('7-3: test getPackageEntryInfo under preview debug', function () { 1108 this.rollup.preview(); 1109 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1110 const moduleMode = new ModuleModeMock(this.rollup); 1111 moduleMode.checkGetPackageEntryInfo(this.rollup); 1112 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1113 }); 1114 1115 mocha.it('7-4: test getPackageEntryInfo under hot reload debug', function () { 1116 this.rollup.hotReload(); 1117 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1118 const moduleMode = new ModuleModeMock(this.rollup); 1119 moduleMode.checkGetPackageEntryInfo(this.rollup); 1120 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1121 }); 1122 1123 mocha.it('7-5: test the error message of getPackageEntryInfo under build debug', function () { 1124 this.rollup.build(); 1125 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1126 const moduleMode = new ModuleModeMock(this.rollup); 1127 const stub = sinon.stub(this.rollup.share.getLogger(GEN_ABC_PLUGIN_NAME), 'debug'); 1128 const isTestErrorLog = true; 1129 try { 1130 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1131 } catch (e) { 1132 } 1133 expect(stub.calledWith("ArkTS:INTERNAL ERROR: Failed to get 'pkgPath' from metaInfo. File: ")).to.be.true; 1134 stub.restore(); 1135 }); 1136 1137 mocha.it('7-6: test the error message of getPackageEntryInfo under build release', function () { 1138 this.rollup.build(RELEASE); 1139 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1140 const moduleMode = new ModuleModeMock(this.rollup); 1141 const stub = sinon.stub(this.rollup.share.getLogger(GEN_ABC_PLUGIN_NAME), 'debug'); 1142 const isTestErrorLog = true; 1143 try { 1144 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1145 } catch (e) { 1146 } 1147 expect(stub.calledWith("ArkTS:INTERNAL ERROR: Failed to get 'pkgPath' from metaInfo. File: ")).to.be.true; 1148 stub.restore(); 1149 }); 1150 1151 mocha.it('7-7: test the error message of getPackageEntryInfo under preview debug', function () { 1152 this.rollup.preview(); 1153 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1154 const moduleMode = new ModuleModeMock(this.rollup); 1155 const stub = sinon.stub(this.rollup.share.getLogger(GEN_ABC_PLUGIN_NAME), 'debug'); 1156 const isTestErrorLog = true; 1157 try { 1158 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1159 } catch (e) { 1160 } 1161 expect(stub.calledWith("ArkTS:INTERNAL ERROR: Failed to get 'pkgPath' from metaInfo. File: ")).to.be.true; 1162 stub.restore(); 1163 }); 1164 1165 mocha.it('7-8: test the error message of getPackageEntryInfo under hot reload debug', function () { 1166 this.rollup.hotReload(); 1167 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1168 const moduleMode = new ModuleModeMock(this.rollup); 1169 const stub = sinon.stub(this.rollup.share.getLogger(GEN_ABC_PLUGIN_NAME), 'debug'); 1170 const isTestErrorLog = true; 1171 try { 1172 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1173 } catch (e) { 1174 } 1175 expect(stub.calledWith("ArkTS:INTERNAL ERROR: Failed to get 'pkgPath' from metaInfo. File: ")).to.be.true; 1176 stub.restore(); 1177 }); 1178 1179 mocha.it('8-1: test buildModuleSourceMapInfo under build debug', async function () { 1180 this.rollup.build(); 1181 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1182 const moduleMode = new ModuleModeMock(this.rollup); 1183 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1184 await sleep(1000); 1185 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1186 SourceMapGenerator.cleanSourceMapObject(); 1187 }); 1188 1189 mocha.it('8-2: test buildModuleSourceMapInfo under build release', async function () { 1190 this.rollup.build(RELEASE); 1191 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1192 const moduleMode = new ModuleModeMock(this.rollup); 1193 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1194 await sleep(1000); 1195 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1196 SourceMapGenerator.cleanSourceMapObject(); 1197 }); 1198 1199 mocha.it('8-3: test buildModuleSourceMapInfo under preview debug', async function () { 1200 this.rollup.preview(); 1201 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1202 const moduleMode = new ModuleModeMock(this.rollup); 1203 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1204 await sleep(1000); 1205 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1206 SourceMapGenerator.cleanSourceMapObject(); 1207 }); 1208 1209 mocha.it('8-4: test buildModuleSourceMapInfo under hot reload debug', async function () { 1210 this.rollup.hotReload(); 1211 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1212 const moduleMode = new ModuleModeMock(this.rollup); 1213 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1214 await sleep(1000); 1215 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1216 SourceMapGenerator.cleanSourceMapObject(); 1217 }); 1218 1219 mocha.it('8-5: test the error message of buildModuleSourceMapInfo under build debug', async function () { 1220 this.rollup.build(); 1221 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1222 const moduleMode = new ModuleModeMock(this.rollup); 1223 const stub = sinon.stub(sourceMapGenerator, 'throwArkTsCompilerError'); 1224 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1225 sourceMapGenerator.setSourceMapPath(''); 1226 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1227 await sleep(100); 1228 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to write sourceMaps.')).to.be.true; 1229 stub.restore(); 1230 copyFileSyncStub.restore(); 1231 SourceMapGenerator.cleanSourceMapObject(); 1232 }); 1233 1234 mocha.it('8-6: test the error message of buildModuleSourceMapInfo under build release', async function () { 1235 this.rollup.build(RELEASE); 1236 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1237 const moduleMode = new ModuleModeMock(this.rollup); 1238 const stub = sinon.stub(sourceMapGenerator, 'throwArkTsCompilerError'); 1239 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1240 sourceMapGenerator.setSourceMapPath(''); 1241 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1242 await sleep(100); 1243 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to write sourceMaps.')).to.be.true; 1244 stub.restore(); 1245 copyFileSyncStub.restore(); 1246 SourceMapGenerator.cleanSourceMapObject(); 1247 }); 1248 1249 mocha.it('8-7: test the error message of buildModuleSourceMapInfo under preview debug', async function () { 1250 this.rollup.preview(); 1251 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1252 const moduleMode = new ModuleModeMock(this.rollup); 1253 const stub = sinon.stub(sourceMapGenerator, 'throwArkTsCompilerError'); 1254 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1255 sourceMapGenerator.setSourceMapPath(''); 1256 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1257 await sleep(100); 1258 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to write sourceMaps.')).to.be.true; 1259 stub.restore(); 1260 copyFileSyncStub.restore(); 1261 SourceMapGenerator.cleanSourceMapObject(); 1262 }); 1263 1264 mocha.it('8-8: test the error message of buildModuleSourceMapInfo under hot reload debug', async function () { 1265 this.rollup.hotReload(); 1266 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1267 const moduleMode = new ModuleModeMock(this.rollup); 1268 const stub = sinon.stub(sourceMapGenerator, 'throwArkTsCompilerError'); 1269 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1270 sourceMapGenerator.setSourceMapPath(''); 1271 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1272 await sleep(100); 1273 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to write sourceMaps.')).to.be.true; 1274 stub.restore(); 1275 copyFileSyncStub.restore(); 1276 SourceMapGenerator.cleanSourceMapObject(); 1277 }); 1278 1279 mocha.it('8-9: test merge bytecode source map of buildModuleSourceMapInfo under build debug', async function () { 1280 this.rollup.build(); 1281 this.rollup.share.projectConfig.mockBytecodeHarInfo(); 1282 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1283 const moduleMode = new ModuleModeMock(this.rollup); 1284 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1285 await sleep(1000); 1286 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1287 SourceMapGenerator.cleanSourceMapObject(); 1288 }); 1289 1290 mocha.it('9-1: test getPkgModulesFilePkgName under build debug', function () { 1291 this.rollup.build(); 1292 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1293 const moduleMode = new ModuleModeMock(this.rollup); 1294 const keys = Object.keys(moduleMode.symlinkMap); 1295 for (const key of keys) { 1296 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1297 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1298 } 1299 }); 1300 1301 mocha.it('9-2: test getPkgModulesFilePkgName under build release', function () { 1302 this.rollup.build(RELEASE); 1303 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1304 const moduleMode = new ModuleModeMock(this.rollup); 1305 const keys = Object.keys(moduleMode.symlinkMap); 1306 for (const key of keys) { 1307 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1308 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1309 } 1310 }); 1311 1312 mocha.it('9-3: test getPkgModulesFilePkgName under preview debug', function () { 1313 this.rollup.preview(); 1314 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1315 const moduleMode = new ModuleModeMock(this.rollup); 1316 const keys = Object.keys(moduleMode.symlinkMap); 1317 for (const key of keys) { 1318 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1319 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1320 } 1321 }); 1322 1323 mocha.it('9-4: test getPkgModulesFilePkgName under hot reload debug', function () { 1324 this.rollup.hotReload(); 1325 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1326 const moduleMode = new ModuleModeMock(this.rollup); 1327 const keys = Object.keys(moduleMode.symlinkMap); 1328 for (const key of keys) { 1329 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1330 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1331 } 1332 }); 1333 1334 mocha.it('10-1: test generateEs2AbcCmd under build debug', function () { 1335 this.rollup.build(); 1336 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1337 const moduleMode = new ModuleHotreloadMode(this.rollup); 1338 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1339 moduleMode.projectConfig.anBuildMode = AOT_FULL; 1340 moduleMode.generateEs2AbcCmd(); 1341 moduleMode.byteCodeHar = true; 1342 1343 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1344 moduleMode.cmdArgs.splice(1, 1); 1345 expect(moduleMode.cmdArgs[1].indexOf(BUILD_INFO) > 0).to.be.true; 1346 moduleMode.cmdArgs.splice(1, 1); 1347 expect(moduleMode.cmdArgs[2].indexOf(BUILD_NPM) > 0).to.be.true; 1348 moduleMode.cmdArgs.splice(2, 1); 1349 expect(moduleMode.cmdArgs[3].indexOf(MODULES_ABC) > 0).to.be.true; 1350 moduleMode.cmdArgs.splice(3, 1); 1351 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1352 }); 1353 1354 mocha.it('10-2: test generateEs2AbcCmd under build release', function () { 1355 this.rollup.build(RELEASE); 1356 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1357 const moduleMode = new ModuleHotreloadMode(this.rollup); 1358 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1359 moduleMode.generateEs2AbcCmd(); 1360 moduleMode.byteCodeHar = true; 1361 1362 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.false; 1363 expect(moduleMode.cmdArgs[1].indexOf(BUILD_INFO) > 0).to.be.true; 1364 moduleMode.cmdArgs.splice(1, 1); 1365 expect(moduleMode.cmdArgs[2].indexOf(BUILD_NPM) > 0).to.be.true; 1366 moduleMode.cmdArgs.splice(2, 1); 1367 expect(moduleMode.cmdArgs[3].indexOf(MODULES_ABC) > 0).to.be.true; 1368 moduleMode.cmdArgs.splice(3, 1); 1369 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1370 }); 1371 1372 mocha.it('10-3: test generateEs2AbcCmd under preview debug', function () { 1373 this.rollup.preview(); 1374 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1375 const moduleMode = new ModuleHotreloadMode(this.rollup); 1376 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1377 moduleMode.generateEs2AbcCmd(); 1378 moduleMode.byteCodeHar = true; 1379 1380 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1381 moduleMode.cmdArgs.splice(1, 1); 1382 expect(moduleMode.cmdArgs[1].indexOf(PREVIEW_DEBUG_INFO) > 0).to.be.true; 1383 moduleMode.cmdArgs.splice(1, 1); 1384 expect(moduleMode.cmdArgs[2].indexOf(PREVIEW_DEBUG_NPM) > 0).to.be.true; 1385 moduleMode.cmdArgs.splice(2, 1); 1386 expect(moduleMode.cmdArgs[3].indexOf(PREVIEW_MODULES_ABC) > 0).to.be.true; 1387 moduleMode.cmdArgs.splice(3, 1); 1388 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1389 }); 1390 1391 mocha.it('11-1: test addCacheFileArgs under build debug', function () { 1392 this.rollup.build(); 1393 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1394 const moduleMode = new ModuleHotreloadMode(this.rollup); 1395 moduleMode.addCacheFileArgs(); 1396 1397 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1398 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1399 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1400 expect(moduleMode.cmdArgs[3].indexOf(BUILD_CACHE) > 0).to.be.true; 1401 }); 1402 1403 mocha.it('11-2: test addCacheFileArgs under build release', function () { 1404 this.rollup.build(RELEASE); 1405 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1406 const moduleMode = new ModuleHotreloadMode(this.rollup); 1407 moduleMode.addCacheFileArgs(); 1408 1409 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1410 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.false; 1411 expect(moduleMode.cmdArgs[1] === CACHE_FILE).to.be.true; 1412 expect(moduleMode.cmdArgs[2].indexOf(BUILD_CACHE) > 0).to.be.true; 1413 }); 1414 1415 mocha.it('11-3: test addCacheFileArgs under preview debug', function () { 1416 this.rollup.preview(); 1417 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1418 const moduleMode = new ModuleHotreloadMode(this.rollup); 1419 moduleMode.addCacheFileArgs(); 1420 1421 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1422 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1423 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1424 expect(moduleMode.cmdArgs[3].indexOf(PREVIEW_DEBUG_CACHE) > 0).to.be.true; 1425 }); 1426 1427 mocha.it('11-4: test addCacheFileArgs under hot reload debug', function () { 1428 this.rollup.hotReload(); 1429 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1430 const moduleMode = new ModuleHotreloadMode(this.rollup); 1431 moduleMode.addCacheFileArgs(); 1432 1433 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1434 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1435 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1436 expect(moduleMode.cmdArgs[3].indexOf(BUILD_CACHE) > 0).to.be.true; 1437 }); 1438 1439 mocha.it('12-1: test genFileCachePath under build debug', function () { 1440 this.rollup.build(); 1441 const moduleMode = new ModuleModeMock(this.rollup); 1442 const allFiles = new Set<string>(); 1443 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1444 this.mockfileList = allFiles.values(); 1445 for (const filePath of this.mockfileList) { 1446 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1447 const sufStr = 1448 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1449 const returnInfo = 1450 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1451 this.rollup.share.projectConfig.cachePath); 1452 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1453 } 1454 } 1455 }); 1456 1457 mocha.it('12-2: test genFileCachePath under build release', function () { 1458 this.rollup.build(RELEASE); 1459 const moduleMode = new ModuleModeMock(this.rollup); 1460 const allFiles = new Set<string>(); 1461 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1462 this.mockfileList = allFiles.values(); 1463 for (const filePath of this.mockfileList) { 1464 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1465 const sufStr = 1466 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1467 const returnInfo = 1468 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1469 this.rollup.share.projectConfig.cachePath); 1470 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1471 } 1472 } 1473 }); 1474 1475 mocha.it('12-3: test genFileCachePath under preview debug', function () { 1476 this.rollup.preview(); 1477 const moduleMode = new ModuleModeMock(this.rollup); 1478 const allFiles = new Set<string>(); 1479 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1480 this.mockfileList = allFiles.values(); 1481 for (const filePath of this.mockfileList) { 1482 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1483 const sufStr = 1484 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1485 const returnInfo = 1486 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1487 this.rollup.share.projectConfig.cachePath); 1488 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1489 } 1490 } 1491 }); 1492 1493 mocha.it('12-4: test genFileCachePath under hot reload debug', function () { 1494 this.rollup.hotReload(); 1495 const moduleMode = new ModuleModeMock(this.rollup); 1496 this.mockfileList = this.rollup.getModuleIds(); 1497 for (const filePath of this.mockfileList) { 1498 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1499 const sufStr = 1500 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1501 const returnInfo = 1502 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1503 this.rollup.share.projectConfig.cachePath); 1504 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1505 } 1506 } 1507 }); 1508 1509 mocha.it('12-5: test genFileCachePath under hot fix debug', function () { 1510 this.rollup.build(); 1511 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1512 const cachePath = projectConfig.cachePath + DEBUG; 1513 const moduleMode = new ModuleModeMock(this.rollup); 1514 const filePath = `${projectConfig.projectRootPath}/${TEST_TS}`; 1515 const sufStr = toUnixPath(filePath).replace(toUnixPath(projectConfig.projectRootPath), ''); 1516 const returnInfo = moduleMode.genFileCachePath(filePath, projectConfig.projectRootPath, cachePath); 1517 expect(returnInfo === path.join(cachePath, sufStr)).to.be.true; 1518 }); 1519 1520 mocha.it('12-6: test genFileCachePath under hot fix release', function () { 1521 this.rollup.build(RELEASE); 1522 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1523 const cachePath = projectConfig.cachePath + RELEASE; 1524 const moduleMode = new ModuleModeMock(this.rollup); 1525 const filePath = `${projectConfig.projectRootPath}/${TEST_TS}`; 1526 const sufStr = toUnixPath(filePath).replace(toUnixPath(projectConfig.projectRootPath), ''); 1527 const returnInfo = moduleMode.genFileCachePath(filePath, projectConfig.projectRootPath, cachePath); 1528 expect(returnInfo === path.join(cachePath, sufStr)).to.be.true; 1529 }); 1530 1531 mocha.it('13-1: test the error message of generateMergedAbcOfEs2Abc throw error on failed code', async function () { 1532 this.rollup.build(); 1533 const moduleMode = new ModuleModeMock(this.rollup); 1534 const child = childProcess.exec('false', { windowsHide: true }); 1535 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').returns(child); 1536 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1537 let parentEvent = undefined; 1538 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1539 await sleep(1000); 1540 expect(stub.calledWithMatch('ArkTS:ERROR Failed to execute es2abc.\nError Message: ')).to.be.true; 1541 triggerAsyncStub.restore(); 1542 stub.restore(); 1543 }); 1544 1545 mocha.it('13-2: test the error message of generateMergedAbcOfEs2Abc throw error(Failed to startup es2abc)', async function () { 1546 this.rollup.build(); 1547 const moduleMode = new ModuleModeMock(this.rollup); 1548 const child = { 1549 on: sinon.stub(), 1550 stderr: { 1551 on: sinon.stub(), 1552 }, 1553 }; 1554 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').callsFake((callback) => { 1555 callback(); 1556 return child; 1557 }); 1558 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1559 let errorEventCallback; 1560 child.on.callsFake((event, callback) => { 1561 if (event === 'error') { 1562 errorEventCallback = callback; 1563 } 1564 }); 1565 let parentEvent = undefined; 1566 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1567 if (errorEventCallback) { 1568 errorEventCallback(new Error('test error')); 1569 } 1570 await sleep(100); 1571 expect(stub.calledWith('Error: test error')).to.be.true; 1572 triggerAsyncStub.restore(); 1573 stub.restore(); 1574 }); 1575 1576 mocha.it('13-3: test the error message of generateMergedAbcOfEs2Abc handle error', function () { 1577 this.rollup.build(); 1578 const moduleMode = new ModuleModeMock(this.rollup); 1579 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').throws(new Error('Execution failed')); 1580 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1581 try { 1582 let parentEvent = undefined; 1583 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1584 } catch (e) { 1585 } 1586 expect(stub.calledWith('ArkTS:ERROR Failed to execute es2abc.\nError message: Error: Execution failed\n')).to.be.true; 1587 triggerAsyncStub.restore(); 1588 stub.restore(); 1589 }); 1590 1591 mocha.it('14-1: test the error message of filterModulesByHashJson', function () { 1592 this.rollup.build(); 1593 const moduleMode = new ModuleModeMock(this.rollup); 1594 let existsSyncStub = sinon.stub(fs, 'existsSync'); 1595 let readFileSyncStub = sinon.stub(fs, 'readFileSync'); 1596 let stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1597 moduleMode.moduleInfos = new Map([ 1598 ['moduleKey', { cacheFilePath: 'test' }] 1599 ]); 1600 existsSyncStub.callsFake((path) => { 1601 if (path === moduleMode.hashJsonFilePath) { 1602 return true; 1603 } 1604 return false; 1605 }); 1606 readFileSyncStub.withArgs(moduleMode.hashJsonFilePath).returns(JSON.stringify({})); 1607 try { 1608 moduleMode.filterModulesByHashJsonMock(); 1609 } catch (e) { 1610 } 1611 expect(stub.calledWithMatch( 1612 `ArkTS:INTERNAL ERROR: Failed to get module cache abc from test in incremental build.` + 1613 `Please try to rebuild the project.`)).to.be.true; 1614 existsSyncStub.restore(); 1615 readFileSyncStub.restore(); 1616 stub.restore(); 1617 }); 1618 1619 mocha.it('15-1: test the error message of mergeProtoToAbc', function () { 1620 this.rollup.build(); 1621 const moduleMode = new ModuleMode(this.rollup); 1622 const execSyncStub = sinon.stub(childProcess, 'execSync').throws(new Error('Execution failed')); 1623 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1624 moduleMode.mergeProtoToAbc(); 1625 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to merge proto file to abc.')).to.be.true; 1626 execSyncStub.restore(); 1627 stub.restore(); 1628 }); 1629 1630 mocha.it('16-1: test the error message of invokeTs2AbcWorkersToGenProto', function () { 1631 this.rollup.build(); 1632 const moduleMode = new ModuleMode(this.rollup); 1633 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1634 const clusterStub = sinon.stub(cluster, 'fork'); 1635 const fakeWorker = { 1636 on: sinon.stub() 1637 }; 1638 clusterStub.returns(fakeWorker); 1639 const splittedModules = [{ 1640 'test': '' 1641 }] 1642 try { 1643 fakeWorker.on.withArgs('message').callsFake((event, callback) => { 1644 callback({ data: 'error' }); 1645 }); 1646 moduleMode.invokeTs2AbcWorkersToGenProto(splittedModules) 1647 } catch (e) { 1648 } 1649 expect(stub.calledWith('ArkTS:ERROR Failed to execute ts2abc.')).to.be.true; 1650 clusterStub.restore(); 1651 stub.restore(); 1652 }); 1653 1654 mocha.it('17-1: test the error message of processTs2abcWorkersToGenAbc', function () { 1655 this.rollup.build(); 1656 const moduleMode = new ModuleMode(this.rollup); 1657 const stub = sinon.stub(moduleMode, 'throwArkTsCompilerError'); 1658 const clusterStub = sinon.stub(cluster, 'on'); 1659 const fakeWorker = { 1660 on: sinon.stub() 1661 }; 1662 clusterStub.returns(fakeWorker); 1663 try { 1664 clusterStub.withArgs('exit').callsFake((event, callback) => { 1665 callback(fakeWorker, 1, null); 1666 }); 1667 moduleMode.processTs2abcWorkersToGenAbc() 1668 } catch (e) { 1669 } 1670 expect(stub.calledWith('ArkTS:ERROR Failed to execute ts2abc')).to.be.true; 1671 clusterStub.restore(); 1672 stub.restore(); 1673 }); 1674 1675 mocha.it('18-1: test generateCompileContext under build debug', function () { 1676 this.rollup.build(); 1677 SourceMapGenerator.initInstance(this.rollup); 1678 this.rollup.mockCompileContextInfo(); 1679 const moduleMode = new ModuleModeMock(this.rollup); 1680 moduleMode.generateCompileContextInfoMock(this.rollup); 1681 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1682 SourceMapGenerator.cleanSourceMapObject(); 1683 }); 1684 1685 mocha.it('18-2: test generateCompileContext under build release', function () { 1686 this.rollup.build(RELEASE); 1687 SourceMapGenerator.initInstance(this.rollup); 1688 this.rollup.mockCompileContextInfo(); 1689 const moduleMode = new ModuleModeMock(this.rollup); 1690 moduleMode.generateCompileContextInfoMock(this.rollup); 1691 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1692 SourceMapGenerator.cleanSourceMapObject(); 1693 }); 1694 1695 mocha.it('18-3: test generateCompileContext under build preview', function () { 1696 this.rollup.preview(); 1697 SourceMapGenerator.initInstance(this.rollup); 1698 this.rollup.mockCompileContextInfo(); 1699 const moduleMode = new ModuleModeMock(this.rollup); 1700 moduleMode.generateCompileContextInfoMock(this.rollup); 1701 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1702 SourceMapGenerator.cleanSourceMapObject(); 1703 }); 1704 1705 mocha.it('18-4: test generateCompileContext under build hotReload', function () { 1706 this.rollup.hotReload(); 1707 SourceMapGenerator.initInstance(this.rollup); 1708 this.rollup.mockCompileContextInfo(); 1709 const moduleMode = new ModuleModeMock(this.rollup); 1710 moduleMode.generateCompileContextInfoMock(this.rollup); 1711 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1712 SourceMapGenerator.cleanSourceMapObject(); 1713 }); 1714 mocha.it('18-5: test generateCompileContext widget compile under build debug', function () { 1715 this.rollup.build(); 1716 this.rollup.share.projectConfig.widgetCompile = true; 1717 SourceMapGenerator.initInstance(this.rollup); 1718 this.rollup.mockCompileContextInfo(); 1719 const moduleMode = new ModuleModeMock(this.rollup); 1720 moduleMode.generateCompileContextInfoMock(this.rollup); 1721 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1722 SourceMapGenerator.cleanSourceMapObject(); 1723 }); 1724 1725 mocha.it('18-6: test generateCompileContext widget compile under build release', function () { 1726 this.rollup.build(RELEASE); 1727 this.rollup.share.projectConfig.widgetCompile = true; 1728 SourceMapGenerator.initInstance(this.rollup); 1729 this.rollup.mockCompileContextInfo(); 1730 const moduleMode = new ModuleModeMock(this.rollup); 1731 moduleMode.generateCompileContextInfoMock(this.rollup); 1732 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1733 SourceMapGenerator.cleanSourceMapObject(); 1734 }); 1735 1736 mocha.it('18-7: test generateCompileContext widget compile under build preview', function () { 1737 this.rollup.preview(); 1738 this.rollup.share.projectConfig.widgetCompile = true; 1739 SourceMapGenerator.initInstance(this.rollup); 1740 this.rollup.mockCompileContextInfo(); 1741 const moduleMode = new ModuleModeMock(this.rollup); 1742 moduleMode.generateCompileContextInfoMock(this.rollup); 1743 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1744 SourceMapGenerator.cleanSourceMapObject(); 1745 }); 1746 1747 mocha.it('18-8: test generateCompileContext widget compile under build hotReload', function () { 1748 this.rollup.hotReload(); 1749 this.rollup.share.projectConfig.widgetCompile = true; 1750 SourceMapGenerator.initInstance(this.rollup); 1751 this.rollup.mockCompileContextInfo(); 1752 const moduleMode = new ModuleModeMock(this.rollup); 1753 moduleMode.generateCompileContextInfoMock(this.rollup); 1754 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1755 SourceMapGenerator.cleanSourceMapObject(); 1756 }); 1757 1758 mocha.it('18-9: test generateCompileContext has router map entries', function () { 1759 this.rollup.build(); 1760 SourceMapGenerator.initInstance(this.rollup); 1761 this.rollup.mockCompileContextInfo(); 1762 this.rollup.share.projectConfig.arkRouterMap = [ 1763 { 1764 'ohmurl': '@normalized:N&&&har/src/main/ets/calc&' 1765 }, 1766 { 1767 'ohmurl': '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 1768 } 1769 ]; 1770 const moduleMode = new ModuleModeMock(this.rollup); 1771 moduleMode.generateCompileContextInfoMock(this.rollup); 1772 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1773 SourceMapGenerator.cleanSourceMapObject(); 1774 }); 1775 1776 mocha.it('18-10: test generateCompileContext has declaration entries', function () { 1777 this.rollup.build(); 1778 SourceMapGenerator.initInstance(this.rollup); 1779 this.rollup.mockCompileContextInfo(); 1780 this.rollup.share.projectConfig.declarationEntry = [ 1781 '@normalized:N&&&har/src/main/ets/MyWorker&', 1782 '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 1783 ]; 1784 const moduleMode = new ModuleModeMock(this.rollup); 1785 moduleMode.generateCompileContextInfoMock(this.rollup); 1786 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1787 SourceMapGenerator.cleanSourceMapObject(); 1788 }); 1789 1790 mocha.it('18-12: test generateCompileContext accurate update version', function () { 1791 this.rollup.build(); 1792 SourceMapGenerator.initInstance(this.rollup); 1793 this.rollup.mockCompileContextInfo(); 1794 this.rollup.share.projectConfig.declarationEntry = [ 1795 '@normalized:N&&&har/src/main/ets/MyWorker&', 1796 '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 1797 ]; 1798 this.rollup.share.projectConfig.updateVersionInfo = { 1799 "bytecodeHar": { 1800 "har1": "1.0.1", 1801 "har2": "2.0.0" 1802 } 1803 }; 1804 const moduleMode: ModuleModeMock = new ModuleModeMock(this.rollup); 1805 moduleMode.generateCompileContextInfoMock(this.rollup); 1806 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 1807 SourceMapGenerator.cleanSourceMapObject(); 1808 }); 1809 1810 mocha.it('18-11: test generateCompileContext has not exist moduleId', function () { 1811 this.rollup.build(); 1812 SourceMapGenerator.initInstance(this.rollup); 1813 this.rollup.mockCompileContextInfo(); 1814 const moduleMode = new ModuleModeMock(this.rollup); 1815 1816 const logger = moduleMode.logger; 1817 const loggerStub = sinon.stub(logger, 'error'); 1818 const red: string = '\u001b[31m'; 1819 const reset: string = '\u001b[39m'; 1820 const entryObjName:string = 'test'; 1821 const moduleId:string = 'd:/test.ets'; 1822 try { 1823 moduleMode.projectConfig.entryObj[entryObjName]=moduleId; 1824 moduleMode.projectConfig.cardEntryObj[entryObjName]=moduleId; 1825 moduleMode.generateCompileContextInfoMock(this.rollup); 1826 } catch (e) { 1827 } 1828 1829 expect(loggerStub.getCall(0).calledWith(red, `ArkTS:INTERNAL ERROR: Failed to find module info.\n` + 1830 `Error Message: Failed to find module info with '${moduleId}' from the context information.`, reset)).to.be.true; 1831 1832 loggerStub.restore(); 1833 SourceMapGenerator.cleanSourceMapObject(); 1834 }); 1835}); 1836