Skip to content

Commit 9370347

Browse files
authored
Fix missing sanitization in verifyTsc baselines for timestamps (#58609)
1 parent 75342d8 commit 9370347

File tree

415 files changed

+2534
-1602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

415 files changed

+2534
-1602
lines changed

src/testRunner/unittests/helpers/baseline.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ import { jsonToReadableText } from "../helpers.js";
55
import { TscCompileSystem } from "./tsc.js";
66
import { TestServerHost } from "./virtualFileSystemWithWatch.js";
77

8+
export function sanitizeSysOutput(output: string) {
9+
return output
10+
.replace(/Elapsed::\s[0-9]+(?:\.\d+)?ms/g, "Elapsed:: *ms")
11+
.replace(/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s(A|P)M/g, "HH:MM:SS AM");
12+
}
13+
814
export type CommandLineProgram = [ts.Program, ts.BuilderProgram?];
915
export interface CommandLineCallbacks {
1016
cb: ts.ExecuteCommandLineCallbacks;

src/testRunner/unittests/helpers/tsc.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
ReadableBuildInfo,
1414
ReadableProgramBuildInfoFileInfo,
1515
ReadableProgramMultiFileEmitBuildInfo,
16+
sanitizeSysOutput,
1617
toPathWithSystem,
1718
tscBaselineName,
1819
} from "./baseline.js";
@@ -88,7 +89,7 @@ export function testTscCompileLike(input: TestTscCompileLike) {
8889
${baseFsPatch ? vfs.formatPatch(baseFsPatch) : ""}
8990
9091
Output::
91-
${sys.output.join("")}
92+
${sys.output.map(sanitizeSysOutput).join("")}
9293
9394
${patch ? vfs.formatPatch(patch) : ""}`,
9495
};

src/testRunner/unittests/helpers/tscWatch.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,7 @@ function changeToTestServerHostWithTimeoutLogging(host: TestServerHostTrackingWr
104104
log: s => baseline.push(s),
105105
logs: baseline,
106106
};
107-
host.timeoutCallbacks.switchToBaseliningInvoke(logger, SerializeOutputOrder.BeforeDiff);
108-
host.immediateCallbacks.switchToBaseliningInvoke(logger, SerializeOutputOrder.BeforeDiff);
107+
host.switchToBaseliningInvoke(logger, SerializeOutputOrder.BeforeDiff);
109108
return host;
110109
}
111110

src/testRunner/unittests/helpers/tsserver.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import {
2020
FileOrFolderOrSymLink,
2121
libFile,
2222
SerializeOutputOrder,
23-
StateLogger,
2423
TestServerHost,
2524
TestServerHostTrackingWrittenFiles,
2625
} from "./virtualFileSystemWithWatch.js";
@@ -56,21 +55,11 @@ export function patchHostTimeouts(
5655
return host;
5756
}
5857

59-
const originalSetTime = host.setTime;
60-
61-
host.timeoutCallbacks.switchToBaseliningInvoke(logger, SerializeOutputOrder.None);
62-
host.immediateCallbacks.switchToBaseliningInvoke(logger as StateLogger, SerializeOutputOrder.None);
63-
host.pendingInstalls.switchToBaseliningInvoke(logger, SerializeOutputOrder.None);
64-
host.setTime = setTime;
58+
host.switchToBaseliningInvoke(logger, SerializeOutputOrder.None);
6559
host.baselineHost = baselineHost;
6660
host.patched = true;
6761
return host;
6862

69-
function setTime(time: number) {
70-
logger.log(`Host is moving to new time`);
71-
return originalSetTime.call(host, time);
72-
}
73-
7463
function baselineHost(title: string) {
7564
logger.log(title);
7665
host.serializeState(logger.logs, SerializeOutputOrder.None);

src/testRunner/unittests/helpers/virtualFileSystemWithWatch.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
WatchUtils,
55
} from "../../../harness/watchUtils.js";
66
import {
7+
append,
78
arrayFrom,
89
clear,
910
clone,
@@ -46,6 +47,7 @@ import {
4647
} from "../../_namespaces/ts.js";
4748
import { typingsInstaller } from "../../_namespaces/ts.server.js";
4849
import { timeIncrements } from "../../_namespaces/vfs.js";
50+
import { sanitizeSysOutput } from "./baseline.js";
4951

5052
export const libFile: File = {
5153
path: "/a/lib/lib.d.ts",
@@ -458,6 +460,17 @@ export class TestServerHost implements server.ServerHost, FormatDiagnosticsHost,
458460
this.time = time;
459461
}
460462

463+
switchToBaseliningInvoke(logger: StateLogger, serializeOutputOrder: SerializeOutputOrder) {
464+
const originalSetTime = this.setTime;
465+
this.setTime = time => {
466+
logger.log(`Host is moving to new time`);
467+
return originalSetTime.call(this, time);
468+
};
469+
this.timeoutCallbacks.switchToBaseliningInvoke(logger, serializeOutputOrder);
470+
this.immediateCallbacks.switchToBaseliningInvoke(logger, serializeOutputOrder);
471+
this.pendingInstalls.switchToBaseliningInvoke(logger, serializeOutputOrder);
472+
}
473+
461474
private reloadFS(fileOrFolderOrSymLinkList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[]) {
462475
Debug.assert(this.fs.size === 0);
463476
if (isArray(fileOrFolderOrSymLinkList)) {
@@ -1180,11 +1193,7 @@ function diffFsEntry(baseline: string[], oldFsEntry: FSEntry | undefined, newFsE
11801193
function baselineOutputs(baseline: string[], output: readonly string[], start: number, end = output.length) {
11811194
let baselinedOutput: string[] | undefined;
11821195
for (let i = start; i < end; i++) {
1183-
(baselinedOutput ||= []).push(
1184-
output[i]
1185-
.replace(/Elapsed::\s[0-9]+(?:\.\d+)?ms/g, "Elapsed:: *ms")
1186-
.replace(/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s(A|P)M/g, "HH:MM:SS AM"),
1187-
);
1196+
baselinedOutput = append(baselinedOutput, sanitizeSysOutput(output[i]));
11881197
}
11891198
if (baselinedOutput) baseline.push(baselinedOutput.join(""));
11901199
}

tests/baselines/reference/tsbuild/amdModulesWithOut/modules-and-globals-mixed-in-amd.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,17 @@ const globalConst = 10;
7676

7777
Output::
7878
/lib/tsc --b /src/app --verbose
79-
[[90m12:00:16 AM[0m] Projects in this build:
79+
[[90mHH:MM:SS AM[0m] Projects in this build:
8080
* src/lib/tsconfig.json
8181
* src/app/tsconfig.json
8282

83-
[[90m12:00:17 AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.tsbuildinfo' does not exist
83+
[[90mHH:MM:SS AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.tsbuildinfo' does not exist
8484

85-
[[90m12:00:18 AM[0m] Building project '/src/lib/tsconfig.json'...
85+
[[90mHH:MM:SS AM[0m] Building project '/src/lib/tsconfig.json'...
8686

87-
[[90m12:00:26 AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
87+
[[90mHH:MM:SS AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
8888

89-
[[90m12:00:27 AM[0m] Building project '/src/app/tsconfig.json'...
89+
[[90mHH:MM:SS AM[0m] Building project '/src/app/tsconfig.json'...
9090

9191
exitCode:: ExitStatus.Success
9292

@@ -675,17 +675,17 @@ export const x = 10;console.log(x);
675675

676676
Output::
677677
/lib/tsc --b /src/app --verbose
678-
[[90m12:00:40 AM[0m] Projects in this build:
678+
[[90mHH:MM:SS AM[0m] Projects in this build:
679679
* src/lib/tsconfig.json
680680
* src/app/tsconfig.json
681681

682-
[[90m12:00:41 AM[0m] Project 'src/lib/tsconfig.json' is out of date because output 'src/lib/module.tsbuildinfo' is older than input 'src/lib/file1.ts'
682+
[[90mHH:MM:SS AM[0m] Project 'src/lib/tsconfig.json' is out of date because output 'src/lib/module.tsbuildinfo' is older than input 'src/lib/file1.ts'
683683

684-
[[90m12:00:42 AM[0m] Building project '/src/lib/tsconfig.json'...
684+
[[90mHH:MM:SS AM[0m] Building project '/src/lib/tsconfig.json'...
685685

686-
[[90m12:00:49 AM[0m] Project 'src/app/tsconfig.json' is up to date with .d.ts files from its dependencies
686+
[[90mHH:MM:SS AM[0m] Project 'src/app/tsconfig.json' is up to date with .d.ts files from its dependencies
687687

688-
[[90m12:00:50 AM[0m] Updating output timestamps of project '/src/app/tsconfig.json'...
688+
[[90mHH:MM:SS AM[0m] Updating output timestamps of project '/src/app/tsconfig.json'...
689689

690690
exitCode:: ExitStatus.Success
691691

tests/baselines/reference/tsbuild/amdModulesWithOut/prepend-reports-deprecation-error.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,17 @@ const globalConst = 10;
7777

7878
Output::
7979
/lib/tsc --b /src/app --verbose
80-
[[90m12:00:16 AM[0m] Projects in this build:
80+
[[90mHH:MM:SS AM[0m] Projects in this build:
8181
* src/lib/tsconfig.json
8282
* src/app/tsconfig.json
8383

84-
[[90m12:00:17 AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.tsbuildinfo' does not exist
84+
[[90mHH:MM:SS AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.tsbuildinfo' does not exist
8585

86-
[[90m12:00:18 AM[0m] Building project '/src/lib/tsconfig.json'...
86+
[[90mHH:MM:SS AM[0m] Building project '/src/lib/tsconfig.json'...
8787

88-
[[90m12:00:26 AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
88+
[[90mHH:MM:SS AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
8989

90-
[[90m12:00:27 AM[0m] Building project '/src/app/tsconfig.json'...
90+
[[90mHH:MM:SS AM[0m] Building project '/src/app/tsconfig.json'...
9191

9292
src/app/tsconfig.json:15:5 - error TS5102: Option 'prepend' has been removed. Please remove it from your configuration.
9393

@@ -469,17 +469,17 @@ export const x = 10;console.log(x);
469469

470470
Output::
471471
/lib/tsc --b /src/app --verbose
472-
[[90m12:00:31 AM[0m] Projects in this build:
472+
[[90mHH:MM:SS AM[0m] Projects in this build:
473473
* src/lib/tsconfig.json
474474
* src/app/tsconfig.json
475475

476-
[[90m12:00:32 AM[0m] Project 'src/lib/tsconfig.json' is out of date because output 'src/lib/module.tsbuildinfo' is older than input 'src/lib/file1.ts'
476+
[[90mHH:MM:SS AM[0m] Project 'src/lib/tsconfig.json' is out of date because output 'src/lib/module.tsbuildinfo' is older than input 'src/lib/file1.ts'
477477

478-
[[90m12:00:33 AM[0m] Building project '/src/lib/tsconfig.json'...
478+
[[90mHH:MM:SS AM[0m] Building project '/src/lib/tsconfig.json'...
479479

480-
[[90m12:00:40 AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
480+
[[90mHH:MM:SS AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
481481

482-
[[90m12:00:41 AM[0m] Building project '/src/app/tsconfig.json'...
482+
[[90mHH:MM:SS AM[0m] Building project '/src/app/tsconfig.json'...
483483

484484
src/app/tsconfig.json:15:5 - error TS5102: Option 'prepend' has been removed. Please remove it from your configuration.
485485

tests/baselines/reference/tsbuild/amdModulesWithOut/when-the-module-resolution-finds-original-source-file.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,17 @@ const globalConst = 10;
7676

7777
Output::
7878
/lib/tsc -b /src/app --verbose
79-
[[90m12:00:18 AM[0m] Projects in this build:
79+
[[90mHH:MM:SS AM[0m] Projects in this build:
8080
* src/lib/tsconfig.json
8181
* src/app/tsconfig.json
8282

83-
[[90m12:00:19 AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/module.tsbuildinfo' does not exist
83+
[[90mHH:MM:SS AM[0m] Project 'src/lib/tsconfig.json' is out of date because output file 'src/module.tsbuildinfo' does not exist
8484

85-
[[90m12:00:20 AM[0m] Building project '/src/lib/tsconfig.json'...
85+
[[90mHH:MM:SS AM[0m] Building project '/src/lib/tsconfig.json'...
8686

87-
[[90m12:00:28 AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
87+
[[90mHH:MM:SS AM[0m] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.tsbuildinfo' does not exist
8888

89-
[[90m12:00:29 AM[0m] Building project '/src/app/tsconfig.json'...
89+
[[90mHH:MM:SS AM[0m] Building project '/src/app/tsconfig.json'...
9090

9191
exitCode:: ExitStatus.Success
9292

tests/baselines/reference/tsbuild/clean/tsx-with-dts-emit.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ export const x = 10;
3333

3434
Output::
3535
/lib/tsc --b src/project -v --explainFiles
36-
[[90m12:00:10 AM[0m] Projects in this build:
36+
[[90mHH:MM:SS AM[0m] Projects in this build:
3737
* src/project/tsconfig.json
3838

39-
[[90m12:00:11 AM[0m] Project 'src/project/tsconfig.json' is out of date because output file 'src/project/src/main.js' does not exist
39+
[[90mHH:MM:SS AM[0m] Project 'src/project/tsconfig.json' is out of date because output file 'src/project/src/main.js' does not exist
4040

41-
[[90m12:00:12 AM[0m] Building project '/src/project/tsconfig.json'...
41+
[[90mHH:MM:SS AM[0m] Building project '/src/project/tsconfig.json'...
4242

4343
lib/lib.d.ts
4444
Default library for target 'es5'
@@ -66,10 +66,10 @@ Input::
6666

6767
Output::
6868
/lib/tsc --b src/project -v --explainFiles
69-
[[90m12:00:15 AM[0m] Projects in this build:
69+
[[90mHH:MM:SS AM[0m] Projects in this build:
7070
* src/project/tsconfig.json
7171

72-
[[90m12:00:16 AM[0m] Project 'src/project/tsconfig.json' is up to date because newest input 'src/project/src/main.tsx' is older than output 'src/project/src/main.js'
72+
[[90mHH:MM:SS AM[0m] Project 'src/project/tsconfig.json' is up to date because newest input 'src/project/src/main.tsx' is older than output 'src/project/src/main.js'
7373

7474
exitCode:: ExitStatus.Success
7575

0 commit comments

Comments
 (0)