Skip to content

Commit f6ac949

Browse files
committed
Separate out LargeFileReferencedEvent test
1 parent 04e190a commit f6ac949

File tree

3 files changed

+77
-75
lines changed

3 files changed

+77
-75
lines changed

src/testRunner/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
"unittests/tsconfigParsing.ts",
8989
"unittests/tscWatchEmit.ts",
9090
"unittests/tscWatchMode.ts",
91+
"unittests/tsserverLargeFileReferencedEvent.ts",
9192
"unittests/tsserverProjectLoadingEvents.ts",
9293
"unittests/tsserverProjectSystem.ts",
9394
"unittests/tsserverProjectUpdatedInBackgroundEvent.ts",
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
namespace ts.projectSystem {
2+
describe("tsserverLargeFileReferencedEvent:: LargeFileReferencedEvent with large file", () => {
3+
const projectRoot = "/user/username/projects/project";
4+
5+
function getLargeFile(useLargeTsFile: boolean) {
6+
return `src/large.${useLargeTsFile ? "ts" : "js"}`;
7+
}
8+
9+
function createSessionWithEventHandler(files: File[], useLargeTsFile: boolean) {
10+
const largeFile: File = {
11+
path: `${projectRoot}/${getLargeFile(useLargeTsFile)}`,
12+
content: "export var x = 10;",
13+
fileSize: server.maxFileSize + 1
14+
};
15+
files.push(largeFile);
16+
const host = createServerHost(files);
17+
const { session, events: largeFileReferencedEvents } = createSessionWithEventTracking<server.LargeFileReferencedEvent>(host, server.LargeFileReferencedEvent);
18+
19+
return { session, verifyLargeFile };
20+
21+
function verifyLargeFile(project: server.Project) {
22+
checkProjectActualFiles(project, files.map(f => f.path));
23+
24+
// large file for non ts file should be empty and for ts file should have content
25+
const service = session.getProjectService();
26+
const info = service.getScriptInfo(largeFile.path)!;
27+
assert.equal(info.cacheSourceFile!.sourceFile.text, useLargeTsFile ? largeFile.content : "");
28+
29+
assert.deepEqual(largeFileReferencedEvents, useLargeTsFile ? emptyArray : [{
30+
eventName: server.LargeFileReferencedEvent,
31+
data: { file: largeFile.path, fileSize: largeFile.fileSize, maxFileSize: server.maxFileSize }
32+
}]);
33+
}
34+
}
35+
36+
function verifyLargeFile(useLargeTsFile: boolean) {
37+
it("when large file is included by tsconfig", () => {
38+
const file: File = {
39+
path: `${projectRoot}/src/file.ts`,
40+
content: "export var y = 10;"
41+
};
42+
const tsconfig: File = {
43+
path: `${projectRoot}/tsconfig.json`,
44+
content: JSON.stringify({ files: ["src/file.ts", getLargeFile(useLargeTsFile)], compilerOptions: { target: 1, allowJs: true } })
45+
};
46+
const files = [file, libFile, tsconfig];
47+
const { session, verifyLargeFile } = createSessionWithEventHandler(files, useLargeTsFile);
48+
const service = session.getProjectService();
49+
openFilesForSession([file], session);
50+
checkNumberOfProjects(service, { configuredProjects: 1 });
51+
verifyLargeFile(service.configuredProjects.get(tsconfig.path)!);
52+
});
53+
54+
it("when large file is included by module resolution", () => {
55+
const file: File = {
56+
path: `${projectRoot}/src/file.ts`,
57+
content: `export var y = 10;import {x} from "./large"`
58+
};
59+
const files = [file, libFile];
60+
const { session, verifyLargeFile } = createSessionWithEventHandler(files, useLargeTsFile);
61+
const service = session.getProjectService();
62+
openFilesForSession([file], session);
63+
checkNumberOfProjects(service, { inferredProjects: 1 });
64+
verifyLargeFile(service.inferredProjects[0]);
65+
});
66+
}
67+
68+
describe("large file is ts file", () => {
69+
verifyLargeFile(/*useLargeTsFile*/ true);
70+
});
71+
72+
describe("large file is js file", () => {
73+
verifyLargeFile(/*useLargeTsFile*/ false);
74+
});
75+
});
76+
}

