Merge pull request #34365 from elibarzilay/fix-exit-code-on-bogus-build-file

Fix exit code on bogus build file
This commit is contained in:
Eli Barzilay
2019-10-15 15:09:45 -07:00
committed by GitHub
8 changed files with 35 additions and 16 deletions
+9 -15
View File
@@ -1788,31 +1788,25 @@ namespace ts {
let reportQueue = true;
let successfulProjects = 0;
let errorProjects = 0;
while (true) {
const invalidatedProject = getNextInvalidatedProject(state, buildOrder, reportQueue);
if (!invalidatedProject) break;
reportQueue = false;
invalidatedProject.done(cancellationToken);
if (state.diagnostics.has(invalidatedProject.projectPath)) {
errorProjects++;
}
else {
successfulProjects++;
}
if (!state.diagnostics.has(invalidatedProject.projectPath)) successfulProjects++;
}
disableCache(state);
reportErrorSummary(state, buildOrder);
startWatching(state, buildOrder);
return isCircularBuildOrder(buildOrder) ?
ExitStatus.ProjectReferenceCycle_OutputsSkupped :
errorProjects ?
successfulProjects ?
ExitStatus.DiagnosticsPresent_OutputsGenerated :
ExitStatus.DiagnosticsPresent_OutputsSkipped :
ExitStatus.Success;
return isCircularBuildOrder(buildOrder)
? ExitStatus.ProjectReferenceCycle_OutputsSkipped
: !buildOrder.some(p => state.diagnostics.has(toResolvedConfigFilePath(state, p)))
? ExitStatus.Success
: successfulProjects
? ExitStatus.DiagnosticsPresent_OutputsGenerated
: ExitStatus.DiagnosticsPresent_OutputsSkipped;
}
function clean(state: SolutionBuilderState, project?: string, onlyReferences?: boolean) {
@@ -1821,7 +1815,7 @@ namespace ts {
if (isCircularBuildOrder(buildOrder)) {
reportErrors(state, buildOrder.circularDiagnostics);
return ExitStatus.ProjectReferenceCycle_OutputsSkupped;
return ExitStatus.ProjectReferenceCycle_OutputsSkipped;
}
const { options, host } = state;
+3
View File
@@ -3261,6 +3261,9 @@ namespace ts {
InvalidProject_OutputsSkipped = 3,
// When build is skipped because project references form cycle
ProjectReferenceCycle_OutputsSkipped = 4,
/** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
ProjectReferenceCycle_OutputsSkupped = 4,
}
+1
View File
@@ -99,6 +99,7 @@
"unittests/tsbuild/demo.ts",
"unittests/tsbuild/emitDeclarationOnly.ts",
"unittests/tsbuild/emptyFiles.ts",
"unittests/tsbuild/exitCodeOnBogusFile.ts",
"unittests/tsbuild/graphOrdering.ts",
"unittests/tsbuild/inferredTypeFromTransitiveModule.ts",
"unittests/tsbuild/javascriptProjectEmit.ts",
+1 -1
View File
@@ -88,7 +88,7 @@ namespace ts {
}
]`
),
expectedExitStatus: ExitStatus.ProjectReferenceCycle_OutputsSkupped,
expectedExitStatus: ExitStatus.ProjectReferenceCycle_OutputsSkipped,
expectedDiagnostics: () => [
getExpectedDiagnosticForProjectsInBuild("src/animals/tsconfig.json", "src/zoo/tsconfig.json", "src/core/tsconfig.json", "src/tsconfig.json"),
errorDiagnostic([
@@ -0,0 +1,11 @@
namespace ts {
// https://github.com/microsoft/TypeScript/issues/33849
describe("unittests:: tsbuild:: exitCodeOnBogusFile:: test exit code", () => {
verifyTsc({
scenario: "exitCodeOnBogusFile",
subScenario: `test exit code`,
fs: () => loadProjectFromFiles({}, symbolLibContent),
commandLineArgs: ["-b", "bogus.json"]
});
});
}
+2
View File
@@ -1964,6 +1964,8 @@ declare namespace ts {
DiagnosticsPresent_OutputsSkipped = 1,
DiagnosticsPresent_OutputsGenerated = 2,
InvalidProject_OutputsSkipped = 3,
ProjectReferenceCycle_OutputsSkipped = 4,
/** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
ProjectReferenceCycle_OutputsSkupped = 4
}
export interface EmitResult {
+2
View File
@@ -1964,6 +1964,8 @@ declare namespace ts {
DiagnosticsPresent_OutputsSkipped = 1,
DiagnosticsPresent_OutputsGenerated = 2,
InvalidProject_OutputsSkipped = 3,
ProjectReferenceCycle_OutputsSkipped = 4,
/** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
ProjectReferenceCycle_OutputsSkupped = 4
}
export interface EmitResult {
@@ -0,0 +1,6 @@
//// [/lib/initial-buildOutput.txt]
/lib/tsc -b bogus.json
error TS6053: File '/bogus.json' not found.
exitCode:: 1