mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Make build info tolerant to json errors (#50265)
* Make build info tolerant to json errors Fixes #49754 * Fix incorrect code
This commit is contained in:
@@ -12,7 +12,8 @@ namespace ts {
|
||||
host.readFile = path => {
|
||||
const value = originalReadFile.call(host, path);
|
||||
if (!value || !isBuildInfoFile(path)) return value;
|
||||
const buildInfo = getBuildInfo(value);
|
||||
const buildInfo = getBuildInfo(path, value);
|
||||
if (!buildInfo) return value;
|
||||
buildInfo.version = fakes.version;
|
||||
return getBuildInfoText(buildInfo);
|
||||
};
|
||||
@@ -330,7 +331,8 @@ interface Symbol {
|
||||
if (!buildInfoPath || !sys.writtenFiles!.has(toPathWithSystem(sys, buildInfoPath))) return;
|
||||
if (!sys.fileExists(buildInfoPath)) return;
|
||||
|
||||
const buildInfo = getBuildInfo((originalReadCall || sys.readFile).call(sys, buildInfoPath, "utf8")!);
|
||||
const buildInfo = getBuildInfo(buildInfoPath, (originalReadCall || sys.readFile).call(sys, buildInfoPath, "utf8")!);
|
||||
if (!buildInfo) return sys.writeFile(`${buildInfoPath}.baseline.txt`, "Error reading valid buildinfo file");
|
||||
generateBuildInfoProgramBaseline(sys, buildInfoPath, buildInfo);
|
||||
|
||||
if (!outFile(options)) return;
|
||||
|
||||
@@ -168,6 +168,21 @@ namespace ts {
|
||||
commandLineArgs: ["--b", "/src/tests", "--verbose", "--force"],
|
||||
});
|
||||
|
||||
verifyTscWithEdits({
|
||||
scenario: "sample1",
|
||||
subScenario: "tsbuildinfo has error",
|
||||
fs: () => loadProjectFromFiles({
|
||||
"/src/project/main.ts": "export const x = 10;",
|
||||
"/src/project/tsconfig.json": "{}",
|
||||
"/src/project/tsconfig.tsbuildinfo": "Some random string",
|
||||
}),
|
||||
commandLineArgs: ["--b", "src/project", "-i", "-v"],
|
||||
edits: [{
|
||||
subScenario: "tsbuildinfo written has error",
|
||||
modifyFs: fs => prependText(fs, "/src/project/tsconfig.tsbuildinfo", "Some random string"),
|
||||
}]
|
||||
});
|
||||
|
||||
verifyTscCompileLike(testTscCompileLike, {
|
||||
scenario: "sample1",
|
||||
subScenario: "rebuilds completely when version in tsbuildinfo doesnt match ts version",
|
||||
|
||||
@@ -729,5 +729,18 @@ export function someFn() { }`),
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
verifyTscWatch({
|
||||
scenario: "programUpdates",
|
||||
subScenario: "tsbuildinfo has error",
|
||||
sys: () => createWatchedSystem({
|
||||
"/src/project/main.ts": "export const x = 10;",
|
||||
"/src/project/tsconfig.json": "{}",
|
||||
"/src/project/tsconfig.tsbuildinfo": "Some random string",
|
||||
[libFile.path]: libFile.content,
|
||||
}),
|
||||
commandLineArgs: ["--b", "src/project", "-i", "-w"],
|
||||
changes: emptyArray
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -73,6 +73,21 @@ namespace ts {
|
||||
edits: noChangeOnlyRuns
|
||||
});
|
||||
|
||||
verifyTscWithEdits({
|
||||
scenario: "incremental",
|
||||
subScenario: "tsbuildinfo has error",
|
||||
fs: () => loadProjectFromFiles({
|
||||
"/src/project/main.ts": "export const x = 10;",
|
||||
"/src/project/tsconfig.json": "{}",
|
||||
"/src/project/tsconfig.tsbuildinfo": "Some random string",
|
||||
}),
|
||||
commandLineArgs: ["--p", "src/project", "-i"],
|
||||
edits: [{
|
||||
subScenario: "tsbuildinfo written has error",
|
||||
modifyFs: fs => prependText(fs, "/src/project/tsconfig.tsbuildinfo", "Some random string"),
|
||||
}]
|
||||
});
|
||||
|
||||
describe("with noEmitOnError", () => {
|
||||
let projFs: vfs.FileSystem;
|
||||
before(() => {
|
||||
|
||||
@@ -374,5 +374,18 @@ export const Fragment: unique symbol;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
verifyTscWatch({
|
||||
scenario: "incremental",
|
||||
subScenario: "tsbuildinfo has error",
|
||||
sys: () => createWatchedSystem({
|
||||
"/src/project/main.ts": "export const x = 10;",
|
||||
"/src/project/tsconfig.json": "{}",
|
||||
"/src/project/tsconfig.tsbuildinfo": "Some random string",
|
||||
[libFile.path]: libFile.content,
|
||||
}),
|
||||
commandLineArgs: ["--p", "src/project", "-i", "-w"],
|
||||
changes: emptyArray
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user