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'; 24import { EventEmitter } from 'events'; 25 26import { toUnixPath } from '../../../lib/utils'; 27import { SourceMapGenerator } from '../../../lib/fast_build/ark_compiler/generate_sourcemap'; 28import { shouldETSOrTSFileTransformToJS } from '../../../lib/fast_build/ark_compiler/utils'; 29import { 30 RELEASE, 31 DEBUG, 32 ES2ABC, 33 MODULES_ABC, 34 EXTNAME_TS, 35 EXTNAME_JS, 36 EXTNAME_ETS, 37 OH_MODULES, 38 GEN_ABC_PLUGIN_NAME, 39 TS2ABC 40} from '../../../lib/fast_build/ark_compiler/common/ark_define'; 41import RollUpPluginMock from '../mock/rollup_mock/rollup_plugin_mock'; 42import ModuleModeMock from '../mock/class_mock/module_mode_mock'; 43import { ModuleHotreloadMode } from '../../../lib/fast_build/ark_compiler/module/module_hotreload_mode'; 44import { ModuleMode } from '../../../lib/fast_build/ark_compiler/module/module_mode'; 45import { 46 ENTRYABILITY_TS_PATH_DEFAULT, 47 ENTRYABILITY_JS_PATH_DEFAULT, 48 INDEX_ETS_PATH_DEFAULT, 49 INDEX_JS_PATH_DEFAULT, 50 ENTRYABILITY_TS_RECORDNAME, 51 ENTRYABILITY_JS_RECORDNAME, 52 INDEX_ETS_RECORDNAME, 53 ENTRYABILITY_TS_NORMALIZED_RECORDNAME, 54 ENTRYABILITY_JS_NORMALIZED_RECORDNAME, 55 INDEX_ETS_NORMALIZED_RECORDNAME, 56 PKG_MODULES, 57 ENTRY_MODULE_NAME_DEFAULT, 58 TEST, 59 NEWFILE, 60 ENTRY_MODULE_VERSION_DEFAULT 61} from '../mock/rollup_mock/common'; 62import projectConfig from '../utils/processProjectConfig'; 63import { 64 EXPECT_SOURCEMAP_JSON, 65 PKG_MODULES_OHPM_HYPIUM, 66 ES2ABC_PATH, 67 DEBUG_INFO, 68 BUILD_NPM, 69 BUILD_INFO, 70 PREVIEW_DEBUG_INFO, 71 PREVIEW_DEBUG_NPM, 72 DEFAULT_ETS, 73 PREVIEW_MODULES_ABC, 74 BUILD_CACHE, 75 PREVIEW_DEBUG_CACHE, 76 TEST_TS, 77 ENTRY_LIST, 78 OUTPUT, 79 FILE_THREADS, 80 MERGE_ABC, 81 CACHE_FILE, 82 TARGET_API_VERSION 83} from '../mock/rollup_mock/path_config'; 84import { 85 scanFiles, 86 sleep, 87 cpus 88} from "../utils/utils"; 89import { AOT_FULL } from '../../../lib/pre_define'; 90import { 91 ArkObfuscator 92} from 'arkguard'; 93import { 94 ArkTSErrorDescription, 95 ArkTSInternalErrorDescription, 96 ErrorCode 97} from '../../../lib/fast_build/ark_compiler/error_code'; 98import { 99 CommonLogger, 100 LogData, 101 LogDataFactory 102} from '../../../lib/fast_build/ark_compiler/logger'; 103 104function checkGenerateEs2AbcCmdExpect(cmdArgs: Array<object>, compatibleSdkVersion: string, byteCodeHar: boolean): void { 105 const fileThreads: number = cpus(); 106 107 expect(cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 108 if (!byteCodeHar) { 109 expect(cmdArgs[1] === OUTPUT).to.be.true; 110 expect(cmdArgs[2] === FILE_THREADS).to.be.true; 111 expect(cmdArgs[3] === `\"${fileThreads}\"`).to.be.true; 112 expect(cmdArgs[4] === MERGE_ABC).to.be.true; 113 expect(cmdArgs[5].indexOf(compatibleSdkVersion) > 0).to.be.true; 114 } 115 expect(cmdArgs[1] === ENTRY_LIST).to.be.true; 116 expect(cmdArgs[2] === OUTPUT).to.be.true; 117 expect(cmdArgs[3] === FILE_THREADS).to.be.true; 118 expect(cmdArgs[4] === `\"${fileThreads}\"`).to.be.true; 119 expect(cmdArgs[5] === MERGE_ABC).to.be.true; 120 expect(cmdArgs[6].indexOf(compatibleSdkVersion) > 0).to.be.true; 121} 122 123mocha.describe('test module_mode file api', function () { 124 mocha.before(function () { 125 this.rollup = new RollUpPluginMock(); 126 }); 127 128 mocha.after(() => { 129 delete this.rollup; 130 }); 131 132 mocha.it('1-1: test collectModuleFileList under build debug', function () { 133 this.rollup.build(); 134 SourceMapGenerator.initInstance(this.rollup); 135 const moduleMode = new ModuleModeMock(this.rollup); 136 const fileList = this.rollup.getModuleIds(); 137 for (const filePath of fileList) { 138 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 139 const moduleInfo = this.rollup.getModuleInfo(filePath); 140 moduleInfo.setIsNodeEntryFile(true); 141 moduleInfo.setIsLocalDependency(false); 142 } 143 } 144 moduleMode.projectConfig.packageDir = OH_MODULES; 145 moduleMode.collectModuleFileListMock(this.rollup); 146 moduleMode.moduleInfos.forEach(moduleInfo => { 147 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 148 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 149 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 150 151 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 152 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 153 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 154 155 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 156 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 157 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 158 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 159 }); 160 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 161 SourceMapGenerator.cleanSourceMapObject(); 162 }); 163 164 mocha.it('1-2: test collectModuleFileList under build release', function () { 165 this.rollup.build(RELEASE); 166 SourceMapGenerator.initInstance(this.rollup); 167 const moduleMode = new ModuleModeMock(this.rollup); 168 const fileList = this.rollup.getModuleIds(); 169 for (const filePath of fileList) { 170 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 171 const moduleInfo = this.rollup.getModuleInfo(filePath); 172 moduleInfo.setIsNodeEntryFile(true); 173 moduleInfo.setIsLocalDependency(false); 174 } 175 } 176 moduleMode.projectConfig.packageDir = OH_MODULES; 177 moduleMode.collectModuleFileListMock(this.rollup); 178 moduleMode.moduleInfos.forEach(moduleInfo => { 179 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 180 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 181 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 182 183 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 184 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 185 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 186 187 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 188 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 189 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 190 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 191 }); 192 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 193 SourceMapGenerator.cleanSourceMapObject(); 194 }); 195 196 mocha.it('1-3: test collectModuleFileList under preview debug', function () { 197 this.rollup.preview(); 198 SourceMapGenerator.initInstance(this.rollup); 199 const moduleMode = new ModuleModeMock(this.rollup); 200 const fileList = this.rollup.getModuleIds(); 201 for (const filePath of fileList) { 202 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 203 const moduleInfo = this.rollup.getModuleInfo(filePath); 204 moduleInfo.setIsNodeEntryFile(true); 205 moduleInfo.setIsLocalDependency(false); 206 } 207 } 208 moduleMode.projectConfig.packageDir = OH_MODULES; 209 moduleMode.collectModuleFileListMock(this.rollup); 210 moduleMode.moduleInfos.forEach(moduleInfo => { 211 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 212 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 213 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 214 215 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 216 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 217 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 218 219 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 220 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 221 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 222 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 223 }); 224 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 225 SourceMapGenerator.cleanSourceMapObject(); 226 }); 227 228 mocha.it('1-4: test collectModuleFileList under hot reload debug', function () { 229 this.rollup.hotReload(); 230 SourceMapGenerator.initInstance(this.rollup); 231 const moduleMode = new ModuleModeMock(this.rollup); 232 const fileList = this.rollup.getModuleIds(); 233 for (const filePath of fileList) { 234 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 235 const moduleInfo = this.rollup.getModuleInfo(filePath); 236 moduleInfo.setIsNodeEntryFile(true); 237 moduleInfo.setIsLocalDependency(false); 238 } 239 } 240 moduleMode.projectConfig.packageDir = OH_MODULES; 241 moduleMode.collectModuleFileListMock(this.rollup); 242 moduleMode.moduleInfos.forEach(moduleInfo => { 243 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 244 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 245 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 246 247 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 248 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 249 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 250 251 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 252 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 253 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 254 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 255 }); 256 expect(moduleMode.pkgEntryInfos.size != 0).to.be.true; 257 SourceMapGenerator.cleanSourceMapObject(); 258 }); 259 260 mocha.it('1-5: test collectModuleFileList useNormalizedOHMUrl under build debug', function () { 261 this.rollup.build(); 262 SourceMapGenerator.initInstance(this.rollup); 263 this.rollup.useNormalizedOHMUrl(); 264 this.rollup.share.projectConfig.pkgContextInfo = { 265 'entry': { 266 'packageName': 'entry', 267 'bundleName': '', 268 'moduleName': '', 269 'version': '', 270 'entryPath': 'Index.ets', 271 'isSO': false 272 } 273 }; 274 const moduleMode = new ModuleModeMock(this.rollup); 275 const fileList = this.rollup.getModuleIds(); 276 for (const filePath of fileList) { 277 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 278 const moduleInfo = this.rollup.getModuleInfo(filePath); 279 moduleInfo.setIsNodeEntryFile(true); 280 moduleInfo.setIsLocalDependency(false); 281 moduleInfo.meta.pkgName = 'entry'; 282 } 283 } 284 moduleMode.projectConfig.packageDir = OH_MODULES; 285 moduleMode.collectModuleFileListMock(this.rollup); 286 moduleMode.moduleInfos.forEach(moduleInfo => { 287 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 288 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 289 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 290 291 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 292 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 293 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 294 295 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 296 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 297 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 298 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 299 }); 300 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 301 SourceMapGenerator.cleanSourceMapObject(); 302 }); 303 304 mocha.it('1-6: test collectModuleFileList useNormalizedOHMUrl under build release', function () { 305 this.rollup.build(RELEASE); 306 SourceMapGenerator.initInstance(this.rollup); 307 this.rollup.useNormalizedOHMUrl(); 308 this.rollup.share.projectConfig.pkgContextInfo = { 309 'entry': { 310 'packageName': 'entry', 311 'bundleName': '', 312 'moduleName': '', 313 'version': '', 314 'entryPath': 'Index.ets', 315 'isSO': false 316 } 317 }; 318 const moduleMode = new ModuleModeMock(this.rollup); 319 const fileList = this.rollup.getModuleIds(); 320 for (const filePath of fileList) { 321 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 322 const moduleInfo = this.rollup.getModuleInfo(filePath); 323 moduleInfo.setIsNodeEntryFile(true); 324 moduleInfo.setIsLocalDependency(false); 325 moduleInfo.meta.pkgName = 'entry'; 326 } 327 } 328 moduleMode.projectConfig.packageDir = OH_MODULES; 329 moduleMode.collectModuleFileListMock(this.rollup); 330 moduleMode.moduleInfos.forEach(moduleInfo => { 331 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 332 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 333 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 334 335 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 336 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 337 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 338 339 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 340 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 341 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 342 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 343 }); 344 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 345 SourceMapGenerator.cleanSourceMapObject(); 346 }); 347 348 mocha.it('1-7: test collectModuleFileList useNormalizedOHMUrl under preview debug', function () { 349 this.rollup.preview(); 350 SourceMapGenerator.initInstance(this.rollup); 351 this.rollup.useNormalizedOHMUrl(); 352 this.rollup.share.projectConfig.pkgContextInfo = { 353 'entry': { 354 'packageName': 'entry', 355 'bundleName': '', 356 'moduleName': '', 357 'version': '', 358 'entryPath': 'Index.ets', 359 'isSO': false 360 } 361 }; 362 const moduleMode = new ModuleModeMock(this.rollup); 363 const fileList = this.rollup.getModuleIds(); 364 for (const filePath of fileList) { 365 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 366 const moduleInfo = this.rollup.getModuleInfo(filePath); 367 moduleInfo.setIsNodeEntryFile(true); 368 moduleInfo.setIsLocalDependency(false); 369 moduleInfo.meta.pkgName = 'entry'; 370 } 371 } 372 moduleMode.projectConfig.packageDir = OH_MODULES; 373 moduleMode.collectModuleFileListMock(this.rollup); 374 moduleMode.moduleInfos.forEach(moduleInfo => { 375 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 376 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 377 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 378 379 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 380 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 381 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 382 383 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 384 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 385 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 386 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 387 }); 388 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 389 SourceMapGenerator.cleanSourceMapObject(); 390 }); 391 392 mocha.it('1-8: test collectModuleFileList useNormalizedOHMUrl under hot reload debug', function () { 393 this.rollup.hotReload(); 394 SourceMapGenerator.initInstance(this.rollup); 395 this.rollup.useNormalizedOHMUrl(); 396 this.rollup.share.projectConfig.pkgContextInfo = { 397 'entry': { 398 'packageName': 'entry', 399 'bundleName': '', 400 'moduleName': '', 401 'version': '', 402 'entryPath': 'Index.ets', 403 'isSO': false 404 } 405 }; 406 const moduleMode = new ModuleModeMock(this.rollup); 407 const fileList = this.rollup.getModuleIds(); 408 for (const filePath of fileList) { 409 if (filePath.endsWith(EXTNAME_JS) || filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS)) { 410 const moduleInfo = this.rollup.getModuleInfo(filePath); 411 moduleInfo.setIsNodeEntryFile(true); 412 moduleInfo.setIsLocalDependency(false); 413 moduleInfo.meta.pkgName = 'entry'; 414 } 415 } 416 moduleMode.projectConfig.packageDir = OH_MODULES; 417 moduleMode.collectModuleFileListMock(this.rollup); 418 moduleMode.moduleInfos.forEach(moduleInfo => { 419 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 420 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 421 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 422 423 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_NORMALIZED_RECORDNAME) > 0 || 424 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_NORMALIZED_RECORDNAME) > 0 || 425 moduleInfo.recordName.indexOf(INDEX_ETS_NORMALIZED_RECORDNAME) > 0).to.be.true; 426 427 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 428 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 429 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 430 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 431 }); 432 expect(moduleMode.pkgEntryInfos.size == 7).to.be.true; 433 SourceMapGenerator.cleanSourceMapObject(); 434 }); 435 436 mocha.it('2-1-1: test addModuleInfoItem under build debug: isPackageModulesFile`s return is true', function () { 437 this.rollup.build(); 438 SourceMapGenerator.initInstance(this.rollup); 439 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 440 const moduleMode = new ModuleModeMock(this.rollup); 441 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 442 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 443 moduleMode.moduleInfos.forEach(value => { 444 expect(value.packageName === PKG_MODULES).to.be.true; 445 }); 446 SourceMapGenerator.cleanSourceMapObject(); 447 }); 448 449 mocha.it('2-1-2: test addModuleInfoItem under build debug: isPackageModulesFile`s return is false', function () { 450 this.rollup.build(); 451 SourceMapGenerator.initInstance(this.rollup); 452 const moduleMode = new ModuleModeMock(this.rollup); 453 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 454 moduleMode.moduleInfos.forEach(moduleInfo => { 455 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 456 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 457 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 458 459 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 460 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 461 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 462 463 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 464 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 465 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 466 467 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 468 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 469 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 470 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 471 }); 472 SourceMapGenerator.cleanSourceMapObject(); 473 }); 474 475 mocha.it('2-1-3: test addModuleInfoItem under build debug: extName is not null', function () { 476 this.rollup.build(); 477 SourceMapGenerator.initInstance(this.rollup); 478 const moduleMode = new ModuleModeMock(this.rollup); 479 moduleMode.addModuleInfoItemMock(this.rollup, false, EXTNAME_TS); 480 moduleMode.moduleInfos.forEach(value => { 481 expect(value.cacheFilePath.endsWith(EXTNAME_TS)).to.be.true; 482 }); 483 SourceMapGenerator.cleanSourceMapObject(); 484 }); 485 486 mocha.it('2-2: test addModuleInfoItem under build release', function () { 487 this.rollup.build(RELEASE); 488 SourceMapGenerator.initInstance(this.rollup); 489 const moduleMode = new ModuleModeMock(this.rollup); 490 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 491 moduleMode.moduleInfos.forEach(moduleInfo => { 492 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 493 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 494 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 495 496 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 497 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 498 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 499 500 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 501 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 502 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 503 504 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 505 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 506 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 507 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 508 }); 509 SourceMapGenerator.cleanSourceMapObject(); 510 }); 511 512 mocha.it('2-3: test addModuleInfoItem under preview debug', function () { 513 this.rollup.preview(); 514 SourceMapGenerator.initInstance(this.rollup); 515 const moduleMode = new ModuleModeMock(this.rollup); 516 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 517 moduleMode.moduleInfos.forEach(moduleInfo => { 518 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 519 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 520 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 521 522 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 523 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 524 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 525 526 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 527 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 528 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 529 530 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 531 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 532 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 533 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 534 }); 535 SourceMapGenerator.cleanSourceMapObject(); 536 }); 537 538 mocha.it('2-4: test addModuleInfoItem under hot reload debug', function () { 539 this.rollup.hotReload(); 540 SourceMapGenerator.initInstance(this.rollup); 541 const moduleMode = new ModuleModeMock(this.rollup); 542 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 543 moduleMode.moduleInfos.forEach(moduleInfo => { 544 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 545 moduleInfo.filePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 546 moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 547 548 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0 || 549 moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_JS_PATH_DEFAULT) > 0 || 550 moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 551 552 expect(moduleInfo.recordName.indexOf(ENTRYABILITY_TS_RECORDNAME) > 0 || 553 moduleInfo.recordName.indexOf(ENTRYABILITY_JS_RECORDNAME) > 0 || 554 moduleInfo.recordName.indexOf(INDEX_ETS_RECORDNAME) > 0).to.be.true; 555 556 expect(moduleInfo.sourceFile.indexOf(ENTRYABILITY_TS_PATH_DEFAULT.substring(1)) > 0 || 557 moduleInfo.sourceFile.indexOf(ENTRYABILITY_JS_PATH_DEFAULT.substring(1)) > 0 || 558 moduleInfo.sourceFile.indexOf(INDEX_JS_PATH_DEFAULT.substring(1)) > 0 || 559 moduleInfo.sourceFile.indexOf(INDEX_ETS_PATH_DEFAULT.substring(1)) > 0).to.be.true; 560 }); 561 SourceMapGenerator.cleanSourceMapObject(); 562 }); 563 564 mocha.it('2-5-1: test addModuleInfoItem under build debug: sourceFile equals sourcemap new key', function () { 565 this.rollup.build(); 566 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 567 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 568 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 569 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 570 }); 571 SourceMapGenerator.cleanSourceMapObject(); 572 }); 573 574 mocha.it('2-5-2: test addModuleInfoItem under build release: sourceFile equals sourcemap new key', function () { 575 this.rollup.build(RELEASE); 576 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 577 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 578 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 579 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 580 }); 581 SourceMapGenerator.cleanSourceMapObject(); 582 }); 583 584 mocha.it('2-5-3: test addModuleInfoItem under preview debug: sourceFile equals sourcemap new key', function () { 585 this.rollup.preview(); 586 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 587 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 588 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 589 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 590 }); 591 SourceMapGenerator.cleanSourceMapObject(); 592 }); 593 594 mocha.it('2-5-4: test addModuleInfoItem under hot reload debug: sourceFile equals sourcemap new key', function () { 595 this.rollup.hotReload(); 596 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 597 const moduleInfosAndSourceMap = ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 598 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 599 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 600 }); 601 SourceMapGenerator.cleanSourceMapObject(); 602 }); 603 604 mocha.it('2-6-1: test addModuleInfoItem under build debug: sourceFile equals sourcemap old key', function () { 605 this.rollup.build(); 606 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 607 sourceMapGenerator.setNewSoureMaps(false); 608 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 609 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 610 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 611 }); 612 SourceMapGenerator.cleanSourceMapObject(); 613 }); 614 615 mocha.it('2-6-2: test addModuleInfoItem under build release: sourceFile equals sourcemap old key', function () { 616 this.rollup.build(RELEASE); 617 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 618 sourceMapGenerator.setNewSoureMaps(false); 619 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 620 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 621 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 622 }); 623 SourceMapGenerator.cleanSourceMapObject(); 624 }); 625 626 mocha.it('2-6-3: test addModuleInfoItem under preview debug: sourceFile equals sourcemap old key', function () { 627 this.rollup.preview(); 628 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 629 sourceMapGenerator.setNewSoureMaps(false); 630 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 631 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 632 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 633 }); 634 SourceMapGenerator.cleanSourceMapObject(); 635 }); 636 637 mocha.it('2-6-4: test addModuleInfoItem under hot reload debug: sourceFile equals sourcemap old key', function () { 638 this.rollup.hotReload(); 639 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 640 sourceMapGenerator.setNewSoureMaps(false); 641 const moduleInfosAndSourceMap= ModuleModeMock.getModuleInfosAndSourceMapMock(this.rollup, sourceMapGenerator); 642 moduleInfosAndSourceMap.moduleInfos.forEach(value => { 643 expect(moduleInfosAndSourceMap.sourceMap[value.sourceFile]).to.exist; 644 }); 645 SourceMapGenerator.cleanSourceMapObject(); 646 }); 647 648 mocha.it('2-7-1: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is true', function () { 649 this.rollup.build(RELEASE); 650 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 651 sourceMapGenerator.setNewSoureMaps(true); 652 653 this.rollup.share.projectConfig = { 654 buildMode: 'Release' 655 } 656 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 657 options: { 658 enableFileNameObfuscation: true 659 } 660 }; 661 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 662 663 const moduleMode = new ModuleModeMock(this.rollup); 664 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 665 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 666 667 let index = 0; 668 moduleMode.moduleInfos.forEach(moduleInfo => { 669 if (index === 1) { 670 expect(moduleInfo.sourceFile == 'entry|entry|1.0.0|src/main/entryability/EntryAbility.js').to.be.true; 671 expect(moduleInfo.recordName == 'pkg_modules/src/main/pkg_modulesability/EntryAbility').to.be.true; 672 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 673 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 674 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 675 } 676 if (index === 2) { 677 expect(moduleInfo.sourceFile == 'entry|entry|1.0.0|src/main/pages/Index.js').to.be.true; 678 expect(moduleInfo.recordName == 'pkg_modules/src/main/pages/Index').to.be.true; 679 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 680 expect(moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 681 expect(moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 682 } 683 index++; 684 }); 685 SourceMapGenerator.cleanSourceMapObject(); 686 }); 687 688 mocha.it('2-7-2: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is true and old key', function () { 689 this.rollup.build(RELEASE); 690 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 691 sourceMapGenerator.setNewSoureMaps(false); 692 693 this.rollup.share.projectConfig = { 694 buildMode: 'Release' 695 } 696 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 697 options: { 698 enableFileNameObfuscation: true 699 } 700 }; 701 this.rollup.share.projectConfig.modulePath = this.rollup.share.projectConfig.projectPath; 702 703 const moduleMode = new ModuleModeMock(this.rollup); 704 moduleMode.projectConfig.packageDir = ENTRY_MODULE_NAME_DEFAULT; 705 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 706 707 let index = 0; 708 moduleMode.moduleInfos.forEach(moduleInfo => { 709 if (index === 1) { 710 expect(moduleInfo.sourceFile == 'entry/build/entry/src/main/entryability/EntryAbility.ts').to.be.true; 711 expect(moduleInfo.recordName == 'pkg_modules/src/main/pkg_modulesability/EntryAbility').to.be.true; 712 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 713 expect(moduleInfo.filePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 714 expect(moduleInfo.cacheFilePath.indexOf(ENTRYABILITY_TS_PATH_DEFAULT) > 0).to.be.true; 715 } 716 if (index === 2) { 717 expect(moduleInfo.sourceFile == 'entry/build/entry/src/main/pages/Index.ets').to.be.true; 718 expect(moduleInfo.recordName == 'pkg_modules/src/main/pages/Index').to.be.true; 719 expect(moduleInfo.packageName === PKG_MODULES).to.be.true; 720 expect(moduleInfo.filePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 721 expect(moduleInfo.cacheFilePath.indexOf(INDEX_ETS_PATH_DEFAULT) > 0).to.be.true; 722 } 723 index++; 724 }); 725 SourceMapGenerator.cleanSourceMapObject(); 726 }); 727 728 mocha.it('2-7-3: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is false', function () { 729 this.rollup.build(RELEASE); 730 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 731 sourceMapGenerator.setNewSoureMaps(true); 732 733 this.rollup.share.projectConfig = { 734 buildMode: 'Release' 735 } 736 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 737 options: { 738 enableFileNameObfuscation: true 739 } 740 }; 741 742 const arkguardConfig = { 743 mRenameFileName: { 744 mEnable: true, 745 mNameGeneratorType: 1, 746 mReservedFileNames: [ 747 "entry", 748 "src", 749 "main" 750 ] 751 }, 752 mPerformancePrinter: [] 753 } 754 755 let arkObfuscator: ArkObfuscator = new ArkObfuscator(); 756 arkObfuscator.init(arkguardConfig); 757 758 const moduleMode = new ModuleModeMock(this.rollup); 759 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 760 761 moduleMode.moduleInfos.forEach(moduleInfo => { 762 expect(moduleInfo.packageName === 'entry').to.be.true; 763 expect(/.*entry\|entry\|1\.0\.0\|src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.sourceFile)).to.be.true; 764 expect(/.*\/entry\/src\/main\/[a-z]\/[a-z].*/.test(moduleInfo.recordName)).to.be.true; 765 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.filePath)).to.be.true; 766 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.cacheFilePath)).to.be.true; 767 }); 768 SourceMapGenerator.cleanSourceMapObject(); 769 }); 770 771 mocha.it('2-7-4: test addModuleInfoItem under build release with obfuscatedEnabled and isPackageModulesFile`s return is false and old key', function () { 772 this.rollup.build(RELEASE); 773 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 774 sourceMapGenerator.setNewSoureMaps(false); 775 776 this.rollup.share.projectConfig = { 777 buildMode: 'Release' 778 } 779 this.rollup.share.projectConfig.obfuscationMergedObConfig = { 780 options: { 781 enableFileNameObfuscation: true 782 } 783 }; 784 785 const moduleMode = new ModuleModeMock(this.rollup); 786 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 787 788 moduleMode.moduleInfos.forEach(moduleInfo => { 789 expect(moduleInfo.packageName === 'entry').to.be.true; 790 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.sourceFile)).to.be.true; 791 expect(/.*\/entry\/src\/main\/[a-z]\/[a-z].*/.test(moduleInfo.recordName)).to.be.true; 792 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.filePath)).to.be.true; 793 expect(/.*\/src\/main\/[a-z]\/[a-z]\.(js|ts|ets).*/.test(moduleInfo.cacheFilePath)).to.be.true; 794 }); 795 SourceMapGenerator.cleanSourceMapObject(); 796 }); 797 798 mocha.it('3-1-1: test updateCachedSourceMaps under build debug: cacheSourceMapPath not exist', function () { 799 this.rollup.build(); 800 const moduleMode = new ModuleModeMock(this.rollup); 801 moduleMode.cacheSourceMapPath = ''; 802 803 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 804 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 805 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 806 807 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 808 sourceMapGenerator.setNewSoureMaps(false); 809 for (const key in cacheSourceMapObject) { 810 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 811 } 812 813 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 814 for (const key of Object.keys(newSourceMaps)) { 815 delete newSourceMaps[key]; 816 } 817 SourceMapGenerator.cleanSourceMapObject(); 818 }); 819 820 mocha.it('3-1-2: test updateCachedSourceMaps under build debug: compileFileList has not sourceFileAbsolutePath', function () { 821 this.rollup.build(); 822 const moduleMode = new ModuleModeMock(this.rollup); 823 moduleMode.cacheSourceMapPath = EXPECT_SOURCEMAP_JSON; 824 825 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 826 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: '' }); 827 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), { FILE: '' }); 828 829 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 830 sourceMapGenerator.setNewSoureMaps(false); 831 for (const key in cacheSourceMapObject) { 832 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 833 } 834 835 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: TEST }); 836 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 837 sourceMapGenerator.setNewSoureMaps(false); 838 for (const key in cacheSourceMapObject) { 839 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 840 } 841 842 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), { FILE: TEST, NEWFILE: NEWFILE }); 843 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 844 sourceMapGenerator.setNewSoureMaps(false); 845 for (const key in cacheSourceMapObject) { 846 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 847 } 848 849 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 850 for (const key of Object.keys(newSourceMaps)) { 851 delete newSourceMaps[key]; 852 } 853 SourceMapGenerator.cleanSourceMapObject(); 854 }); 855 856 mocha.it('3-2: test updateCachedSourceMaps under build release', function () { 857 this.rollup.build(RELEASE); 858 const moduleMode = new ModuleModeMock(this.rollup); 859 moduleMode.cacheSourceMapPath = ''; 860 861 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 862 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 863 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 864 865 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 866 sourceMapGenerator.setNewSoureMaps(false); 867 for (const key in cacheSourceMapObject) { 868 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 869 } 870 871 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 872 for (const key of Object.keys(newSourceMaps)) { 873 delete newSourceMaps[key]; 874 } 875 SourceMapGenerator.cleanSourceMapObject(); 876 }); 877 878 mocha.it('3-3: test updateCachedSourceMaps under preview debug', function () { 879 this.rollup.preview(); 880 const moduleMode = new ModuleModeMock(this.rollup); 881 moduleMode.cacheSourceMapPath = ''; 882 883 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 884 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 885 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 886 887 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 888 sourceMapGenerator.setNewSoureMaps(false); 889 for (const key in cacheSourceMapObject) { 890 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 891 } 892 893 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 894 for (const key of Object.keys(newSourceMaps)) { 895 delete newSourceMaps[key]; 896 } 897 SourceMapGenerator.cleanSourceMapObject(); 898 }); 899 900 mocha.it('3-4: test updateCachedSourceMaps under hot reload debug', function () { 901 this.rollup.hotReload(); 902 const moduleMode = new ModuleModeMock(this.rollup); 903 moduleMode.cacheSourceMapPath = ''; 904 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 905 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT), {}); 906 sourceMapGenerator.updateSourceMap(path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT), {}); 907 908 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 909 sourceMapGenerator.setNewSoureMaps(false); 910 for (const key in cacheSourceMapObject) { 911 expect(sourceMapGenerator.getSourceMap(key) === cacheSourceMapObject[key]).to.be.true; 912 } 913 914 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 915 for (const key of Object.keys(newSourceMaps)) { 916 delete newSourceMaps[key]; 917 } 918 SourceMapGenerator.cleanSourceMapObject(); 919 }); 920 921 mocha.it('3-5: test updateCachedSourceMaps when ets(ts) file is transformed to js file', function () { 922 this.rollup.build(); 923 const moduleMode = new ModuleModeMock(this.rollup); 924 moduleMode.cacheSourceMapPath = ''; 925 926 let prefix = `${ENTRY_MODULE_NAME_DEFAULT}|${ENTRY_MODULE_NAME_DEFAULT}|${ENTRY_MODULE_VERSION_DEFAULT}|`; 927 const sourceMapGenerator: SourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 928 let moduleId: string = path.join(this.rollup.share.projectConfig.modulePath, INDEX_ETS_PATH_DEFAULT); 929 sourceMapGenerator.updateSourceMap(moduleId, {}); 930 931 let cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 932 if (shouldETSOrTSFileTransformToJS(moduleId, moduleMode.projectConfig)) { 933 expect(prefix + INDEX_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 934 } else { 935 expect(prefix + INDEX_ETS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 936 } 937 938 moduleId = path.join(this.rollup.share.projectConfig.modulePath, ENTRYABILITY_TS_PATH_DEFAULT); 939 sourceMapGenerator.updateSourceMap(moduleId, {}); 940 cacheSourceMapObject = sourceMapGenerator.updateCachedSourceMaps(); 941 if (shouldETSOrTSFileTransformToJS(moduleId, moduleMode.projectConfig)) { 942 expect(prefix + ENTRYABILITY_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 943 } else { 944 expect(prefix + ENTRYABILITY_JS_PATH_DEFAULT.substring(1) in cacheSourceMapObject).to.be.true; 945 } 946 947 let newSourceMaps = sourceMapGenerator.getSourceMaps(); 948 for (const key of Object.keys(newSourceMaps)) { 949 delete newSourceMaps[key]; 950 } 951 SourceMapGenerator.cleanSourceMapObject(); 952 }) 953 954 mocha.it('4-1: test generateCompileFilesInfo under build debug', function () { 955 this.rollup.build(); 956 SourceMapGenerator.initInstance(this.rollup); 957 const moduleMode = new ModuleModeMock(this.rollup); 958 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 959 moduleMode.generateCompileFilesInfoMock(false); 960 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 961 SourceMapGenerator.cleanSourceMapObject(); 962 }); 963 964 mocha.it('4-2: test generateCompileFilesInfo under build release', function () { 965 this.rollup.build(RELEASE); 966 SourceMapGenerator.initInstance(this.rollup); 967 const moduleMode = new ModuleModeMock(this.rollup); 968 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 969 moduleMode.generateCompileFilesInfoMock(false); 970 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 971 SourceMapGenerator.cleanSourceMapObject(); 972 }); 973 974 mocha.it('4-3: test generateCompileFilesInfo under preview debug', function () { 975 this.rollup.preview(); 976 SourceMapGenerator.initInstance(this.rollup); 977 const moduleMode = new ModuleModeMock(this.rollup); 978 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 979 moduleMode.generateCompileFilesInfoMock(false); 980 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 981 SourceMapGenerator.cleanSourceMapObject(); 982 }); 983 984 mocha.it('4-4: test generateCompileFilesInfo under hot reload debug', function () { 985 this.rollup.hotReload(); 986 SourceMapGenerator.initInstance(this.rollup); 987 const moduleMode = new ModuleModeMock(this.rollup); 988 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 989 moduleMode.generateCompileFilesInfoMock(false); 990 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 991 SourceMapGenerator.cleanSourceMapObject(); 992 }); 993 994 mocha.it('4-5: test generateCompileFilesInfo under exist abcPaths', function () { 995 this.rollup.hotReload(); 996 SourceMapGenerator.initInstance(this.rollup); 997 this.rollup.share.projectConfig.byteCodeHarInfo = { 998 'har': { 999 'abcPath': 'module.abc' 1000 } 1001 }; 1002 const moduleMode = new ModuleModeMock(this.rollup); 1003 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1004 moduleMode.generateCompileFilesInfoMock(true); 1005 expect(moduleMode.checkGenerateCompileFilesInfo(true) === true).to.be.true; 1006 SourceMapGenerator.cleanSourceMapObject(); 1007 }); 1008 1009 mocha.it('4-6: test generateCompileFilesInfo under hot reload debug incremental', function () { 1010 this.rollup.hotReload(); 1011 SourceMapGenerator.initInstance(this.rollup); 1012 this.rollup.share.projectConfig.byteCodeHarInfo = { 1013 'har': { 1014 'abcPath': 'module.abc' 1015 } 1016 }; 1017 const moduleMode = new ModuleModeMock(this.rollup); 1018 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1019 moduleMode.generateCompileFilesInfoMock(false); 1020 expect(moduleMode.checkGenerateCompileFilesInfo(false) === true).to.be.true; 1021 SourceMapGenerator.cleanSourceMapObject(); 1022 }); 1023 1024 mocha.it('4-7: test source language in filesInfo', function () { 1025 const jsonFilePath = path.join(this.rollup.share.projectConfig.projectPath, '/main/entryability/JsonTest.json'); 1026 fs.writeFileSync(jsonFilePath, '{}', 'utf-8'); 1027 this.rollup.build(); 1028 SourceMapGenerator.initInstance(this.rollup); 1029 const moduleMode = new ModuleMode(this.rollup); 1030 moduleMode.prepareForCompilation(this.rollup); 1031 this.rollup.share.allFiles.add(jsonFilePath); 1032 moduleMode.generateCompileFilesInfo(false); 1033 1034 const filesInfo = fs.readFileSync(moduleMode.filesInfoPath, 'utf-8'); 1035 const filesInfoLines = filesInfo.split('\n'); 1036 expect(filesInfoLines[0].endsWith('js')).to.be.true; 1037 expect(filesInfoLines[1].endsWith('ts')).to.be.true; 1038 expect(filesInfoLines[2].endsWith(';')).to.be.true; 1039 expect(filesInfoLines[3].endsWith('ets')).to.be.true; 1040 1041 SourceMapGenerator.cleanSourceMapObject(); 1042 fs.unlinkSync(jsonFilePath); 1043 }); 1044 1045 mocha.it('5-1: test generateNpmEntriesInfo under build debug', function () { 1046 this.rollup.build(); 1047 SourceMapGenerator.initInstance(this.rollup); 1048 const moduleMode = new ModuleModeMock(this.rollup); 1049 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1050 moduleMode.generateNpmEntriesInfoMock(); 1051 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1052 SourceMapGenerator.cleanSourceMapObject(); 1053 }); 1054 1055 mocha.it('5-2: test generateNpmEntriesInfo under build release', function () { 1056 this.rollup.build(RELEASE); 1057 SourceMapGenerator.initInstance(this.rollup); 1058 const moduleMode = new ModuleModeMock(this.rollup); 1059 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1060 moduleMode.generateNpmEntriesInfoMock(); 1061 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1062 SourceMapGenerator.cleanSourceMapObject(); 1063 }); 1064 1065 mocha.it('5-3: test generateNpmEntriesInfo under preview debug', function () { 1066 this.rollup.preview(); 1067 SourceMapGenerator.initInstance(this.rollup); 1068 const moduleMode = new ModuleModeMock(this.rollup); 1069 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1070 moduleMode.generateNpmEntriesInfoMock(); 1071 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1072 SourceMapGenerator.cleanSourceMapObject(); 1073 }); 1074 1075 mocha.it('5-4: test generateNpmEntriesInfo under hot reload debug', function () { 1076 this.rollup.hotReload(); 1077 SourceMapGenerator.initInstance(this.rollup); 1078 const moduleMode = new ModuleModeMock(this.rollup); 1079 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1080 moduleMode.generateNpmEntriesInfoMock(); 1081 expect(moduleMode.checkGenerateNpmEntriesInfo() === true).to.be.true; 1082 SourceMapGenerator.cleanSourceMapObject(); 1083 }); 1084 1085 mocha.it('6-1: test generateAbcCacheFilesInfo under build debug', function () { 1086 this.rollup.build(); 1087 SourceMapGenerator.initInstance(this.rollup); 1088 const moduleMode = new ModuleModeMock(this.rollup); 1089 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1090 moduleMode.generateAbcCacheFilesInfoMock(); 1091 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1092 SourceMapGenerator.cleanSourceMapObject(); 1093 }); 1094 1095 mocha.it('6-2: test generateAbcCacheFilesInfo under build release', function () { 1096 this.rollup.build(RELEASE); 1097 SourceMapGenerator.initInstance(this.rollup); 1098 const moduleMode = new ModuleModeMock(this.rollup); 1099 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1100 moduleMode.generateAbcCacheFilesInfoMock(); 1101 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1102 SourceMapGenerator.cleanSourceMapObject(); 1103 }); 1104 1105 mocha.it('6-3: test generateAbcCacheFilesInfo under preview debug', function () { 1106 this.rollup.preview(); 1107 SourceMapGenerator.initInstance(this.rollup); 1108 const moduleMode = new ModuleModeMock(this.rollup); 1109 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1110 moduleMode.generateAbcCacheFilesInfoMock(); 1111 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1112 SourceMapGenerator.cleanSourceMapObject(); 1113 }); 1114 1115 mocha.it('6-4: test generateAbcCacheFilesInfo under hot reload debug', function () { 1116 this.rollup.hotReload(); 1117 SourceMapGenerator.initInstance(this.rollup); 1118 const moduleMode = new ModuleModeMock(this.rollup); 1119 moduleMode.addModuleInfoItemMock(this.rollup, false, ''); 1120 moduleMode.generateAbcCacheFilesInfoMock(); 1121 expect(moduleMode.checkGenerateAbcCacheFilesInfo() === true).to.be.true; 1122 SourceMapGenerator.cleanSourceMapObject(); 1123 }); 1124 1125 mocha.it('6-5: test generateAbcCacheFilesInfo add bchar under build debug', function () { 1126 this.rollup.build(); 1127 SourceMapGenerator.initInstance(this.rollup); 1128 const moduleMode = new ModuleModeMock(this.rollup); 1129 moduleMode.projectConfig.cacheBytecodeHar = true; 1130 moduleMode.projectConfig.projectTopDir = "D:/project"; 1131 moduleMode.projectConfig.cachePath = "D:/project/cache" 1132 moduleMode.abcPaths = [ 1133 "D:/project/oh_modules/bchar1/modules.abc", 1134 "D:/project/oh_modules/bchar2/modules.abc", 1135 ]; 1136 moduleMode.generateAbcCacheFilesInfoMock(); 1137 const cacheInfo = fs.readFileSync(moduleMode.cacheFilePath, 'utf-8'); 1138 // delete default npmEntries line 1139 const lines = cacheInfo.split('\n'); 1140 lines.shift(); 1141 const res = lines.join('\n'); 1142 const expectRes = 'D:/project/oh_modules/bchar1/modules.abc;D:/project/cache/oh_modules/bchar1/modules.protoBin\n' + 1143 'D:/project/oh_modules/bchar2/modules.abc;D:/project/cache/oh_modules/bchar2/modules.protoBin\n'; 1144 expect(res === expectRes).to.be.true; 1145 SourceMapGenerator.cleanSourceMapObject(); 1146 }); 1147 1148 mocha.it('7-1: test getPackageEntryInfo under build debug', function () { 1149 this.rollup.build(); 1150 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1151 const moduleMode = new ModuleModeMock(this.rollup); 1152 moduleMode.checkGetPackageEntryInfo(this.rollup); 1153 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1154 }); 1155 1156 mocha.it('7-2: test getPackageEntryInfo under build release', function () { 1157 this.rollup.build(RELEASE); 1158 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1159 const moduleMode = new ModuleModeMock(this.rollup); 1160 moduleMode.checkGetPackageEntryInfo(this.rollup); 1161 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1162 }); 1163 1164 mocha.it('7-3: test getPackageEntryInfo under preview debug', function () { 1165 this.rollup.preview(); 1166 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1167 const moduleMode = new ModuleModeMock(this.rollup); 1168 moduleMode.checkGetPackageEntryInfo(this.rollup); 1169 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1170 }); 1171 1172 mocha.it('7-4: test getPackageEntryInfo under hot reload debug', function () { 1173 this.rollup.hotReload(); 1174 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1175 const moduleMode = new ModuleModeMock(this.rollup); 1176 moduleMode.checkGetPackageEntryInfo(this.rollup); 1177 expect(moduleMode.pkgEntryInfos.size !== 0).to.be.true; 1178 }); 1179 1180 mocha.it('7-5: test the error message of getPackageEntryInfo under build debug', function () { 1181 this.rollup.build(); 1182 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1183 const errInfo: LogData = LogDataFactory.newInstance( 1184 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1185 ArkTSInternalErrorDescription, 1186 sinon.match.any 1187 ); 1188 const moduleMode = new ModuleModeMock(this.rollup); 1189 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1190 const isTestErrorLog = true; 1191 try { 1192 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1193 } catch (e) { 1194 } 1195 expect(stub.calledWith(errInfo)).to.be.true; 1196 stub.restore(); 1197 }); 1198 1199 mocha.it('7-5-1: test the error message of getPackageEntryInfo under build debug ' + 1200 'without getHvigorConsoleLogger', function () { 1201 this.rollup.build(); 1202 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1203 const errInfo: LogData = LogDataFactory.newInstance( 1204 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1205 ArkTSInternalErrorDescription 1206 ); 1207 CommonLogger.destroyInstance(); 1208 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1209 this.rollup.share.getHvigorConsoleLogger = undefined; 1210 const moduleMode = new ModuleModeMock(this.rollup); 1211 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1212 const isTestErrorLog = true; 1213 try { 1214 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1215 } catch (e) { 1216 } 1217 expect(stub.calledWithMatch(errInfo.toString())).to.be.true; 1218 CommonLogger.destroyInstance(); 1219 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1220 stub.restore(); 1221 }); 1222 1223 mocha.it('7-6: test the error message of getPackageEntryInfo under build release', function () { 1224 this.rollup.build(RELEASE); 1225 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1226 const errInfo: LogData = LogDataFactory.newInstance( 1227 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1228 ArkTSInternalErrorDescription, 1229 sinon.match.any 1230 ); 1231 const moduleMode = new ModuleModeMock(this.rollup); 1232 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1233 const isTestErrorLog = true; 1234 try { 1235 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1236 } catch (e) { 1237 } 1238 expect(stub.calledWith(errInfo)).to.be.true; 1239 stub.restore(); 1240 }); 1241 1242 mocha.it('7-6-1: test the error message of getPackageEntryInfo under build release ' + 1243 'without getHvigorConsoleLogger', function () { 1244 this.rollup.build(RELEASE); 1245 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1246 const errInfo: LogData = LogDataFactory.newInstance( 1247 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1248 ArkTSInternalErrorDescription 1249 ); 1250 CommonLogger.destroyInstance(); 1251 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1252 this.rollup.share.getHvigorConsoleLogger = undefined; 1253 const moduleMode = new ModuleModeMock(this.rollup); 1254 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1255 const isTestErrorLog = true; 1256 try { 1257 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1258 } catch (e) { 1259 } 1260 expect(stub.calledWithMatch(errInfo.toString())).to.be.true; 1261 CommonLogger.destroyInstance(); 1262 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1263 stub.restore(); 1264 }); 1265 1266 mocha.it('7-7: test the error message of getPackageEntryInfo under preview debug', function () { 1267 this.rollup.preview(); 1268 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1269 const errInfo: LogData = LogDataFactory.newInstance( 1270 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1271 ArkTSInternalErrorDescription, 1272 sinon.match.any 1273 ); 1274 const moduleMode = new ModuleModeMock(this.rollup); 1275 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1276 const isTestErrorLog = true; 1277 try { 1278 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1279 } catch (e) { 1280 } 1281 expect(stub.calledWith(errInfo)).to.be.true; 1282 stub.restore(); 1283 }); 1284 1285 mocha.it('7-7-1: test the error message of getPackageEntryInfo under preview debug ' + 1286 'without getHvigorConsoleLogger', function () { 1287 this.rollup.preview(); 1288 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1289 const errInfo: LogData = LogDataFactory.newInstance( 1290 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1291 ArkTSInternalErrorDescription 1292 ); 1293 CommonLogger.destroyInstance(); 1294 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1295 this.rollup.share.getHvigorConsoleLogger = undefined; 1296 const moduleMode = new ModuleModeMock(this.rollup); 1297 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1298 const isTestErrorLog = true; 1299 try { 1300 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1301 } catch (e) { 1302 } 1303 expect(stub.calledWithMatch(errInfo.toString())).to.be.true; 1304 CommonLogger.destroyInstance(); 1305 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1306 stub.restore(); 1307 }); 1308 1309 mocha.it('7-8: test the error message of getPackageEntryInfo under hot reload debug', function () { 1310 this.rollup.hotReload(); 1311 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1312 const errInfo: LogData = LogDataFactory.newInstance( 1313 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1314 ArkTSInternalErrorDescription, 1315 sinon.match.any 1316 ); 1317 const moduleMode = new ModuleModeMock(this.rollup); 1318 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1319 const isTestErrorLog = true; 1320 try { 1321 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1322 } catch (e) { 1323 } 1324 expect(stub.calledWith(errInfo)).to.be.true; 1325 stub.restore(); 1326 }); 1327 1328 mocha.it('7-8-1: test the error message of getPackageEntryInfo under hot reload debug ' + 1329 'without getHvigorConsoleLogger', function () { 1330 this.rollup.hotReload(); 1331 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1332 const errInfo: LogData = LogDataFactory.newInstance( 1333 ErrorCode.ETS2BUNDLE_INTERNAL_UNABLE_TO_GET_MODULE_INFO_META_PKG_PATH, 1334 ArkTSInternalErrorDescription 1335 ); 1336 CommonLogger.destroyInstance(); 1337 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1338 this.rollup.share.getHvigorConsoleLogger = undefined; 1339 const moduleMode = new ModuleModeMock(this.rollup); 1340 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1341 const isTestErrorLog = true; 1342 try { 1343 moduleMode.checkGetPackageEntryInfo(this.rollup, isTestErrorLog); 1344 } catch (e) { 1345 } 1346 expect(stub.calledWithMatch(errInfo.toString())).to.be.true; 1347 CommonLogger.destroyInstance(); 1348 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1349 stub.restore(); 1350 }); 1351 1352 mocha.it('8-1: test buildModuleSourceMapInfo under build debug', async function () { 1353 this.rollup.build(); 1354 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1355 const moduleMode = new ModuleModeMock(this.rollup); 1356 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1357 await sleep(1000); 1358 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1359 SourceMapGenerator.cleanSourceMapObject(); 1360 }); 1361 1362 mocha.it('8-2: test buildModuleSourceMapInfo under build release', async function () { 1363 this.rollup.build(RELEASE); 1364 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1365 const moduleMode = new ModuleModeMock(this.rollup); 1366 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1367 await sleep(1000); 1368 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1369 SourceMapGenerator.cleanSourceMapObject(); 1370 }); 1371 1372 mocha.it('8-3: test buildModuleSourceMapInfo under preview debug', async function () { 1373 this.rollup.preview(); 1374 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1375 const moduleMode = new ModuleModeMock(this.rollup); 1376 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1377 await sleep(1000); 1378 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1379 SourceMapGenerator.cleanSourceMapObject(); 1380 }); 1381 1382 mocha.it('8-4: test buildModuleSourceMapInfo under hot reload debug', async function () { 1383 this.rollup.hotReload(); 1384 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1385 const moduleMode = new ModuleModeMock(this.rollup); 1386 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1387 await sleep(1000); 1388 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1389 SourceMapGenerator.cleanSourceMapObject(); 1390 }); 1391 1392 mocha.it('8-5: test the error message of buildModuleSourceMapInfo under build debug', async function () { 1393 this.rollup.build(); 1394 const errInfo: LogData = LogDataFactory.newInstance( 1395 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1396 ArkTSInternalErrorDescription, 1397 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1398 ); 1399 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1400 const moduleMode = new ModuleModeMock(this.rollup); 1401 const stub = sinon.stub(sourceMapGenerator.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1402 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1403 sourceMapGenerator.setSourceMapPath(''); 1404 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1405 await sleep(100); 1406 expect(stub.calledWith(errInfo)).to.be.true; 1407 stub.restore(); 1408 copyFileSyncStub.restore(); 1409 SourceMapGenerator.cleanSourceMapObject(); 1410 }); 1411 1412 mocha.it('8-5-1: test the error message of buildModuleSourceMapInfo under build debug ' + 1413 'without getHvigorConsoleLogger', async function () { 1414 this.rollup.build(); 1415 const errInfo: LogData = LogDataFactory.newInstance( 1416 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1417 ArkTSInternalErrorDescription, 1418 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1419 ); 1420 CommonLogger.destroyInstance(); 1421 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1422 this.rollup.share.getHvigorConsoleLogger = undefined; 1423 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1424 const moduleMode = new ModuleModeMock(this.rollup); 1425 const stub = sinon.stub(sourceMapGenerator.logger, 'throwArkTsCompilerError'); 1426 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1427 sourceMapGenerator.setSourceMapPath(''); 1428 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1429 await sleep(100); 1430 expect(stub.calledWith(errInfo.toString())).to.be.true; 1431 CommonLogger.destroyInstance(); 1432 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1433 stub.restore(); 1434 copyFileSyncStub.restore(); 1435 SourceMapGenerator.cleanSourceMapObject(); 1436 }); 1437 1438 mocha.it('8-6: test the error message of buildModuleSourceMapInfo under build release', async function () { 1439 this.rollup.build(RELEASE); 1440 const errInfo: LogData = LogDataFactory.newInstance( 1441 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1442 ArkTSInternalErrorDescription, 1443 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1444 ); 1445 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1446 const moduleMode = new ModuleModeMock(this.rollup); 1447 const stub = sinon.stub(sourceMapGenerator.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1448 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1449 sourceMapGenerator.setSourceMapPath(''); 1450 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1451 await sleep(100); 1452 expect(stub.calledWith(errInfo)).to.be.true; 1453 stub.restore(); 1454 copyFileSyncStub.restore(); 1455 SourceMapGenerator.cleanSourceMapObject(); 1456 }); 1457 1458 mocha.it('8-6-1: test the error message of buildModuleSourceMapInfo under build release ' + 1459 'without getHvigorConsoleLogger', async function () { 1460 this.rollup.build(RELEASE); 1461 const errInfo: LogData = LogDataFactory.newInstance( 1462 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1463 ArkTSInternalErrorDescription, 1464 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1465 ); 1466 CommonLogger.destroyInstance(); 1467 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1468 this.rollup.share.getHvigorConsoleLogger = undefined; 1469 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1470 const moduleMode = new ModuleModeMock(this.rollup); 1471 const stub = sinon.stub(sourceMapGenerator.logger, 'throwArkTsCompilerError'); 1472 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1473 sourceMapGenerator.setSourceMapPath(''); 1474 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1475 await sleep(100); 1476 expect(stub.calledWith(errInfo.toString())).to.be.true; 1477 CommonLogger.destroyInstance(); 1478 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1479 stub.restore(); 1480 copyFileSyncStub.restore(); 1481 SourceMapGenerator.cleanSourceMapObject(); 1482 }); 1483 1484 mocha.it('8-7: test the error message of buildModuleSourceMapInfo under preview debug', async function () { 1485 this.rollup.preview(); 1486 const errInfo: LogData = LogDataFactory.newInstance( 1487 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1488 ArkTSInternalErrorDescription, 1489 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1490 ); 1491 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1492 const moduleMode = new ModuleModeMock(this.rollup); 1493 const stub = sinon.stub(sourceMapGenerator.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1494 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1495 sourceMapGenerator.setSourceMapPath(''); 1496 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1497 await sleep(100); 1498 expect(stub.calledWith(errInfo)).to.be.true; 1499 stub.restore(); 1500 copyFileSyncStub.restore(); 1501 SourceMapGenerator.cleanSourceMapObject(); 1502 }); 1503 1504 mocha.it('8-7-1: test the error message of buildModuleSourceMapInfo under preview debug ' + 1505 'without getHvigorConsoleLogger', async function () { 1506 this.rollup.preview(); 1507 const errInfo: LogData = LogDataFactory.newInstance( 1508 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1509 ArkTSInternalErrorDescription, 1510 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1511 ); 1512 CommonLogger.destroyInstance(); 1513 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1514 this.rollup.share.getHvigorConsoleLogger = undefined; 1515 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1516 const moduleMode = new ModuleModeMock(this.rollup); 1517 const stub = sinon.stub(sourceMapGenerator.logger, 'throwArkTsCompilerError'); 1518 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1519 sourceMapGenerator.setSourceMapPath(''); 1520 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1521 await sleep(100); 1522 expect(stub.calledWith(errInfo.toString())).to.be.true; 1523 CommonLogger.destroyInstance(); 1524 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1525 stub.restore(); 1526 copyFileSyncStub.restore(); 1527 SourceMapGenerator.cleanSourceMapObject(); 1528 }); 1529 1530 mocha.it('8-8: test the error message of buildModuleSourceMapInfo under hot reload debug', async function () { 1531 this.rollup.hotReload(); 1532 const errInfo: LogData = LogDataFactory.newInstance( 1533 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1534 ArkTSInternalErrorDescription, 1535 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1536 ); 1537 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1538 const moduleMode = new ModuleModeMock(this.rollup); 1539 const stub = sinon.stub(sourceMapGenerator.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1540 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1541 sourceMapGenerator.setSourceMapPath(''); 1542 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1543 await sleep(100); 1544 expect(stub.calledWith(errInfo)).to.be.true; 1545 stub.restore(); 1546 copyFileSyncStub.restore(); 1547 SourceMapGenerator.cleanSourceMapObject(); 1548 }); 1549 1550 mocha.it('8-8-1: test the error message of buildModuleSourceMapInfo under hot reload debug ' + 1551 'without getHvigorConsoleLogger', async function () { 1552 this.rollup.hotReload(); 1553 const errInfo: LogData = LogDataFactory.newInstance( 1554 ErrorCode.ETS2BUNDLE_INTERNAL_WRITE_SOURCE_MAP_FAILED, 1555 ArkTSInternalErrorDescription, 1556 "Failed to write sourceMaps. ENOENT: no such file or directory, open ''" 1557 ); 1558 CommonLogger.destroyInstance(); 1559 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1560 this.rollup.share.getHvigorConsoleLogger = undefined; 1561 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1562 const moduleMode = new ModuleModeMock(this.rollup); 1563 const stub = sinon.stub(sourceMapGenerator.logger, 'throwArkTsCompilerError'); 1564 const copyFileSyncStub = sinon.stub(fs, 'copyFileSync').returns(undefined); 1565 sourceMapGenerator.setSourceMapPath(''); 1566 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1567 await sleep(100); 1568 expect(stub.calledWith(errInfo.toString())).to.be.true; 1569 expect(stub.calledWith(errInfo.toString())).to.be.true; 1570 CommonLogger.destroyInstance(); 1571 stub.restore(); 1572 copyFileSyncStub.restore(); 1573 SourceMapGenerator.cleanSourceMapObject(); 1574 }); 1575 1576 mocha.it('8-9: test merge bytecode source map of buildModuleSourceMapInfo under build debug', async function () { 1577 this.rollup.build(); 1578 this.rollup.share.projectConfig.mockBytecodeHarInfo(); 1579 const sourceMapGenerator = SourceMapGenerator.initInstance(this.rollup); 1580 const moduleMode = new ModuleModeMock(this.rollup); 1581 moduleMode.buildModuleSourceMapInfoMock(sourceMapGenerator); 1582 await sleep(1000); 1583 expect(moduleMode.checkModuleSourceMapInfoMock() === true).to.be.true; 1584 SourceMapGenerator.cleanSourceMapObject(); 1585 }); 1586 1587 mocha.it('9-1: test getPkgModulesFilePkgName under build debug', function () { 1588 this.rollup.build(); 1589 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1590 const moduleMode = new ModuleModeMock(this.rollup); 1591 const keys = Object.keys(moduleMode.symlinkMap); 1592 for (const key of keys) { 1593 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1594 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1595 } 1596 }); 1597 1598 mocha.it('9-2: test getPkgModulesFilePkgName under build release', function () { 1599 this.rollup.build(RELEASE); 1600 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1601 const moduleMode = new ModuleModeMock(this.rollup); 1602 const keys = Object.keys(moduleMode.symlinkMap); 1603 for (const key of keys) { 1604 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1605 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1606 } 1607 }); 1608 1609 mocha.it('9-3: test getPkgModulesFilePkgName under preview debug', function () { 1610 this.rollup.preview(); 1611 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1612 const moduleMode = new ModuleModeMock(this.rollup); 1613 const keys = Object.keys(moduleMode.symlinkMap); 1614 for (const key of keys) { 1615 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1616 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1617 } 1618 }); 1619 1620 mocha.it('9-4: test getPkgModulesFilePkgName under hot reload debug', function () { 1621 this.rollup.hotReload(); 1622 this.rollup.share.projectConfig.packageDir = OH_MODULES; 1623 const moduleMode = new ModuleModeMock(this.rollup); 1624 const keys = Object.keys(moduleMode.symlinkMap); 1625 for (const key of keys) { 1626 const pkgname = moduleMode.getPkgModulesFilePkgName(key).toString(); 1627 expect(pkgname === PKG_MODULES_OHPM_HYPIUM).to.be.true; 1628 } 1629 }); 1630 1631 mocha.it('10-1: test generateEs2AbcCmd under build debug', function () { 1632 this.rollup.build(); 1633 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1634 const moduleMode = new ModuleHotreloadMode(this.rollup); 1635 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1636 moduleMode.projectConfig.anBuildMode = AOT_FULL; 1637 moduleMode.generateEs2AbcCmd(); 1638 moduleMode.byteCodeHar = true; 1639 1640 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1641 moduleMode.cmdArgs.splice(1, 1); 1642 expect(moduleMode.cmdArgs[1].indexOf(BUILD_INFO) > 0).to.be.true; 1643 moduleMode.cmdArgs.splice(1, 1); 1644 expect(moduleMode.cmdArgs[2].indexOf(BUILD_NPM) > 0).to.be.true; 1645 moduleMode.cmdArgs.splice(2, 1); 1646 expect(moduleMode.cmdArgs[3].indexOf(MODULES_ABC) > 0).to.be.true; 1647 moduleMode.cmdArgs.splice(3, 1); 1648 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1649 }); 1650 1651 mocha.it('10-2: test generateEs2AbcCmd under build release', function () { 1652 this.rollup.build(RELEASE); 1653 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1654 const moduleMode = new ModuleHotreloadMode(this.rollup); 1655 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1656 moduleMode.generateEs2AbcCmd(); 1657 moduleMode.byteCodeHar = true; 1658 1659 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.false; 1660 expect(moduleMode.cmdArgs[1].indexOf(BUILD_INFO) > 0).to.be.true; 1661 moduleMode.cmdArgs.splice(1, 1); 1662 expect(moduleMode.cmdArgs[2].indexOf(BUILD_NPM) > 0).to.be.true; 1663 moduleMode.cmdArgs.splice(2, 1); 1664 expect(moduleMode.cmdArgs[3].indexOf(MODULES_ABC) > 0).to.be.true; 1665 moduleMode.cmdArgs.splice(3, 1); 1666 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1667 }); 1668 1669 mocha.it('10-3: test generateEs2AbcCmd under preview debug', function () { 1670 this.rollup.preview(); 1671 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1672 const moduleMode = new ModuleHotreloadMode(this.rollup); 1673 const compatibleSdkVersion = `${TARGET_API_VERSION}${this.rollup.share.projectConfig.compatibleSdkVersion}`; 1674 moduleMode.generateEs2AbcCmd(); 1675 moduleMode.byteCodeHar = true; 1676 1677 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1678 moduleMode.cmdArgs.splice(1, 1); 1679 expect(moduleMode.cmdArgs[1].indexOf(PREVIEW_DEBUG_INFO) > 0).to.be.true; 1680 moduleMode.cmdArgs.splice(1, 1); 1681 expect(moduleMode.cmdArgs[2].indexOf(PREVIEW_DEBUG_NPM) > 0).to.be.true; 1682 moduleMode.cmdArgs.splice(2, 1); 1683 expect(moduleMode.cmdArgs[3].indexOf(PREVIEW_MODULES_ABC) > 0).to.be.true; 1684 moduleMode.cmdArgs.splice(3, 1); 1685 checkGenerateEs2AbcCmdExpect(moduleMode.cmdArgs, compatibleSdkVersion, moduleMode.byteCodeHar); 1686 }); 1687 1688 mocha.it('11-1: test addCacheFileArgs under build debug', function () { 1689 this.rollup.build(); 1690 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1691 const moduleMode = new ModuleHotreloadMode(this.rollup); 1692 moduleMode.addCacheFileArgs(); 1693 1694 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1695 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1696 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1697 expect(moduleMode.cmdArgs[3].indexOf(BUILD_CACHE) > 0).to.be.true; 1698 }); 1699 1700 mocha.it('11-2: test addCacheFileArgs under build release', function () { 1701 this.rollup.build(RELEASE); 1702 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1703 const moduleMode = new ModuleHotreloadMode(this.rollup); 1704 moduleMode.addCacheFileArgs(); 1705 1706 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1707 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.false; 1708 expect(moduleMode.cmdArgs[1] === CACHE_FILE).to.be.true; 1709 expect(moduleMode.cmdArgs[2].indexOf(BUILD_CACHE) > 0).to.be.true; 1710 }); 1711 1712 mocha.it('11-3: test addCacheFileArgs under preview debug', function () { 1713 this.rollup.preview(); 1714 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1715 const moduleMode = new ModuleHotreloadMode(this.rollup); 1716 moduleMode.addCacheFileArgs(); 1717 1718 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1719 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1720 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1721 expect(moduleMode.cmdArgs[3].indexOf(PREVIEW_DEBUG_CACHE) > 0).to.be.true; 1722 }); 1723 1724 mocha.it('11-4: test addCacheFileArgs under hot reload debug', function () { 1725 this.rollup.hotReload(); 1726 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1727 const moduleMode = new ModuleHotreloadMode(this.rollup); 1728 moduleMode.addCacheFileArgs(); 1729 1730 expect(moduleMode.cmdArgs[0].indexOf(ES2ABC_PATH) > 0).to.be.true; 1731 expect(moduleMode.cmdArgs[1] === DEBUG_INFO).to.be.true; 1732 expect(moduleMode.cmdArgs[2] === CACHE_FILE).to.be.true; 1733 expect(moduleMode.cmdArgs[3].indexOf(BUILD_CACHE) > 0).to.be.true; 1734 }); 1735 1736 mocha.it('12-1: test genFileCachePath under build debug', function () { 1737 this.rollup.build(); 1738 const moduleMode = new ModuleModeMock(this.rollup); 1739 const allFiles = new Set<string>(); 1740 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1741 this.mockfileList = allFiles.values(); 1742 for (const filePath of this.mockfileList) { 1743 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1744 const sufStr = 1745 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1746 const returnInfo = 1747 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1748 this.rollup.share.projectConfig.cachePath); 1749 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1750 } 1751 } 1752 }); 1753 1754 mocha.it('12-2: test genFileCachePath under build release', function () { 1755 this.rollup.build(RELEASE); 1756 const moduleMode = new ModuleModeMock(this.rollup); 1757 const allFiles = new Set<string>(); 1758 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1759 this.mockfileList = allFiles.values(); 1760 for (const filePath of this.mockfileList) { 1761 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1762 const sufStr = 1763 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1764 const returnInfo = 1765 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1766 this.rollup.share.projectConfig.cachePath); 1767 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1768 } 1769 } 1770 }); 1771 1772 mocha.it('12-3: test genFileCachePath under preview debug', function () { 1773 this.rollup.preview(); 1774 const moduleMode = new ModuleModeMock(this.rollup); 1775 const allFiles = new Set<string>(); 1776 scanFiles(this.rollup.share.projectConfig.modulePath, allFiles); 1777 this.mockfileList = allFiles.values(); 1778 for (const filePath of this.mockfileList) { 1779 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1780 const sufStr = 1781 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1782 const returnInfo = 1783 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1784 this.rollup.share.projectConfig.cachePath); 1785 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1786 } 1787 } 1788 }); 1789 1790 mocha.it('12-4: test genFileCachePath under hot reload debug', function () { 1791 this.rollup.hotReload(); 1792 const moduleMode = new ModuleModeMock(this.rollup); 1793 this.mockfileList = this.rollup.getModuleIds(); 1794 for (const filePath of this.mockfileList) { 1795 if (filePath.endsWith(EXTNAME_TS) || filePath.endsWith(EXTNAME_ETS) || filePath.endsWith(EXTNAME_JS)) { 1796 const sufStr = 1797 toUnixPath(filePath).replace(toUnixPath(this.rollup.share.projectConfig.projectRootPath), ''); 1798 const returnInfo = 1799 moduleMode.genFileCachePath(filePath, this.rollup.share.projectConfig.projectRootPath, 1800 this.rollup.share.projectConfig.cachePath); 1801 expect(returnInfo === path.join(this.rollup.share.projectConfig.cachePath, sufStr)).to.be.true; 1802 } 1803 } 1804 }); 1805 1806 mocha.it('12-5: test genFileCachePath under hot fix debug', function () { 1807 this.rollup.build(); 1808 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1809 const cachePath = projectConfig.cachePath + DEBUG; 1810 const moduleMode = new ModuleModeMock(this.rollup); 1811 const filePath = `${projectConfig.projectRootPath}/${TEST_TS}`; 1812 const sufStr = toUnixPath(filePath).replace(toUnixPath(projectConfig.projectRootPath), ''); 1813 const returnInfo = moduleMode.genFileCachePath(filePath, projectConfig.projectRootPath, cachePath); 1814 expect(returnInfo === path.join(cachePath, sufStr)).to.be.true; 1815 }); 1816 1817 mocha.it('12-6: test genFileCachePath under hot fix release', function () { 1818 this.rollup.build(RELEASE); 1819 this.rollup.share.projectConfig.oldMapFilePath = DEFAULT_ETS; 1820 const cachePath = projectConfig.cachePath + RELEASE; 1821 const moduleMode = new ModuleModeMock(this.rollup); 1822 const filePath = `${projectConfig.projectRootPath}/${TEST_TS}`; 1823 const sufStr = toUnixPath(filePath).replace(toUnixPath(projectConfig.projectRootPath), ''); 1824 const returnInfo = moduleMode.genFileCachePath(filePath, projectConfig.projectRootPath, cachePath); 1825 expect(returnInfo === path.join(cachePath, sufStr)).to.be.true; 1826 }); 1827 1828 mocha.it('13-1: test the error message of generateMergedAbcOfEs2Abc throw error on failed code', async function () { 1829 this.rollup.build(); 1830 const errInfo: LogData = LogDataFactory.newInstance( 1831 ErrorCode.ETS2BUNDLE_EXTERNAL_ES2ABC_EXECUTION_FAILED, 1832 ArkTSErrorDescription, 1833 'Failed to execute es2abc.', 1834 '', 1835 ["Please refer to es2abc's error codes."] 1836 ); 1837 const moduleMode = new ModuleModeMock(this.rollup); 1838 const child = childProcess.exec('false', { windowsHide: true }); 1839 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').returns(child); 1840 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1841 let parentEvent = undefined; 1842 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1843 await sleep(1000); 1844 expect(stub.calledWith(errInfo)).to.be.true; 1845 triggerAsyncStub.restore(); 1846 stub.restore(); 1847 }); 1848 1849 mocha.it('13-2: test the error message of generateMergedAbcOfEs2Abc throw error(Failed to startup es2abc)', async function () { 1850 this.rollup.build(); 1851 const errInfo: LogData = LogDataFactory.newInstance( 1852 ErrorCode.ETS2BUNDLE_INTERNAL_ES2ABC_SUBPROCESS_START_FAILED, 1853 ArkTSInternalErrorDescription, 1854 'Failed to initialize or launch the es2abc process. Error: test error' 1855 ); 1856 const moduleMode = new ModuleModeMock(this.rollup); 1857 const child = { 1858 on: sinon.stub(), 1859 stderr: { 1860 on: sinon.stub(), 1861 }, 1862 }; 1863 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').callsFake((callback) => { 1864 callback(); 1865 return child; 1866 }); 1867 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1868 let errorEventCallback; 1869 child.on.callsFake((event, callback) => { 1870 if (event === 'error') { 1871 errorEventCallback = callback; 1872 } 1873 }); 1874 let parentEvent = undefined; 1875 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1876 if (errorEventCallback) { 1877 errorEventCallback(new Error('test error')); 1878 } 1879 await sleep(100); 1880 expect(stub.calledWith(errInfo)).to.be.true; 1881 triggerAsyncStub.restore(); 1882 stub.restore(); 1883 }); 1884 1885 mocha.it('13-3: test the error message of generateMergedAbcOfEs2Abc handle error', function () { 1886 this.rollup.build(); 1887 const errInfo: LogData = LogDataFactory.newInstance( 1888 ErrorCode.ETS2BUNDLE_INTERNAL_EXECUTE_ES2ABC_WITH_ASYNC_HANDLER_FAILED, 1889 ArkTSInternalErrorDescription, 1890 'Failed to execute es2abc with async handler. Error: Execution failed' 1891 ); 1892 const moduleMode = new ModuleModeMock(this.rollup); 1893 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').throws(new Error('Execution failed')); 1894 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 1895 try { 1896 let parentEvent = undefined; 1897 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1898 } catch (e) { 1899 } 1900 expect(stub.calledWith(errInfo)).to.be.true; 1901 triggerAsyncStub.restore(); 1902 stub.restore(); 1903 }); 1904 1905 mocha.it('13-4: test the error message of generateMergedAbcOfEs2Abc throw error on failed code ' + 1906 'without getHvigorConsoleLogger', async function () { 1907 this.rollup.build(); 1908 const errInfo: LogData = LogDataFactory.newInstance( 1909 ErrorCode.ETS2BUNDLE_EXTERNAL_ES2ABC_EXECUTION_FAILED, 1910 ArkTSErrorDescription, 1911 'Failed to execute es2abc.', 1912 '', 1913 ["Please refer to es2abc's error codes."] 1914 ); 1915 CommonLogger.destroyInstance(); 1916 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1917 this.rollup.share.getHvigorConsoleLogger = undefined; 1918 const moduleMode = new ModuleModeMock(this.rollup); 1919 const child = childProcess.exec('false', { windowsHide: true }); 1920 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').returns(child); 1921 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1922 let parentEvent = undefined; 1923 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1924 await sleep(1000); 1925 expect(stub.calledWith(errInfo.toString())).to.be.true; 1926 CommonLogger.destroyInstance(); 1927 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1928 triggerAsyncStub.restore(); 1929 stub.restore(); 1930 }); 1931 1932 mocha.it('13-5: test the error message of generateMergedAbcOfEs2Abc throw error(Failed to startup es2abc)' + 1933 'without getHvigorConsoleLogger', async function () { 1934 this.rollup.build(); 1935 const errInfo: LogData = LogDataFactory.newInstance( 1936 ErrorCode.ETS2BUNDLE_INTERNAL_ES2ABC_SUBPROCESS_START_FAILED, 1937 ArkTSInternalErrorDescription, 1938 'Failed to initialize or launch the es2abc process. Error: test error' 1939 ); 1940 CommonLogger.destroyInstance(); 1941 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1942 this.rollup.share.getHvigorConsoleLogger = undefined; 1943 const moduleMode = new ModuleModeMock(this.rollup); 1944 const child = { 1945 on: sinon.stub(), 1946 stderr: { 1947 on: sinon.stub(), 1948 }, 1949 }; 1950 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').callsFake((callback) => { 1951 callback(); 1952 return child; 1953 }); 1954 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1955 let errorEventCallback; 1956 child.on.callsFake((event, callback) => { 1957 if (event === 'error') { 1958 errorEventCallback = callback; 1959 } 1960 }); 1961 let parentEvent = undefined; 1962 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1963 if (errorEventCallback) { 1964 errorEventCallback(new Error('test error')); 1965 } 1966 await sleep(100); 1967 expect(stub.calledWith(errInfo.toString())).to.be.true; 1968 CommonLogger.destroyInstance(); 1969 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1970 triggerAsyncStub.restore(); 1971 stub.restore(); 1972 }); 1973 1974 mocha.it('13-6: test the error message of generateMergedAbcOfEs2Abc handle error ' + 1975 'without getHvigorConsoleLogger', function () { 1976 this.rollup.build(); 1977 const errInfo: LogData = LogDataFactory.newInstance( 1978 ErrorCode.ETS2BUNDLE_INTERNAL_EXECUTE_ES2ABC_WITH_ASYNC_HANDLER_FAILED, 1979 ArkTSInternalErrorDescription, 1980 'Failed to execute es2abc with async handler. Error: Execution failed' 1981 ); 1982 CommonLogger.destroyInstance(); 1983 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 1984 this.rollup.share.getHvigorConsoleLogger = undefined; 1985 const moduleMode = new ModuleModeMock(this.rollup); 1986 const triggerAsyncStub = sinon.stub(moduleMode, 'triggerAsync').throws(new Error('Execution failed')); 1987 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 1988 try { 1989 let parentEvent = undefined; 1990 moduleMode.generateMergedAbcOfEs2AbcMock(parentEvent); 1991 } catch (e) { 1992 } 1993 expect(stub.calledWith(errInfo.toString())).to.be.true; 1994 CommonLogger.destroyInstance(); 1995 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 1996 triggerAsyncStub.restore(); 1997 stub.restore(); 1998 }); 1999 2000 mocha.it('14-1: test the error message of filterModulesByHashJson', function () { 2001 this.rollup.build(); 2002 const moduleMode = new ModuleModeMock(this.rollup); 2003 let existsSyncStub = sinon.stub(fs, 'existsSync'); 2004 let readFileSyncStub = sinon.stub(fs, 'readFileSync'); 2005 let stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2006 moduleMode.moduleInfos = new Map([ 2007 ['moduleKey', { cacheFilePath: 'test' }] 2008 ]); 2009 existsSyncStub.callsFake((path) => { 2010 if (path === moduleMode.hashJsonFilePath) { 2011 return true; 2012 } 2013 return false; 2014 }); 2015 readFileSyncStub.withArgs(moduleMode.hashJsonFilePath).returns(JSON.stringify({})); 2016 try { 2017 moduleMode.filterModulesByHashJsonMock(); 2018 } catch (e) { 2019 } 2020 expect(stub.calledWithMatch( 2021 `ArkTS:INTERNAL ERROR: Failed to get module cache abc from test in incremental build.` + 2022 `Please try to rebuild the project.`)).to.be.true; 2023 existsSyncStub.restore(); 2024 readFileSyncStub.restore(); 2025 stub.restore(); 2026 }); 2027 2028 mocha.it('15-1: test the error message of mergeProtoToAbc', function () { 2029 this.rollup.build(); 2030 const moduleMode = new ModuleMode(this.rollup); 2031 const execSyncStub = sinon.stub(childProcess, 'execSync').throws(new Error('Execution failed')); 2032 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2033 moduleMode.mergeProtoToAbc(); 2034 expect(stub.calledWithMatch('ArkTS:INTERNAL ERROR: Failed to merge proto file to abc.')).to.be.true; 2035 execSyncStub.restore(); 2036 stub.restore(); 2037 }); 2038 2039 mocha.it('16-1: test the error message of invokeTs2AbcWorkersToGenProto', function () { 2040 this.rollup.build(); 2041 const moduleMode = new ModuleMode(this.rollup); 2042 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2043 const clusterStub = sinon.stub(cluster, 'fork'); 2044 const fakeWorker = { 2045 on: sinon.stub() 2046 }; 2047 clusterStub.returns(fakeWorker); 2048 const splittedModules = [{ 2049 'test': '' 2050 }] 2051 try { 2052 fakeWorker.on.withArgs('message').callsFake((event, callback) => { 2053 callback({ data: 'error' }); 2054 }); 2055 moduleMode.invokeTs2AbcWorkersToGenProto(splittedModules) 2056 } catch (e) { 2057 } 2058 expect(stub.calledWith('ArkTS:ERROR Failed to execute ts2abc.')).to.be.true; 2059 clusterStub.restore(); 2060 stub.restore(); 2061 }); 2062 2063 mocha.it('17-1: test the error message of processTs2abcWorkersToGenAbc', function () { 2064 this.rollup.build(); 2065 const moduleMode = new ModuleMode(this.rollup); 2066 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2067 const clusterStub = sinon.stub(cluster, 'on'); 2068 const fakeWorker = { 2069 on: sinon.stub() 2070 }; 2071 clusterStub.returns(fakeWorker); 2072 try { 2073 clusterStub.withArgs('exit').callsFake((event, callback) => { 2074 callback(fakeWorker, 1, null); 2075 }); 2076 moduleMode.processTs2abcWorkersToGenAbc() 2077 } catch (e) { 2078 } 2079 expect(stub.calledWith('ArkTS:ERROR Failed to execute ts2abc')).to.be.true; 2080 clusterStub.restore(); 2081 stub.restore(); 2082 }); 2083 2084 mocha.it('18-1: test generateCompileContext under build debug', function () { 2085 this.rollup.build(); 2086 SourceMapGenerator.initInstance(this.rollup); 2087 this.rollup.mockCompileContextInfo(); 2088 const moduleMode = new ModuleModeMock(this.rollup); 2089 moduleMode.generateCompileContextInfoMock(this.rollup); 2090 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2091 SourceMapGenerator.cleanSourceMapObject(); 2092 }); 2093 2094 mocha.it('18-2: test generateCompileContext under build release', function () { 2095 this.rollup.build(RELEASE); 2096 SourceMapGenerator.initInstance(this.rollup); 2097 this.rollup.mockCompileContextInfo(); 2098 const moduleMode = new ModuleModeMock(this.rollup); 2099 moduleMode.generateCompileContextInfoMock(this.rollup); 2100 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2101 SourceMapGenerator.cleanSourceMapObject(); 2102 }); 2103 2104 mocha.it('18-3: test generateCompileContext under build preview', function () { 2105 this.rollup.preview(); 2106 SourceMapGenerator.initInstance(this.rollup); 2107 this.rollup.mockCompileContextInfo(); 2108 const moduleMode = new ModuleModeMock(this.rollup); 2109 moduleMode.generateCompileContextInfoMock(this.rollup); 2110 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2111 SourceMapGenerator.cleanSourceMapObject(); 2112 }); 2113 2114 mocha.it('18-4: test generateCompileContext under build hotReload', function () { 2115 this.rollup.hotReload(); 2116 SourceMapGenerator.initInstance(this.rollup); 2117 this.rollup.mockCompileContextInfo(); 2118 const moduleMode = new ModuleModeMock(this.rollup); 2119 moduleMode.generateCompileContextInfoMock(this.rollup); 2120 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2121 SourceMapGenerator.cleanSourceMapObject(); 2122 }); 2123 mocha.it('18-5: test generateCompileContext widget compile under build debug', function () { 2124 this.rollup.build(); 2125 this.rollup.share.projectConfig.widgetCompile = true; 2126 SourceMapGenerator.initInstance(this.rollup); 2127 this.rollup.mockCompileContextInfo(); 2128 const moduleMode = new ModuleModeMock(this.rollup); 2129 moduleMode.generateCompileContextInfoMock(this.rollup); 2130 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2131 SourceMapGenerator.cleanSourceMapObject(); 2132 }); 2133 2134 mocha.it('18-6: test generateCompileContext widget compile under build release', function () { 2135 this.rollup.build(RELEASE); 2136 this.rollup.share.projectConfig.widgetCompile = true; 2137 SourceMapGenerator.initInstance(this.rollup); 2138 this.rollup.mockCompileContextInfo(); 2139 const moduleMode = new ModuleModeMock(this.rollup); 2140 moduleMode.generateCompileContextInfoMock(this.rollup); 2141 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2142 SourceMapGenerator.cleanSourceMapObject(); 2143 }); 2144 2145 mocha.it('18-7: test generateCompileContext widget compile under build preview', function () { 2146 this.rollup.preview(); 2147 this.rollup.share.projectConfig.widgetCompile = true; 2148 SourceMapGenerator.initInstance(this.rollup); 2149 this.rollup.mockCompileContextInfo(); 2150 const moduleMode = new ModuleModeMock(this.rollup); 2151 moduleMode.generateCompileContextInfoMock(this.rollup); 2152 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2153 SourceMapGenerator.cleanSourceMapObject(); 2154 }); 2155 2156 mocha.it('18-8: test generateCompileContext widget compile under build hotReload', function () { 2157 this.rollup.hotReload(); 2158 this.rollup.share.projectConfig.widgetCompile = true; 2159 SourceMapGenerator.initInstance(this.rollup); 2160 this.rollup.mockCompileContextInfo(); 2161 const moduleMode = new ModuleModeMock(this.rollup); 2162 moduleMode.generateCompileContextInfoMock(this.rollup); 2163 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2164 SourceMapGenerator.cleanSourceMapObject(); 2165 }); 2166 2167 mocha.it('18-9: test generateCompileContext has router map entries', function () { 2168 this.rollup.build(); 2169 SourceMapGenerator.initInstance(this.rollup); 2170 this.rollup.mockCompileContextInfo(); 2171 this.rollup.share.projectConfig.arkRouterMap = [ 2172 { 2173 'ohmurl': '@normalized:N&&&har/src/main/ets/calc&' 2174 }, 2175 { 2176 'ohmurl': '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 2177 } 2178 ]; 2179 const moduleMode = new ModuleModeMock(this.rollup); 2180 moduleMode.generateCompileContextInfoMock(this.rollup); 2181 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2182 SourceMapGenerator.cleanSourceMapObject(); 2183 }); 2184 2185 mocha.it('18-10: test generateCompileContext has declaration entries', function () { 2186 this.rollup.build(); 2187 SourceMapGenerator.initInstance(this.rollup); 2188 this.rollup.mockCompileContextInfo(); 2189 this.rollup.share.projectConfig.declarationEntry = [ 2190 '@normalized:N&&&har/src/main/ets/MyWorker&', 2191 '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 2192 ]; 2193 const moduleMode = new ModuleModeMock(this.rollup); 2194 moduleMode.generateCompileContextInfoMock(this.rollup); 2195 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2196 SourceMapGenerator.cleanSourceMapObject(); 2197 }); 2198 2199 mocha.it('18-11: test generateCompileContext has not exist moduleId', function () { 2200 this.rollup.build(); 2201 const errInfo: LogData = LogDataFactory.newInstance( 2202 ErrorCode.ETS2BUNDLE_INTERNAL_MODULE_INFO_NOT_FOUND, 2203 ArkTSInternalErrorDescription, 2204 'Failed to find module info. ' + 2205 "Failed to find module info with 'd:/test.ets' from the context information." 2206 ); 2207 SourceMapGenerator.initInstance(this.rollup); 2208 this.rollup.mockCompileContextInfo(); 2209 const moduleMode = new ModuleModeMock(this.rollup); 2210 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 2211 const entryObjName:string = 'test'; 2212 const moduleId:string = 'd:/test.ets'; 2213 try { 2214 moduleMode.projectConfig.entryObj[entryObjName]=moduleId; 2215 moduleMode.projectConfig.cardEntryObj[entryObjName]=moduleId; 2216 moduleMode.generateCompileContextInfoMock(this.rollup); 2217 } catch (e) { 2218 } 2219 expect(stub.calledWith(errInfo)).to.be.true; 2220 stub.restore(); 2221 SourceMapGenerator.cleanSourceMapObject(); 2222 }); 2223 2224 mocha.it('18-11-1: test generateCompileContext has not exist moduleId' + 2225 'without getHvigorConsoleLogger', function () { 2226 this.rollup.build(); 2227 const errInfo: LogData = LogDataFactory.newInstance( 2228 ErrorCode.ETS2BUNDLE_INTERNAL_MODULE_INFO_NOT_FOUND, 2229 ArkTSInternalErrorDescription, 2230 'Failed to find module info. ' + 2231 "Failed to find module info with 'd:/test.ets' from the context information." 2232 ); 2233 CommonLogger.destroyInstance(); 2234 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 2235 this.rollup.share.getHvigorConsoleLogger = undefined; 2236 SourceMapGenerator.initInstance(this.rollup); 2237 this.rollup.mockCompileContextInfo(); 2238 const moduleMode = new ModuleModeMock(this.rollup); 2239 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2240 const entryObjName:string = 'test'; 2241 const moduleId:string = 'd:/test.ets'; 2242 try { 2243 moduleMode.projectConfig.entryObj[entryObjName]=moduleId; 2244 moduleMode.projectConfig.cardEntryObj[entryObjName]=moduleId; 2245 moduleMode.generateCompileContextInfoMock(this.rollup); 2246 } catch (e) { 2247 } 2248 expect(stub.calledWith(errInfo.toString())).to.be.true; 2249 CommonLogger.destroyInstance(); 2250 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 2251 stub.restore(); 2252 SourceMapGenerator.cleanSourceMapObject(); 2253 }); 2254 2255 mocha.it('18-12: test generateCompileContext accurate update version', function () { 2256 this.rollup.build(); 2257 SourceMapGenerator.initInstance(this.rollup); 2258 this.rollup.mockCompileContextInfo(); 2259 this.rollup.share.projectConfig.declarationEntry = [ 2260 '@normalized:N&&&har/src/main/ets/MyWorker&', 2261 '@normalized:N&&com.har.test&har/src/main/ets/test&1.0.0' 2262 ]; 2263 this.rollup.share.projectConfig.updateVersionInfo = { 2264 "bytecodeHar": { 2265 "har1": "1.0.1", 2266 "har2": "2.0.0" 2267 } 2268 }; 2269 const moduleMode: ModuleModeMock = new ModuleModeMock(this.rollup); 2270 moduleMode.generateCompileContextInfoMock(this.rollup); 2271 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2272 SourceMapGenerator.cleanSourceMapObject(); 2273 }); 2274 2275 mocha.it('18-13: test generateCompileContext has not exist meta info', function () { 2276 this.rollup.build(); 2277 this.rollup.mockCompileContextInfo(); 2278 const errInfo: LogData = LogDataFactory.newInstance( 2279 ErrorCode.ETS2BUNDLE_INTERNAL_META_INFO_NOT_FOUND, 2280 ArkTSInternalErrorDescription, 2281 'Failed to find meta info. ' + 2282 "Failed to find meta info with 'd:/test.ets' from the module info." 2283 ); 2284 const moduleMode = new ModuleModeMock(this.rollup); 2285 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 2286 const entryObjName:string = 'noMetaInfo'; 2287 const moduleId:string = 'd:/test.ets'; 2288 moduleMode.projectConfig.entryObj[entryObjName]=moduleId; 2289 moduleMode.projectConfig.cardEntryObj[entryObjName]=moduleId; 2290 const moduleInfo = { 2291 id: moduleId, 2292 meta: null 2293 } 2294 this.rollup.moduleInfos.push(moduleInfo); 2295 try { 2296 moduleMode.generateCompileContextInfoMock(this.rollup); 2297 } catch (e) { 2298 } 2299 expect(stub.calledWithMatch(errInfo)).to.be.true; 2300 stub.restore(); 2301 }); 2302 2303 mocha.it('18-13-1: test generateCompileContext has not exist meta info without getHvigorConsoleLogger', function () { 2304 this.rollup.build(); 2305 this.rollup.mockCompileContextInfo(); 2306 const errInfo: LogData = LogDataFactory.newInstance( 2307 ErrorCode.ETS2BUNDLE_INTERNAL_META_INFO_NOT_FOUND, 2308 ArkTSInternalErrorDescription, 2309 'Failed to find meta info. ' + 2310 "Failed to find meta info with 'd:/test.ets' from the module info." 2311 ); 2312 CommonLogger.destroyInstance(); 2313 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 2314 this.rollup.share.getHvigorConsoleLogger = undefined; 2315 const moduleMode = new ModuleModeMock(this.rollup); 2316 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2317 const entryObjName:string = 'noMetaInfo'; 2318 const moduleId:string = 'd:/test.ets'; 2319 moduleMode.projectConfig.entryObj[entryObjName]=moduleId; 2320 moduleMode.projectConfig.cardEntryObj[entryObjName]=moduleId; 2321 const moduleInfo = { 2322 id: moduleId, 2323 meta: null 2324 } 2325 this.rollup.moduleInfos.push(moduleInfo); 2326 try { 2327 moduleMode.generateCompileContextInfoMock(this.rollup); 2328 } catch (e) { 2329 } 2330 expect(stub.calledWithMatch(errInfo.toString())).to.be.true; 2331 CommonLogger.destroyInstance(); 2332 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 2333 stub.restore(); 2334 }); 2335 2336 mocha.it('18-14: test generateCompileContext inter—app hsp deps bytecode har', function () { 2337 this.rollup.build(); 2338 SourceMapGenerator.initInstance(this.rollup); 2339 this.rollup.mockCompileContextInfo(); 2340 this.rollup.share.projectConfig.bundleType = 'shared'; 2341 this.rollup.share.projectConfig.bundleName = 'com.inter-app.hsp'; 2342 const moduleMode: ModuleModeMock = new ModuleModeMock(this.rollup); 2343 moduleMode.generateCompileContextInfoMock(this.rollup); 2344 expect(moduleMode.checkGenerateCompileContextInfo(this.rollup) === true).to.be.true; 2345 SourceMapGenerator.cleanSourceMapObject(); 2346 }); 2347 2348 mocha.it('19-1: test the error message of removeCompilationCache', function () { 2349 this.rollup.build(); 2350 const errInfo: LogData = LogDataFactory.newInstance( 2351 ErrorCode.ETS2BUNDLE_INTERNAL_INVALID_COMPILE_MODE, 2352 ArkTSInternalErrorDescription, 2353 'Invalid compilation mode. ' + 2354 `ProjectConfig.pandaMode should be either ${TS2ABC} or ${ES2ABC}.` 2355 ); 2356 const moduleMode = new ModuleMode(this.rollup); 2357 moduleMode.projectConfig.pandaMode = 'js2abc'; 2358 const stub = sinon.stub(moduleMode.logger.getLoggerFromErrorCode(errInfo.code), 'printErrorAndExit'); 2359 moduleMode.removeCompilationCache(this.rollup); 2360 expect(stub.calledWith(errInfo)).to.be.true; 2361 stub.restore(); 2362 }); 2363 2364 mocha.it('19-2: test the error message of removeCompilationCache without getHvigorConsoleLogger', function () { 2365 this.rollup.build(); 2366 const errInfo: LogData = LogDataFactory.newInstance( 2367 ErrorCode.ETS2BUNDLE_INTERNAL_INVALID_COMPILE_MODE, 2368 ArkTSInternalErrorDescription, 2369 'Invalid compilation mode. ' + 2370 `ProjectConfig.pandaMode should be either ${TS2ABC} or ${ES2ABC}.` 2371 ); 2372 CommonLogger.destroyInstance(); 2373 const getHvigorConsoleLogger = this.rollup.share.getHvigorConsoleLogger; 2374 this.rollup.share.getHvigorConsoleLogger = undefined; 2375 const moduleMode = new ModuleMode(this.rollup); 2376 moduleMode.projectConfig.pandaMode = 'js2abc'; 2377 const stub = sinon.stub(moduleMode.logger, 'throwArkTsCompilerError'); 2378 moduleMode.removeCompilationCache(this.rollup); 2379 expect(stub.calledWith(errInfo.toString())).to.be.true; 2380 CommonLogger.destroyInstance(); 2381 this.rollup.share.getHvigorConsoleLogger = getHvigorConsoleLogger; 2382 stub.restore(); 2383 }); 2384}); 2385