Skip to content

Commit

Permalink
Tests refactor for easy comparison between outFile and multiFile scen…
Browse files Browse the repository at this point in the history
…ario (#58761)
  • Loading branch information
sheetalkamat committed Jun 3, 2024
1 parent 64fa3c7 commit 145b106
Show file tree
Hide file tree
Showing 159 changed files with 1,748 additions and 1,086 deletions.
2 changes: 1 addition & 1 deletion src/testRunner/unittests/helpers/declarationEmit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function forEachDeclarationEmitWithErrorsScenario(
for (const outFile of [false, true]) {
for (const incremental of [undefined, true] as const) {
action(
scenario => `${scenario}${outFile ? " outFile" : ""}${incremental ? " with incremental" : ""}`,
scenario => `${outFile ? "outFile" : "multiFile"}/${scenario}${incremental ? " with incremental" : ""}`,
() =>
(outFile ? getFsForDeclarationEmitWithErrorsWithOutFile :
getFsForDeclarationEmitWithErrors)(
Expand Down
2 changes: 1 addition & 1 deletion src/testRunner/unittests/helpers/noEmitOnError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function forEachNoEmitOnErrorScenario<T>(
for (const declaration of [undefined, true] as const) {
for (const incremental of [undefined, true] as const) {
action(
scenario => `${scenario}${outFile ? " outFile" : ""}${declaration ? " with declaration" : ""}${incremental ? " with incremental" : ""}`,
scenario => `${outFile ? "outFile" : "multiFile"}/${scenario}${declaration ? " with declaration" : ""}${incremental ? " with incremental" : ""}`,
() =>
loadFs(
getFsContentsForNoEmitOnError(outFile, declaration, incremental),
Expand Down
360 changes: 127 additions & 233 deletions src/testRunner/unittests/tsbuild/commandLine.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/testRunner/unittests/tsbuild/configFileErrors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ describe("unittests:: tsbuild:: configFileErrors:: reports syntax errors in conf
function verify(outFile?: object) {
verifyTsc({
scenario: "configFileErrors",
subScenario: `reports syntax errors in config file${outFile ? " with outFile" : ""}`,
subScenario: `${outFile ? "outFile" : "multiFile"}/reports syntax errors in config file`,
fs: () =>
loadProjectFromFiles({
"/src/a.ts": "export function foo() { }",
Expand Down
8 changes: 4 additions & 4 deletions src/testRunner/unittests/tsbuild/fileDelete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => {

verifyTsc({
scenario: "fileDelete",
subScenario: `detects deleted file`,
subScenario: `multiFile/detects deleted file`,
commandLineArgs: ["--b", "/src/main/tsconfig.json", "-v", "--traceResolution", "--explainFiles"],
fs: () => fs({ composite: true }, { composite: true }),
edits: [{
Expand All @@ -57,7 +57,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => {

verifyTsc({
scenario: "fileDelete",
subScenario: `detects deleted file with outFile`,
subScenario: `outFile/detects deleted file`,
commandLineArgs: ["--b", "/src/main/tsconfig.json", "-v", "--traceResolution", "--explainFiles"],
fs: () => fs({ composite: true, outFile: "../childResult.js", module: ts.ModuleKind.AMD }, { composite: true, outFile: "../mainResult.js", module: ts.ModuleKind.AMD }),
edits: [{
Expand All @@ -68,7 +68,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => {

verifyTsc({
scenario: "fileDelete",
subScenario: `deleted file without composite`,
subScenario: `multiFile/deleted file without composite`,
commandLineArgs: ["--b", "/src/child/tsconfig.json", "-v", "--traceResolution", "--explainFiles"],
fs: () => fs({}),
edits: [{
Expand All @@ -82,7 +82,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => {

verifyTsc({
scenario: "fileDelete",
subScenario: `deleted file with outFile without composite`,
subScenario: `outFile/deleted file without composite`,
commandLineArgs: ["--b", "/src/child/tsconfig.json", "-v", "--traceResolution", "--explainFiles"],
fs: () => fs({ outFile: "../childResult.js", module: ts.ModuleKind.AMD }),
edits: [{
Expand Down
44 changes: 22 additions & 22 deletions src/testRunner/unittests/tsbuild/noEmit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,35 @@ import {
import { loadProjectFromFiles } from "../helpers/vfs.js";

describe("unittests:: tsbuild:: noEmit", () => {
function verifyNoEmitWorker(subScenario: string, aTsContent: string, commandLineArgs: readonly string[], options?: object) {
verifyTsc({
scenario: "noEmit",
subScenario,
fs: () =>
loadProjectFromFiles({
"/src/a.ts": aTsContent,
"/src/tsconfig.json": jsonToReadableText({
compilerOptions: { ...options, noEmit: true },
function verifyNoEmitWorker(subScenario: string, aTsContent: string, commandLineArgs: readonly string[]) {
[{}, { outFile: "../outFile.js" }].forEach(options => {
verifyTsc({
scenario: "noEmit",
subScenario: `${options?.outFile ? "outFile" : "multiFile"}/${subScenario}`,
fs: () =>
loadProjectFromFiles({
"/src/a.ts": aTsContent,
"/src/tsconfig.json": jsonToReadableText({
compilerOptions: { ...options, noEmit: true },
}),
}),
}),
commandLineArgs,
edits: [
noChangeRun,
{
caption: "Fix error",
edit: fs => fs.writeFileSync("/src/a.ts", `const a = "hello"`),
},
noChangeRun,
],
baselinePrograms: true,
commandLineArgs,
edits: [
noChangeRun,
{
caption: "Fix error",
edit: fs => fs.writeFileSync("/src/a.ts", `const a = "hello"`),
},
noChangeRun,
],
baselinePrograms: true,
});
});
}

function verifyNoEmit(subScenario: string, aTsContent: string) {
verifyNoEmitWorker(subScenario, aTsContent, ["--b", "/src/tsconfig.json", "-v"]);
verifyNoEmitWorker(`${subScenario} with incremental`, aTsContent, ["--b", "/src/tsconfig.json", "-v", "--incremental"]);
verifyNoEmitWorker(`${subScenario} with outFile`, aTsContent, ["--b", "/src/tsconfig.json", "-v"], { outFile: "../outFile.js" });
verifyNoEmitWorker(`${subScenario} with outFile with incremental`, aTsContent, ["--b", "/src/tsconfig.json", "-v", "--incremental"], { outFile: "../outFile.js" });
}

verifyNoEmit("syntax errors", `const a = "hello`);
Expand Down
2 changes: 1 addition & 1 deletion src/testRunner/unittests/tsbuildWatch/configFileErrors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe("unittests:: tsbuildWatch:: watchMode:: configFileErrors:: reports synt
function verify(outFile?: object) {
verifyTscWatch({
scenario: "configFileErrors",
subScenario: `reports syntax errors in config file${outFile ? " with outFile" : ""}`,
subScenario: `${outFile ? "outFile" : "multiFile"}/reports syntax errors in config file`,
sys: () =>
createWatchedSystem(
[
Expand Down
2 changes: 1 addition & 1 deletion src/testRunner/unittests/tsbuildWatch/noEmit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe("unittests:: tsbuildWatch:: watchMode:: with noEmit", () => {
function verify(outFile?: object) {
verifyTscWatch({
scenario: "noEmit",
subScenario: `does not go in loop when watching when no files are emitted${outFile ? " with outFile" : ""}`,
subScenario: `${outFile ? "outFile" : "multiFile"}/does not go in loop when watching when no files are emitted`,
commandLineArgs: ["-b", "-w", "-verbose"],
sys: () =>
createWatchedSystem({
Expand Down
149 changes: 59 additions & 90 deletions src/testRunner/unittests/tsc/incremental.ts
Original file line number Diff line number Diff line change
Expand Up @@ -497,96 +497,65 @@ console.log(a);`,
},
};
}
verifyTsc({
scenario: "incremental",
subScenario: "different options",
fs: () => fs({ composite: true }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
noChangeRun,
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"),
withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly"),
noChangeRun,
localChange(),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
enableDeclarationMap(),
withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"),
],
baselinePrograms: true,
});
verifyTsc({
scenario: "incremental",
subScenario: "different options with outFile",
fs: () => fs({ composite: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
noChangeRun,
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"),
withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"),
noChangeRun,
localChange(),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
enableDeclarationMap(),
withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"),
],
baselinePrograms: true,
});
verifyTsc({
scenario: "incremental",
subScenario: "different options with incremental",
fs: () => fs({ incremental: true }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
withOptionChange("should re-emit only js so they dont contain sourcemap"),
withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
nochangeWithIncrementalDeclarationFromBeforeExplaination(),
localChange(),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
nochangeWithIncrementalDeclarationFromBeforeExplaination(),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("emit js files"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"),
],
baselinePrograms: true,
});
verifyTsc({
scenario: "incremental",
subScenario: "different options with incremental with outFile",
fs: () => fs({ incremental: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"),
withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
nochangeWithIncrementalOutDeclarationFromBeforeExplaination(),
localChange(),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
nochangeWithIncrementalOutDeclarationFromBeforeExplaination(),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("emit js files"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"),
],
baselinePrograms: true,
});
function verify(options: ts.CompilerOptions) {
function scenarioName(text: string) {
return `${options.outFile ? "outFile" : "multiFile"}/${text}`;
}
verifyTsc({
scenario: "incremental",
subScenario: scenarioName("different options"),
fs: () => fs({ composite: true, ...options }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
noChangeRun,
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"),
!options.outFile ?
withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly") :
withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"),
noChangeRun,
localChange(),
withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
enableDeclarationMap(),
withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"),
],
baselinePrograms: true,
});
verifyTsc({
scenario: "incremental",
subScenario: scenarioName("different options with incremental"),
fs: () => fs({ incremental: true, ...options }),
commandLineArgs: ["--p", "/src/project"],
edits: [
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"),
withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
!options.outFile ?
nochangeWithIncrementalDeclarationFromBeforeExplaination() :
nochangeWithIncrementalOutDeclarationFromBeforeExplaination(),
localChange(),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
!options.outFile ?
nochangeWithIncrementalDeclarationFromBeforeExplaination() :
nochangeWithIncrementalOutDeclarationFromBeforeExplaination(),
withOptionChange("with inlineSourceMap", "--inlineSourceMap"),
withOptionChange("with sourceMap", "--sourceMap"),
noChangeWithSubscenario("emit js files"),
withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"),
withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"),
],
baselinePrograms: true,
});
}

verify({});
verify({ outFile: "../outFile.js", module: ts.ModuleKind.AMD });
});

verifyTsc({
Expand Down

0 comments on commit 145b106

Please sign in to comment.