Skip to content

Commit e54d5ca

Browse files
committed
outFile to baseline
1 parent 5390c64 commit e54d5ca

File tree

6 files changed

+812
-101
lines changed

6 files changed

+812
-101
lines changed

src/testRunner/unittests/tsbuild/outFile.ts

Lines changed: 43 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,6 @@ namespace ts {
5656
]
5757
];
5858
const relSources = sources.map(([config, sources]) => [relName(config), sources.map(relName)]) as any as [Sources, Sources, Sources];
59-
let expectedOutputFiles = [
60-
...outputFiles[project.first],
61-
...outputFiles[project.second],
62-
...outputFiles[project.third]
63-
];
6459
let initialExpectedDiagnostics: readonly fakes.ExpectedDiagnostic[] = [
6560
getExpectedDiagnosticForProjectsInBuild(relSources[project.first][source.config], relSources[project.second][source.config], relSources[project.third][source.config]),
6661
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.first][source.config], relOutputFiles[project.first][ext.js]],
@@ -75,7 +70,6 @@ namespace ts {
7570
});
7671
after(() => {
7772
outFileFs = undefined!;
78-
expectedOutputFiles = undefined!;
7973
initialExpectedDiagnostics = undefined!;
8074
});
8175

@@ -166,71 +160,37 @@ namespace ts {
166160
baselineOnly: true
167161
});
168162

169-
it("clean projects", () => {
163+
function getOutFileFsAfterBuild() {
170164
const fs = outFileFs.shadow();
171-
const expectedOutputs = [
172-
...outputFiles[project.first],
173-
...outputFiles[project.second],
174-
...outputFiles[project.third]
175-
];
176165
const host = fakes.SolutionBuilderHost.create(fs);
177166
const builder = createSolutionBuilder(host);
178167
builder.build();
179-
host.assertDiagnosticMessages(...initialExpectedDiagnostics);
180-
// Verify they exist
181-
verifyOutputsPresent(fs, expectedOutputs);
182-
host.clearDiagnostics();
183-
builder.clean();
184-
host.assertDiagnosticMessages(/*none*/);
185-
// Verify they are gone
186-
verifyOutputsAbsent(fs, expectedOutputs);
187-
// Subsequent clean shouldn't throw / etc
188-
builder.clean();
189-
});
190-
191-
it("verify buildInfo absence results in new build", () => {
192-
const { fs, tick } = getFsWithTime(outFileFs);
193-
const expectedOutputs = [
194-
...outputFiles[project.first],
195-
...outputFiles[project.second],
196-
...outputFiles[project.third]
197-
];
198-
const host = fakes.SolutionBuilderHost.create(fs);
199-
let builder = createSolutionBuilder(host);
200-
builder.build();
201-
host.assertDiagnosticMessages(...initialExpectedDiagnostics);
202-
// Verify they exist
203-
verifyOutputsPresent(fs, expectedOutputs);
204-
// Delete bundle info
205-
host.clearDiagnostics();
168+
fs.makeReadonly();
169+
return fs;
170+
}
206171

207-
tick();
208-
host.deleteFile(outputFiles[project.first][ext.buildinfo]);
209-
tick();
172+
verifyTscIncrementalEdits({
173+
scenario: "outFile",
174+
subScenario: "clean projects",
175+
fs: getOutFileFsAfterBuild,
176+
commandLineArgs: ["--b", "/src/third", "--clean"],
177+
incrementalScenarios: [noChangeRun]
178+
});
210179

211-
builder = createSolutionBuilder(host);
212-
builder.build();
213-
host.assertDiagnosticMessages(
214-
getExpectedDiagnosticForProjectsInBuild(relSources[project.first][source.config], relSources[project.second][source.config], relSources[project.third][source.config]),
215-
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.first][source.config], relOutputFiles[project.first][ext.buildinfo]],
216-
[Diagnostics.Building_project_0, sources[project.first][source.config]],
217-
[Diagnostics.Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2, relSources[project.second][source.config], relSources[project.second][source.ts][part.one], relOutputFiles[project.second][ext.js]],
218-
[Diagnostics.Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed, relSources[project.third][source.config], "src/first"],
219-
[Diagnostics.Updating_output_of_project_0, sources[project.third][source.config]],
220-
[Diagnostics.Updating_unchanged_output_timestamps_of_project_0, sources[project.third][source.config]],
221-
);
180+
verifyTsc({
181+
scenario: "outFile",
182+
subScenario: "verify buildInfo absence results in new build",
183+
fs: getOutFileFsAfterBuild,
184+
commandLineArgs: ["--b", "/src/third", "--verbose"],
185+
modifyFs: fs => fs.unlinkSync(outputFiles[project.first][ext.buildinfo]),
222186
});
223187