src/testRunner/unittests/tsserverProjectSystem.ts

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -7102,81 +7102,6 @@ new C();`
71027102
});
71037103
});
71047104

7105-
describe("tsserverProjectSystem with large file", () => {
7106-
const projectRoot = "/user/username/projects/project";
7107-
7108-
function getLargeFile(useLargeTsFile: boolean) {
7109-
return `src/large.${useLargeTsFile ? "ts" : "js"}`;
7110-
}
7111-
7112-
function createSessionWithEventHandler(files: File[], useLargeTsFile: boolean) {
7113-
const largeFile: File = {
7114-
path: `${projectRoot}/${getLargeFile(useLargeTsFile)}`,
7115-
content: "export var x = 10;",
7116-
fileSize: server.maxFileSize + 1
7117-
};
7118-
files.push(largeFile);
7119-
const host = createServerHost(files);
7120-
const { session, events: largeFileReferencedEvents } = createSessionWithEventTracking<server.LargeFileReferencedEvent>(host, server.LargeFileReferencedEvent);
7121-
7122-
return { session, verifyLargeFile };
7123-
7124-
function verifyLargeFile(project: server.Project) {
7125-
checkProjectActualFiles(project, files.map(f => f.path));
7126-
7127-
// large file for non ts file should be empty and for ts file should have content
7128-
const service = session.getProjectService();
7129-
const info = service.getScriptInfo(largeFile.path)!;
7130-
assert.equal(info.cacheSourceFile!.sourceFile.text, useLargeTsFile ? largeFile.content : "");
7131-
7132-
assert.deepEqual(largeFileReferencedEvents, useLargeTsFile ? emptyArray : [{
7133-
eventName: server.LargeFileReferencedEvent,
7134-
data: { file: largeFile.path, fileSize: largeFile.fileSize, maxFileSize: server.maxFileSize }
7135-
}]);
7136-
}
7137-
}
7138-
7139-
function verifyLargeFile(useLargeTsFile: boolean) {
7140-
it("when large file is included by tsconfig", () => {
7141-
const file: File = {
7142-
path: `${projectRoot}/src/file.ts`,
7143-
content: "export var y = 10;"
7144-
};
7145-
const tsconfig: File = {
7146-
path: `${projectRoot}/tsconfig.json`,
7147-
content: JSON.stringify({ files: ["src/file.ts", getLargeFile(useLargeTsFile)], compilerOptions: { target: 1, allowJs: true } })
7148-
};
7149-
const files = [file, libFile, tsconfig];
7150-
const { session, verifyLargeFile } = createSessionWithEventHandler(files, useLargeTsFile);
7151-
const service = session.getProjectService();
7152-
openFilesForSession([file], session);
7153-
checkNumberOfProjects(service, { configuredProjects: 1 });
7154-
verifyLargeFile(service.configuredProjects.get(tsconfig.path)!);
7155-
});
7156-
7157-
it("when large file is included by module resolution", () => {
7158-
const file: File = {
7159-
path: `${projectRoot}/src/file.ts`,
7160-
content: `export var y = 10;import {x} from "./large"`
7161-
};
7162-
const files = [file, libFile];
7163-
const { session, verifyLargeFile } = createSessionWithEventHandler(files, useLargeTsFile);
7164-
const service = session.getProjectService();
7165-
openFilesForSession([file], session);
7166-
checkNumberOfProjects(service, { inferredProjects: 1 });
7167-
verifyLargeFile(service.inferredProjects[0]);
7168-
});
7169-
}
7170-
7171-
describe("large file is ts file", () => {
7172-
verifyLargeFile(/*useLargeTsFile*/ true);
7173-
});
7174-
7175-
describe("large file is js file", () => {
7176-
verifyLargeFile(/*useLargeTsFile*/ false);
7177-
});
7178-
});
7179-
71807105
describe("tsserverProjectSystem syntax operations", () => {
71817106
function navBarFull(session: TestSession, file: File) {
71827107
return JSON.stringify(session.executeCommandSeq<protocol.FileRequest>({

0 commit comments

Comments
 (0)