Skip to content

Commit 566d32b

Browse files
committed
Refactor to write baseline of sourcemaps that are written
1 parent fb453f8 commit 566d32b

11 files changed

+2909
-17546
lines changed

src/testRunner/unittests/tsbuild/amdModulesWithOut.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,7 @@ namespace ts {
6767
tick,
6868
proj: "amdModulesWithOut",
6969
rootNames: ["/src/app"],
70-
expectedMapFileNames: [
71-
outputFiles[project.lib][ext.jsmap],
72-
outputFiles[project.lib][ext.dtsmap],
73-
outputFiles[project.app][ext.jsmap],
74-
outputFiles[project.app][ext.dtsmap],
75-
],
70+
baselineSourceMap: true,
7671
expectedBuildInfoFilesForSectionBaselines: [
7772
[outputFiles[project.lib][ext.buildinfo], outputFiles[project.lib][ext.js], outputFiles[project.lib][ext.dts]],
7873
[outputFiles[project.app][ext.buildinfo], outputFiles[project.app][ext.js], outputFiles[project.app][ext.dts]]
@@ -221,12 +216,7 @@ ${internal} export enum internalEnum { a, b, c }`);
221216
tick,
222217
proj: "amdModulesWithOut",
223218
rootNames: ["/src/app"],
224-
expectedMapFileNames: [
225-
libOutputFile[ext.jsmap],
226-
libOutputFile[ext.dtsmap],
227-
outputFiles[project.app][ext.jsmap],
228-
outputFiles[project.app][ext.dtsmap],
229-
],
219+
baselineSourceMap: true,
230220
expectedBuildInfoFilesForSectionBaselines: [
231221
[libOutputFile[ext.buildinfo], libOutputFile[ext.js], libOutputFile[ext.dts]],
232222
[outputFiles[project.app][ext.buildinfo], outputFiles[project.app][ext.js], outputFiles[project.app][ext.dts]]

src/testRunner/unittests/tsbuild/helpers.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,10 @@ interface Symbol {
164164
}
165165
}
166166

167-
function generateSourceMapBaselineFiles(fs: vfs.FileSystem, mapFileNames: ReadonlyArray<string>) {
168-
for (const mapFile of mapFileNames) {
167+
function generateSourceMapBaselineFiles(fs: vfs.FileSystem, mapFileNames: Iterator<string>) {
168+
while (true) {
169+
const { value: mapFile, done } = mapFileNames.next();
170+
if (done) break;
169171
if (!fs.existsSync(mapFile)) continue;
170172
const text = Harness.SourceMapRecorder.getSourceMapRecordWithVFS(fs, mapFile);
171173
fs.writeFileSync(`${mapFile}.baseline.txt`, text);
@@ -233,17 +235,24 @@ interface Symbol {
233235
fs: vfs.FileSystem;
234236
tick: () => void;
235237
rootNames: ReadonlyArray<string>;
236-
expectedMapFileNames?: ReadonlyArray<string>;
238+
baselineSourceMap?: true;
237239
expectedBuildInfoFilesForSectionBaselines?: ReadonlyArray<BuildInfoSectionBaselineFiles>;
238240
modifyFs: (fs: vfs.FileSystem) => void;
239241
}
240242

241-
function build({ fs, tick, rootNames, expectedMapFileNames, expectedBuildInfoFilesForSectionBaselines, modifyFs }: BuildInput) {
243+
function build({ fs, tick, rootNames, baselineSourceMap, expectedBuildInfoFilesForSectionBaselines, modifyFs }: BuildInput) {
242244
const actualReadFileMap = createMap<number>();
243245
modifyFs(fs);
244246
tick();
245247

246248
const host = new fakes.SolutionBuilderHost(fs);
249+
const writtenFiles = createMap<true>();
250+
const originalWriteFile = host.writeFile;
251+
host.writeFile = (fileName, content, writeByteOrderMark) => {
252+
assert.isFalse(writtenFiles.has(fileName));
253+
writtenFiles.set(fileName, true);
254+
return originalWriteFile.call(host, fileName, content, writeByteOrderMark);
255+
};
247256
const builder = createSolutionBuilder(host, rootNames, { dry: false, force: false, verbose: true });
248257
host.clearDiagnostics();
249258
const originalReadFile = host.readFile;
@@ -255,7 +264,7 @@ interface Symbol {
255264
return originalReadFile.call(host, path);
256265
};
257266
builder.build();
258-
if (expectedMapFileNames) generateSourceMapBaselineFiles(fs, expectedMapFileNames);
267+
if (baselineSourceMap) generateSourceMapBaselineFiles(fs, mapDefinedIterator(writtenFiles.keys(), f => f.endsWith(".map") ? f : undefined));
259268
generateBuildInfoSectionBaselineFiles(fs, expectedBuildInfoFilesForSectionBaselines || emptyArray);
260269
fs.makeReadonly();
261270
return { fs, actualReadFileMap, host, builder };
@@ -302,8 +311,6 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
302311
tick: () => void;
303312
proj: string;
304313
rootNames: ReadonlyArray<string>;
305-
/** map file names to generate baseline of */
306-
expectedMapFileNames?: ReadonlyArray<string>;
307314
expectedBuildInfoFilesForSectionBaselines?: ReadonlyArray<BuildInfoSectionBaselineFiles>;
308315
lastProjectOutput: string;
309316
initialBuild: BuildState;
@@ -313,11 +320,12 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
313320
incrementalHeaderChangedBuild?: BuildState;
314321
baselineOnly?: true;
315322
verifyDiagnostics?: true;
323+
baselineSourceMap?: true;
316324
}
317325

318326
export function verifyTsbuildOutput({
319327
scenario, projFs, time, tick, proj, rootNames, outputFiles, baselineOnly, verifyDiagnostics,
320-
expectedMapFileNames, expectedBuildInfoFilesForSectionBaselines, lastProjectOutput,
328+
baselineSourceMap, expectedBuildInfoFilesForSectionBaselines, lastProjectOutput,
321329
initialBuild, incrementalDtsChangedBuild, incrementalDtsUnchangedBuild, incrementalHeaderChangedBuild
322330
}: VerifyTsBuildInput) {
323331
describe(`tsc --b ${proj}:: ${scenario}`, () => {
@@ -330,7 +338,7 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
330338
fs: projFs().shadow(),
331339
tick,
332340
rootNames,
333-
expectedMapFileNames,
341+
baselineSourceMap,
334342
expectedBuildInfoFilesForSectionBaselines,
335343
modifyFs: initialBuild.modifyFs,
336344
});
@@ -374,7 +382,7 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
374382
fs: newFs,
375383
tick,
376384
rootNames,
377-
expectedMapFileNames,
385+
baselineSourceMap,
378386
expectedBuildInfoFilesForSectionBaselines,
379387
modifyFs: incrementalModifyFs,
380388
}));

src/testRunner/unittests/tsbuild/outFile.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,6 @@ namespace ts {
5555
]
5656
]
5757
];
58-
const expectedMapFileNames = [
59-
outputFiles[project.first][ext.jsmap],
60-
outputFiles[project.first][ext.dtsmap],
61-
outputFiles[project.second][ext.jsmap],
62-
outputFiles[project.second][ext.dtsmap],
63-
outputFiles[project.third][ext.jsmap],
64-
outputFiles[project.third][ext.dtsmap]
65-
];
6658
const expectedTsbuildInfoFileNames: ReadonlyArray<BuildInfoSectionBaselineFiles> = [
6759
[outputFiles[project.first][ext.buildinfo], outputFiles[project.first][ext.js], outputFiles[project.first][ext.dts]],
6860
[outputFiles[project.second][ext.buildinfo], outputFiles[project.second][ext.js], outputFiles[project.second][ext.dts]],
@@ -286,7 +278,7 @@ namespace ts {
286278
tick,
287279
proj: "outfile-concat",
288280
rootNames: ["/src/third"],
289-
expectedMapFileNames,
281+
baselineSourceMap: true,
290282
expectedBuildInfoFilesForSectionBaselines: expectedBuildInfoFilesForSectionBaselines || expectedTsbuildInfoFileNames,
291283
lastProjectOutput: outputFiles[project.third][ext.js],
292284
initialBuild: {

src/testRunner/unittests/tsbuild/sample.ts

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -612,11 +612,7 @@ export class cNew {}`);
612612
tick,
613613
proj: "sample1",
614614
rootNames: ["/src/tests"],
615-
expectedMapFileNames: [
616-
"/src/core/anotherModule.d.ts.map",
617-
"/src/core/index.d.ts.map",
618-
"/src/logic/index.js.map"
619-
],
615+
baselineSourceMap: true,
620616
lastProjectOutput: "/src/tests/index.js",
621617
initialBuild,
622618
incrementalDtsChangedBuild: {
@@ -722,11 +718,7 @@ class someClass { }`),
722718
tick,
723719
proj: "sample1",
724720
rootNames: ["/src/tests"],
725-
expectedMapFileNames: [
726-
"/src/core/anotherModule.d.ts.map",
727-
"/src/core/index.d.ts.map",
728-
"/src/logic/index.js.map"
729-
],
721+
baselineSourceMap: true,
730722
lastProjectOutput: "/src/tests/index.js",
731723
initialBuild,
732724
incrementalDtsChangedBuild: {
@@ -790,11 +782,7 @@ class someClass { }`),
790782
tick,
791783
proj: "sample1",
792784
rootNames: ["/src/tests"],
793-
expectedMapFileNames: [
794-
"/src/core/anotherModule.d.ts.map",
795-
"/src/core/index.d.ts.map",
796-
"/src/logic/index.js.map"
797-
],
785+
baselineSourceMap: true,
798786
lastProjectOutput: "/src/tests/index.js",
799787
initialBuild: {
800788
modifyFs: fs => replaceText(fs, "/src/logic/tsconfig.json", `"composite": true,`, `"composite": true,

0 commit comments

Comments
 (0)