mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 23:08:20 -06:00
Fixes missing error exit code when a bogus input file is specified
Fixes #33849.
This commit is contained in:
parent
f25575e5fe
commit
cd34808a14
@ -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_OutputsSkipped :
|
||||
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) {
|
||||
|
||||
@ -39,17 +39,19 @@ namespace ts {
|
||||
|
||||
interface VerifyBuild {
|
||||
modifyDiskLayout: (fs: vfs.FileSystem) => void;
|
||||
tsconfigs?: readonly string[];
|
||||
expectedExitStatus: ExitStatus;
|
||||
expectedDiagnostics: (fs: vfs.FileSystem) => fakes.ExpectedDiagnostic[];
|
||||
expectedOutputs: readonly string[];
|
||||
notExpectedOutputs: readonly string[];
|
||||
}
|
||||
|
||||
function verifyBuild({ modifyDiskLayout, expectedExitStatus, expectedDiagnostics, expectedOutputs, notExpectedOutputs }: VerifyBuild) {
|
||||
function verifyBuild({ modifyDiskLayout, tsconfigs = ["/src/tsconfig.json"],
|
||||
expectedExitStatus, expectedDiagnostics, expectedOutputs, notExpectedOutputs }: VerifyBuild) {
|
||||
const fs = projFs.shadow();
|
||||
const host = fakes.SolutionBuilderHost.create(fs);
|
||||
modifyDiskLayout(fs);
|
||||
const builder = createSolutionBuilder(host, ["/src/tsconfig.json"], { verbose: true });
|
||||
const builder = createSolutionBuilder(host, tsconfigs, { verbose: true });
|
||||
const exitStatus = builder.build();
|
||||
assert.equal(exitStatus, expectedExitStatus);
|
||||
host.assertDiagnosticMessages(...expectedDiagnostics(fs));
|
||||
@ -156,5 +158,19 @@ namespace ts {
|
||||
notExpectedOutputs: [...coreOutputs(), ...animalOutputs(), ...zooOutputs()]
|
||||
});
|
||||
});
|
||||
|
||||
it("returns an error exit in case of a bogus file", () => {
|
||||
verifyBuild({
|
||||
modifyDiskLayout: noop,
|
||||
tsconfigs: ["bogus.json"],
|
||||
expectedExitStatus: ExitStatus.DiagnosticsPresent_OutputsSkipped,
|
||||
expectedDiagnostics: _ => [
|
||||
getExpectedDiagnosticForProjectsInBuild("bogus.json"),
|
||||
errorDiagnostic([Diagnostics.File_0_not_found, "/bogus.json"]),
|
||||
],
|
||||
expectedOutputs: emptyArray,
|
||||
notExpectedOutputs: [...coreOutputs(), ...animalOutputs(), ...zooOutputs()]
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user