• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1const fs = require("fs");
2const path = require("path");
3
4const fourslashCasesNameArray = [
5    "addMemberNotInNodeModulesDeclarationFile.ts",
6    "codeFixAddMissingFunctionDeclaration16.ts",
7    "codeFixCannotFindModule_all.ts",
8    "codeFixCannotFindModule_suggestion_falsePositive.ts",
9    "codeFixCannotFindModule_suggestion_js.ts",
10    "codeFixCannotFindModule_suggestion.ts",
11    "codeFixCannotFindModule.ts",
12    "codeFixGenerateDefinitions.ts",
13    "completionEntryForClassMembers_StaticWhenBaseTypeIsNotResolved.ts",
14    "completionForStringLiteralNonrelativeImport1.ts",
15    "completionForStringLiteralNonrelativeImport2.ts",
16    "completionForStringLiteralNonrelativeImport3.ts",
17    "completionForStringLiteralNonrelativeImport4.ts",
18    "completionForStringLiteralNonrelativeImport7.ts",
19    "completionForStringLiteralNonrelativeImport10.ts",
20    "completionForStringLiteralNonrelativeImport11.ts",
21    "completionForStringLiteralNonrelativeImport13.ts",
22    "completionForStringLiteralNonrelativeImportTypings3.ts",
23    "completionInJsDocQualifiedNames.ts",
24    "completionListForExportEquals.ts",
25    "completionListForExportEquals2.ts",
26    "completionListInImportClause05.ts",
27    "completionsImport_compilerOptionsModule.ts",
28    "completionsImport_default_symbolName.ts",
29    "completionsImport_defaultFalsePositive.ts",
30    "completionsImport_exportEqualsNamespace_noDuplicate.ts",
31    "completionsImport_filteredByInvalidPackageJson_direct.ts",
32    "completionsImport_filteredByPackageJson_@typesImplicit.ts",
33    "completionsImport_filteredByPackageJson_@typesOnly.ts",
34    "completionsImport_filteredByPackageJson_ambient.ts",
35    "completionsImport_filteredByPackageJson_direct.ts",
36    "completionsImport_filteredByPackageJson_nested.ts",
37    "completionsImport_filteredByPackageJson_peerDependencies.ts",
38    "completionsImport_filteredByPackageJson_reexport.ts",
39    "completionsImport_filteredByPackageJson_reexport2.ts",
40    "completionsImport_filteredByPackageJson_reexport3.ts",
41    "completionsImport_filteredByPackageJson_reexport4.ts",
42    "completionsImport_notFromUnrelatedNodeModules.ts",
43    "completionsImport_umdModules1_globalAccess.ts",
44    "completionsImport_umdModules2_moduleExports.ts",
45    "completionsImport_umdModules3_script.ts",
46    "completionsPathsJsonModule.ts",
47    "completionsPaths.ts",
48    "completionsPaths_fromTypings.ts",
49    "completionsPaths_importType.ts",
50    "documentHighlights_moduleImport_filesToSearch.ts",
51    "documentHighlights_moduleImport_filesToSearchWithInvalidFile.ts",
52    "duplicatePackageServices_fileChanges.ts",
53    "duplicatePackageServices.ts",
54    "exportEqualNamespaceClassESModuleInterop.ts",
55    "findAllReferencesTripleSlash.ts",
56    "findAllReferencesUmdModuleAsGlobalConst.ts",
57    "findAllRefsExportAsNamespace.ts",
58    "findAllRefsForModuleGlobal.ts",
59    "findAllRefsImportStarOfExportEquals.ts",
60    "findAllRefsModuleAugmentation.ts",
61    "getEditsForFileRename_ambientModule.ts",
62    "getEditsForFileRename_directory_noUpdateNodeModulesImport.ts",
63    "getEditsForFileRename_nodeModuleDirectoryCase.ts",
64    "getEditsForFileRename_symlink.ts",
65    "goToDefinition_untypedModule.ts",
66    "importFixesGlobalTypingsCache.ts",
67    "importFixesWithPackageJsonInSideAnotherPackage.ts",
68    "importJsNodeModule1.ts",
69    "importJsNodeModule2.ts",
70    "importJsNodeModule3.ts",
71    "importJsNodeModule4.ts",
72    "importNameCodeFixExistingImport5.ts",
73    "importNameCodeFixExistingImport6.ts",
74    "importNameCodeFixNewImportFromAtTypes.ts",
75    "importNameCodeFixNewImportFromAtTypesScopedPackage.ts",
76    "importNameCodeFixNewImportIndex_notForClassicResolution.ts",
77    "importNameCodeFixNewImportNodeModules0.ts",
78    "importNameCodeFixNewImportNodeModules1.ts",
79    "importNameCodeFixNewImportNodeModules2.ts",
80    "importNameCodeFixNewImportNodeModules3.ts",
81    "importNameCodeFixNewImportNodeModules4.ts",
82    "importNameCodeFixNewImportNodeModules5.ts",
83    "importNameCodeFixNewImportNodeModules6.ts",
84    "importNameCodeFixNewImportNodeModules7.ts",
85    "importNameCodeFixNewImportNodeModules8.ts",
86    "importNameCodeFix_avoidRelativeNodeModules.ts",
87    "importNameCodeFix_getCanonicalFileName.ts",
88    "importNameCodeFix_symlink.ts",
89    "importNameCodeFix_symlink_own_package.ts",
90    "importNameCodeFix_symlink_own_package_2.ts",
91    "importNameCodeFix_types_classic.ts",
92    "importNameCodeFixOptionalImport1.ts",
93    "importNameCodeFixUMDGlobalReact0.ts",
94    "importNameCodeFixUMDGlobalReact1.ts",
95    "importTypesDeclarationDiagnosticsNoServerError.ts",
96    "moduleReexportedIntoGlobalQuickInfo.ts",
97    "noImportCompletionsInOtherJavaScriptFile.ts"
98];
99
100const compilerCasesNameArray = [
101    "declarationEmitForGlobalishSpecifierSymlink.ts",
102    "declarationEmitForGlobalishSpecifierSymlink2.ts",
103    "declarationEmitHasTypesRefOnNamespaceUse.ts",
104    "declarationEmitReexportedSymlinkReference.ts",
105    "declarationEmitReexportedSymlinkReference2.ts",
106    "declarationEmitReexportedSymlinkReference3.ts",
107    "declarationEmitSymlinkPaths.ts",
108    "declarationEmitUnnessesaryTypeReferenceNotAdded.ts",
109    "declarationEmitWithInvalidPackageJsonTypings.ts",
110    "duplicatePackage_globalMerge.ts",
111    "duplicatePackage.ts",
112    "duplicatePackage_packageIdIncludesSubModule.ts",
113    "duplicatePackage_referenceTypes.ts",
114    "duplicatePackage_relativeImportWithinPackage.ts",
115    "duplicatePackage_relativeImportWithinPackage_scoped.ts",
116    "duplicatePackage_subModule.ts",
117    "duplicatePackage_withErrors.ts",
118    "moduleLocalImportNotIncorrectlyRedirected.ts",
119    "moduleResolutionPackageIdWithRelativeAndAbsolutePath.ts",
120    "moduleResolutionWithExtensions_unexpected.ts",
121    "moduleResolutionWithExtensions_unexpected2.ts",
122    "moduleResolution_packageJson_notAtPackageRoot.ts",
123    "moduleResolution_packageJson_notAtPackageRoot_fakeScopedPackage.ts",
124    "moduleResolution_packageJson_scopedPackage.ts",
125    "moduleResolution_packageJson_yesAtPackageRoot.ts",
126    "moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.ts",
127    "moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.ts",
128    "symbolLinkDeclarationEmitModuleNamesImportRef.ts"
129];
130
131const thisFilePath = __dirname;
132function GenOHFourslashTestCases() {
133    const ohFourslashCasesDir = path.join(thisFilePath, "../tests/cases/fourslash/oh");
134    if (!fs.existsSync(ohFourslashCasesDir)) {
135        fs.mkdirSync(ohFourslashCasesDir);
136    }
137    for (const caseName of fourslashCasesNameArray) {
138        const fourslashCasesNamePath = path.join(thisFilePath, "../tests/cases/fourslash", caseName);
139
140        const ohFourslashCasesName = caseName.replace(/NodeModules/g, "OHModules").replace(/PackageJson/g, "OHPackageJson5");
141        const ohFourslashCasesNamePath = path.join(ohFourslashCasesDir, ohFourslashCasesName);
142
143        const fileContent = fs.readFileSync(fourslashCasesNamePath).toString();
144        let ohfileContent = fileContent.replace(/node_modules/g, "oh_modules").replace(/package.json/g, "oh-package.json5");
145        if (caseName === "completionForStringLiteralNonrelativeImport7.ts" || caseName === "completionForStringLiteralNonrelativeImport11.ts") {
146            ohfileContent = ohfileContent.replace("fourslash/modules", "fourslash/oh/modules")
147        }
148        fs.writeFileSync(ohFourslashCasesNamePath, ohfileContent);
149    }
150}
151
152function GenOHCompilerTestCases() {
153    const ohCompilerCasesDir = path.join(thisFilePath, "../tests/cases/compiler-oh");
154    const baselineDir = path.join(thisFilePath, "../tests/baselines/reference");
155    const baselineTypes = [".js", ".symbols", ".types", ".errors.txt", ".trace.json"];
156    if (!fs.existsSync(ohCompilerCasesDir)) {
157        fs.mkdirSync(ohCompilerCasesDir);
158    }
159
160    for (const caseName of compilerCasesNameArray) {
161        const compilerCasesNamePath = path.join(thisFilePath, "../tests/cases/compiler", caseName);
162        let ohCompilerCasesName = "";
163        if (RegExp(/NodeModules|PackageJson/g).test(caseName)) {
164            ohCompilerCasesName = caseName.replace(/NodeModules/g, "OHModules").replace(/PackageJson/g, "OHPackageJson5");
165        }
166        else {
167            ohCompilerCasesName = caseName.replace(".ts", "_isohpm.ts");
168        }
169        const ohCompilerCasesNamePath = path.join(ohCompilerCasesDir, ohCompilerCasesName);
170        const fileContent = fs.readFileSync(compilerCasesNamePath).toString();
171        let ohfileContent = "";
172        if (fileContent.startsWith("// @filename")) {
173            ohfileContent = "// @packageManagerType: ohpm\r\n" + fileContent.replace(/node_modules/g, "oh_modules").replace(/package.json/g, "oh-package.json5");
174        } else {
175            ohfileContent = "// @packageManagerType: ohpm\n" + fileContent.replace(/node_modules/g, "oh_modules").replace(/package.json/g, "oh-package.json5");
176        }
177        fs.writeFileSync(ohCompilerCasesNamePath, ohfileContent);
178
179        const baselineCaseNamePath = path.join(baselineDir, caseName);
180        for (const type of baselineTypes) {
181            const baselineNamePath = baselineCaseNamePath.replace(".ts", type);
182            if (!fs.existsSync(baselineNamePath)) {
183                continue;
184            }
185            const content = fs.readFileSync(baselineNamePath).toString();
186            let ohContent = content.replace(/node_modules/g, "oh_modules").replace(/package.json/g, "oh-package.json5").replace(caseName, ohCompilerCasesName);
187            if (type == ".js") {
188                ohContent = ohContent.replace("tests/cases/compiler", "tests/cases/compiler-oh");
189            }
190            const ohBaselineNamePath = path.join(baselineDir, ohCompilerCasesName).replace(".ts", type);
191            fs.writeFileSync(ohBaselineNamePath, ohContent);
192        }
193    }
194}
195
196function main() {
197    GenOHFourslashTestCases();
198    GenOHCompilerTestCases();
199}
200
201main()