From fe007ccb84610fb0db33265c301190fc462fbe74 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 11 Apr 2017 14:13:35 -0700 Subject: [PATCH 1/2] configurationExtension tests: Use objects instead of strings for readability --- .../unittests/configurationExtension.ts | 157 +++++++++--------- 1 file changed, 79 insertions(+), 78 deletions(-) diff --git a/src/harness/unittests/configurationExtension.ts b/src/harness/unittests/configurationExtension.ts index 886ee5d54b5..ab5fab2b545 100644 --- a/src/harness/unittests/configurationExtension.ts +++ b/src/harness/unittests/configurationExtension.ts @@ -2,84 +2,84 @@ /// namespace ts { - const testContents = createMapFromTemplate({ - "/dev/tsconfig.json": `{ - "extends": "./configs/base", - "files": [ - "main.ts", - "supplemental.ts" - ] -}`, - "/dev/tsconfig.nostrictnull.json": `{ - "extends": "./tsconfig", - "compilerOptions": { - "strictNullChecks": false - } -}`, - "/dev/configs/base.json": `{ - "compilerOptions": { - "allowJs": true, - "noImplicitAny": true, - "strictNullChecks": true - } -}`, - "/dev/configs/tests.json": `{ - "compilerOptions": { - "preserveConstEnums": true, - "removeComments": false, - "sourceMap": true - }, - "exclude": [ - "../tests/baselines", - "../tests/scenarios" - ], - "include": [ - "../tests/**/*.ts" - ] -}`, - "/dev/circular.json": `{ - "extends": "./circular2", - "compilerOptions": { - "module": "amd" - } -}`, - "/dev/circular2.json": `{ - "extends": "./circular", - "compilerOptions": { - "module": "commonjs" - } -}`, - "/dev/missing.json": `{ - "extends": "./missing2", - "compilerOptions": { - "types": [] - } -}`, - "/dev/failure.json": `{ - "extends": "./failure2.json", - "compilerOptions": { - "typeRoots": [] - } -}`, - "/dev/failure2.json": `{ - "excludes": ["*.js"] -}`, - "/dev/configs/first.json": `{ - "extends": "./base", - "compilerOptions": { - "module": "commonjs" - }, - "files": ["../main.ts"] -}`, - "/dev/configs/second.json": `{ - "extends": "./base", - "compilerOptions": { - "module": "amd" - }, - "include": ["../supplemental.*"] -}`, - "/dev/extends.json": `{ "extends": 42 }`, - "/dev/extends2.json": `{ "extends": "configs/base" }`, + const testContentsJson = createMapFromTemplate({ + "/dev/tsconfig.json": { + extends: "./configs/base", + files: [ + "main.ts", + "supplemental.ts" + ] + }, + "/dev/tsconfig.nostrictnull.json": { + extends: "./tsconfig", + compilerOptions: { + strictNullChecks: false + } + }, + "/dev/configs/base.json": { + compilerOptions: { + allowJs: true, + noImplicitAny: true, + strictNullChecks: true + } + }, + "/dev/configs/tests.json": { + compilerOptions: { + "preserveConstEnums": true, + "removeComments": false, + "sourceMap": true + }, + exclude: [ + "../tests/baselines", + "../tests/scenarios" + ], + include: [ + "../tests/**/*.ts" + ] + }, + "/dev/circular.json": { + extends: "./circular2", + compilerOptions: { + module: "amd" + } + }, + "/dev/circular2.json": { + extends: "./circular", + compilerOptions: { + module: "commonjs" + } + }, + "/dev/missing.json": { + extends: "./missing2", + compilerOptions: { + "types": [] + } + }, + "/dev/failure.json": { + extends: "./failure2.json", + compilerOptions: { + typeRoots: [] + } + }, + "/dev/failure2.json": { + excludes: ["*.js"] + }, + "/dev/configs/first.json": { + extends: "./base", + compilerOptions: { + module: "commonjs" + }, + files: ["../main.ts"] + }, + "/dev/configs/second.json": { + extends: "./base", + compilerOptions: { + module: "amd" + }, + include: ["../supplemental.*"] + }, + "/dev/extends.json": { extends: 42 }, + "/dev/extends2.json": { extends: "configs/base" }, "/dev/main.ts": "", "/dev/supplemental.ts": "", "/dev/tests/unit/spec.ts": "", @@ -87,6 +87,7 @@ namespace ts { "/dev/tests/scenarios/first.json": "", "/dev/tests/baselines/first/output.ts": "" }); + const testContents = mapEntries(testContentsJson, (k, v) => [k, typeof v === "string" ? v : JSON.stringify(v)]); const caseInsensitiveBasePath = "c:/dev/"; const caseInsensitiveHost = new Utils.MockParseConfigHost(caseInsensitiveBasePath, /*useCaseSensitiveFileNames*/ false, mapEntries(testContents, (key, content) => [`c:${key}`, content])); From 4ae8df635a4865403b33d9916a328b2bb3bdb781 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 11 Apr 2017 14:18:11 -0700 Subject: [PATCH 2/2] Remove unnecessary use of getOwnKeys Also, fix a typo. --- src/compiler/commandLineParser.ts | 4 ++-- src/compiler/core.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index d5903b599b9..e067d0bf8a1 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -1007,7 +1007,7 @@ namespace ts { let seenKnownKeys = 0; const nameColumn: string[] = []; const descriptionColumn: string[] = []; - const knownKesyCount = getOwnKeys(configurations.compilerOptions).length; + const knownKeysCount = getOwnKeys(configurations.compilerOptions).length; for (const category in categorizedOptions) { if (nameColumn.length !== 0) { nameColumn.push(""); @@ -1018,7 +1018,7 @@ namespace ts { for (const option of categorizedOptions[category]) { let optionName; if (hasProperty(configurations.compilerOptions, option.name)) { - optionName = `"${option.name}": ${JSON.stringify(configurations.compilerOptions[option.name])}${(seenKnownKeys += 1) === knownKesyCount ? "" : ","}`; + optionName = `"${option.name}": ${JSON.stringify(configurations.compilerOptions[option.name])}${(seenKnownKeys += 1) === knownKeysCount ? "" : ","}`; } else { optionName = `// "${option.name}": ${JSON.stringify(getDefaultValueForOption(option))},`; diff --git a/src/compiler/core.ts b/src/compiler/core.ts index ac354e24eda..3e5b4ee5ce3 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -943,7 +943,7 @@ namespace ts { export function assign>(t: T1, ...args: any[]): any; export function assign>(t: T1, ...args: any[]) { for (const arg of args) { - for (const p of getOwnKeys(arg)) { + for (const p in arg) if (hasProperty(arg, p)) { t[p] = arg[p]; } }