From 28239f2e165d2705e7dd13f93caf2a35e0a9232a Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Thu, 1 Sep 2016 12:57:23 -0700 Subject: [PATCH 1/2] Do not exclude outDir if exclude is given --- src/compiler/commandLineParser.ts | 11 +++-- src/harness/unittests/matchFiles.ts | 64 +++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index e1175c42438..3596233ed14 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -852,14 +852,13 @@ namespace ts { errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); } else { - // By default, exclude common package folders + // By default, exclude common package folders and the outDir excludeSpecs = ["node_modules", "bower_components", "jspm_packages"]; - } - // Always exclude the output directory unless explicitly included - const outDir = json["compilerOptions"] && json["compilerOptions"]["outDir"]; - if (outDir) { - excludeSpecs.push(outDir); + const outDir = json["compilerOptions"] && json["compilerOptions"]["outDir"]; + if (outDir) { + excludeSpecs.push(outDir); + } } if (fileNames === undefined && includeSpecs === undefined) { diff --git a/src/harness/unittests/matchFiles.ts b/src/harness/unittests/matchFiles.ts index 6b499e56989..018314c8a7c 100644 --- a/src/harness/unittests/matchFiles.ts +++ b/src/harness/unittests/matchFiles.ts @@ -1020,6 +1020,70 @@ namespace ts { assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); assert.deepEqual(actual.errors, expected.errors); }); + it("exclude outDir by default", () => { + const json = { + compilerOptions: { + outDir: "./x" + } + }; + const expected: ts.ParsedCommandLine = { + options: { + outDir: "./x" + }, + errors: [], + fileNames: [ + "c:/dev/a.ts", + "c:/dev/b.ts", + "c:/dev/c.d.ts", + "c:/dev/z/a.ts", + "c:/dev/z/aba.ts", + "c:/dev/z/abz.ts", + "c:/dev/z/b.ts", + "c:/dev/z/bba.ts", + "c:/dev/z/bbz.ts", + ], + wildcardDirectories: { + "c:/dev": ts.WatchDirectoryFlags.Recursive + } + }; + const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath); + assert.deepEqual(actual.fileNames, expected.fileNames); + assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); + assert.deepEqual(actual.errors, expected.errors); + }); + it("should not exclude outDir if exclude is given", () => { + const json = { + compilerOptions: { + outDir: "./x" + }, + exclude: [ + "z" + ] + }; + const expected: ts.ParsedCommandLine = { + options: { + outDir: "./x" + }, + errors: [], + fileNames: [ + "c:/dev/a.ts", + "c:/dev/b.ts", + "c:/dev/c.d.ts", + "c:/dev/x/a.ts", + "c:/dev/x/aa.ts", + "c:/dev/x/b.ts", + "c:/dev/x/y/a.ts", + "c:/dev/x/y/b.ts", + ], + wildcardDirectories: { + "c:/dev": ts.WatchDirectoryFlags.Recursive + } + }; + const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath); + assert.deepEqual(actual.fileNames, expected.fileNames); + assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); + assert.deepEqual(actual.errors, expected.errors); + }); describe("with trailing recursive directory", () => { it("in includes", () => { const json = { From 68f0f6769047a330a46b2badf9d9931a413d3180 Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Tue, 6 Sep 2016 17:46:54 -0700 Subject: [PATCH 2/2] Using existing test for outDir and removing new ones --- src/harness/unittests/matchFiles.ts | 64 ------------------------ src/harness/unittests/tsconfigParsing.ts | 4 +- 2 files changed, 2 insertions(+), 66 deletions(-) diff --git a/src/harness/unittests/matchFiles.ts b/src/harness/unittests/matchFiles.ts index 018314c8a7c..6b499e56989 100644 --- a/src/harness/unittests/matchFiles.ts +++ b/src/harness/unittests/matchFiles.ts @@ -1020,70 +1020,6 @@ namespace ts { assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); assert.deepEqual(actual.errors, expected.errors); }); - it("exclude outDir by default", () => { - const json = { - compilerOptions: { - outDir: "./x" - } - }; - const expected: ts.ParsedCommandLine = { - options: { - outDir: "./x" - }, - errors: [], - fileNames: [ - "c:/dev/a.ts", - "c:/dev/b.ts", - "c:/dev/c.d.ts", - "c:/dev/z/a.ts", - "c:/dev/z/aba.ts", - "c:/dev/z/abz.ts", - "c:/dev/z/b.ts", - "c:/dev/z/bba.ts", - "c:/dev/z/bbz.ts", - ], - wildcardDirectories: { - "c:/dev": ts.WatchDirectoryFlags.Recursive - } - }; - const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath); - assert.deepEqual(actual.fileNames, expected.fileNames); - assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); - assert.deepEqual(actual.errors, expected.errors); - }); - it("should not exclude outDir if exclude is given", () => { - const json = { - compilerOptions: { - outDir: "./x" - }, - exclude: [ - "z" - ] - }; - const expected: ts.ParsedCommandLine = { - options: { - outDir: "./x" - }, - errors: [], - fileNames: [ - "c:/dev/a.ts", - "c:/dev/b.ts", - "c:/dev/c.d.ts", - "c:/dev/x/a.ts", - "c:/dev/x/aa.ts", - "c:/dev/x/b.ts", - "c:/dev/x/y/a.ts", - "c:/dev/x/y/b.ts", - ], - wildcardDirectories: { - "c:/dev": ts.WatchDirectoryFlags.Recursive - } - }; - const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath); - assert.deepEqual(actual.fileNames, expected.fileNames); - assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories); - assert.deepEqual(actual.errors, expected.errors); - }); describe("with trailing recursive directory", () => { it("in includes", () => { const json = { diff --git a/src/harness/unittests/tsconfigParsing.ts b/src/harness/unittests/tsconfigParsing.ts index eccf3537643..447b69094b1 100644 --- a/src/harness/unittests/tsconfigParsing.ts +++ b/src/harness/unittests/tsconfigParsing.ts @@ -151,7 +151,7 @@ namespace ts { ); }); - it("always exclude outDir", () => { + it("exclude outDir unless overridden", () => { const tsconfigWithoutExclude = `{ "compilerOptions": { @@ -169,7 +169,7 @@ namespace ts { const allFiles = ["/bin/a.ts", "/b.ts"]; const expectedFiles = ["/b.ts"]; assertParseFileList(tsconfigWithoutExclude, "tsconfig.json", rootDir, allFiles, expectedFiles); - assertParseFileList(tsconfigWithExclude, "tsconfig.json", rootDir, allFiles, expectedFiles); + assertParseFileList(tsconfigWithExclude, "tsconfig.json", rootDir, allFiles, allFiles); }); it("implicitly exclude common package folders", () => {