mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
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:
+9
-15
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"]
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user