224-
it("verify that if incremental is set to false, tsbuildinfo is not generated", () => {
225-
const fs = outFileFs.shadow();
226-
const host = fakes.SolutionBuilderHost.create(fs);
227-
replaceText(fs, sources[project.third][source.config], `"composite": true,`, "");
228-
const builder = createSolutionBuilder(host);
229-
builder.build();
230-
host.assertDiagnosticMessages(...initialExpectedDiagnostics);
231-
// Verify they exist - without tsbuildinfo for third project
232-
verifyOutputsPresent(fs, expectedOutputFiles.slice(0, expectedOutputFiles.length - 2));
233-
verifyOutputsAbsent(fs, [outputFiles[project.third][ext.buildinfo]]);
188+
verifyTsc({
189+
scenario: "outFile",
190+
subScenario: "tsbuildinfo is not generated when incremental is set to false",
191+
fs: () => outFileFs,
192+
commandLineArgs: ["--b", "/src/third", "--verbose"],
193+
modifyFs: fs => replaceText(fs, sources[project.third][source.config], `"composite": true,`, ""),
234194
});
235195

236196
it("rebuilds completely when version in tsbuildinfo doesnt match ts version", () => {
@@ -747,44 +707,26 @@ ${internal} enum internalEnum { a, b, c }`);
747707
});
748708
});
749709

750-
it("non module projects without prepend", () => {
751-
const fs = outFileFs.shadow();
752-
// No prepend
753-
replaceText(fs, sources[project.third][source.config], `{ "path": "../first", "prepend": true }`, `{ "path": "../first" }`);
754-
replaceText(fs, sources[project.third][source.config], `{ "path": "../second", "prepend": true }`, `{ "path": "../second" }`);
755-
756-
// Non Modules
757-
replaceText(fs, sources[project.first][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
758-
replaceText(fs, sources[project.second][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
759-
replaceText(fs, sources[project.third][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
760-
761-
// Own file emit
762-
replaceText(fs, sources[project.first][source.config], `"outFile": "./bin/first-output.js",`, "");
763-
replaceText(fs, sources[project.second][source.config], `"outFile": "../2/second-output.js",`, "");
764-
replaceText(fs, sources[project.third][source.config], `"outFile": "./thirdjs/output/third-output.js",`, "");
765-
766-
const host = fakes.SolutionBuilderHost.create(fs);
767-
const builder = createSolutionBuilder(host);
768-
builder.build();
769-
host.assertDiagnosticMessages(
770-
getExpectedDiagnosticForProjectsInBuild(relSources[project.first][source.config], relSources[project.second][source.config], relSources[project.third][source.config]),
771-
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.first][source.config], "src/first/first_PART1.js"],
772-
[Diagnostics.Building_project_0, sources[project.first][source.config]],
773-
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.second][source.config], "src/second/second_part1.js"],
774-
[Diagnostics.Building_project_0, sources[project.second][source.config]],
775-
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.third][source.config], "src/third/third_part1.js"],
776-
[Diagnostics.Building_project_0, sources[project.third][source.config]]
777-
);
778-
const expectedOutputFiles = flatMap(sources, ([config, ts]) => [
779-
removeFileExtension(config) + Extension.TsBuildInfo,
780-
...flatMap(ts, f => [
781-
removeFileExtension(f) + Extension.Js,
782-
removeFileExtension(f) + Extension.Js + ".map",
783-
removeFileExtension(f) + Extension.Dts,
784-
removeFileExtension(f) + Extension.Dts + ".map",
785-
])
786-
]);
787-
verifyOutputsPresent(fs, expectedOutputFiles);
710+
verifyTsc({
711+
scenario: "outFile",
712+
subScenario: "non module projects without prepend",
713+
fs: () => outFileFs,
714+
commandLineArgs: ["--b", "/src/third", "--verbose"],
715+
modifyFs: fs => {
716+
// No prepend
717+
replaceText(fs, sources[project.third][source.config], `{ "path": "../first", "prepend": true }`, `{ "path": "../first" }`);
718+
replaceText(fs, sources[project.third][source.config], `{ "path": "../second", "prepend": true }`, `{ "path": "../second" }`);
719+
720+
// Non Modules
721+
replaceText(fs, sources[project.first][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
722+
replaceText(fs, sources[project.second][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
723+
replaceText(fs, sources[project.third][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
724+
725+
// Own file emit
726+
replaceText(fs, sources[project.first][source.config], `"outFile": "./bin/first-output.js",`, "");
727+
replaceText(fs, sources[project.second][source.config], `"outFile": "../2/second-output.js",`, "");
728+
replaceText(fs, sources[project.third][source.config], `"outFile": "./thirdjs/output/third-output.js",`, "");
729+
},
788730
});
789731
});
790732
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//// [/lib/initial-buildOutput.txt]
2+
/lib/tsc --b /src/third --clean
3+
exitCode:: ExitStatus.Success
4+
5+
6+
//// [/src/2/second-output.d.ts] unlink
7+
//// [/src/2/second-output.d.ts.map] unlink
8+
//// [/src/2/second-output.js] unlink
9+
//// [/src/2/second-output.js.map] unlink
10+
//// [/src/2/second-output.tsbuildinfo] unlink
11+
//// [/src/first/bin/first-output.d.ts] unlink
12+
//// [/src/first/bin/first-output.d.ts.map] unlink
13+
//// [/src/first/bin/first-output.js] unlink
14+
//// [/src/first/bin/first-output.js.map] unlink
15+
//// [/src/first/bin/first-output.tsbuildinfo] unlink
16+
//// [/src/third/thirdjs/output/third-output.d.ts] unlink
17+
//// [/src/third/thirdjs/output/third-output.d.ts.map] unlink
18+
//// [/src/third/thirdjs/output/third-output.js] unlink
19+
//// [/src/third/thirdjs/output/third-output.js.map] unlink
20+
//// [/src/third/thirdjs/output/third-output.tsbuildinfo] unlink

0 commit comments

Comments
 (0)