Skip to content

Commit e5c6151

Browse files
committed
test: Improve Test file loading performance
1 parent 17d0f52 commit e5c6151

2 files changed

Lines changed: 23 additions & 34 deletions

File tree

src/test/baselines/FileTypes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"ascii-textmate":["ASCII.textmate","fileTypes/ascii.property-list","fileTypes/firstLineASCII"],"coffeescript":["CSON.tmLanguage.cson"],"json-textmate":["DefinitionReferenceProvider.tmLanguage.json","DiagnosticCollection.tmLanguage.json","DocumentFormattingEditProvider-3spaces.tmLanguage.json","DocumentFormattingEditProvider-tabs.tmLanguage.json","JSON.tmLanguage.json","fileTypes/firstLineJSON","fileTypes/JSON.JSON-tmLanguage","fileTypes/json.tmGrammar.json","fileTypes/grammars/codeblock-markdown.json","fileTypes/grammars/javascript.tmLanguage copy 2 - Copy.json","fileTypes/grammars/javascript.tmLanguage copy 2.json","fileTypes/grammars/javascript.tmLanguage.json","fileTypes/syntaxes/code-block.json","fileTypes/syntaxes/injection.json","fileTypes/syntaxes/javascript.tmLanguage copy - Copy.json","fileTypes/syntaxes/javascript.tmLanguage copy.json"],"json":["package.json"],"xml":["XML.tmLanguage"],"yaml-textmate":["YAML.tmLanguage.yaml","fileTypes/YAML.YAML-tmLanguage","fileTypes/yml.tmLanguage.yml"],"tmgrammar-test":["fileTypes/baseline.baseline.txt","fileTypes/firstLineBASELINE","fileTypes/firstLineSNAP","fileTypes/hitt.hitt","fileTypes/snap.snap","fileTypes/tests/baselines/issue123.txt","fileTypes/syntaxes/fixtures/baselines/issue999.txt"],"json-textmate-regex":["fileTypes/regex.tmLanguage.json.regex"],"textmate-scopes":["fileTypes/textmate_scopes.txt"]}]
1+
[{"ascii-textmate":["fixtures/ASCII.textmate","fixtures/fileTypes/ascii.property-list","fixtures/fileTypes/firstLineASCII"],"coffeescript":["fixtures/CSON.tmLanguage.cson"],"json-textmate":["fixtures/DefinitionReferenceProvider.tmLanguage.json","fixtures/DiagnosticCollection.tmLanguage.json","fixtures/DocumentFormattingEditProvider-3spaces.tmLanguage.json","fixtures/DocumentFormattingEditProvider-tabs.tmLanguage.json","fixtures/JSON.tmLanguage.json","fixtures/fileTypes/JSON.JSON-tmLanguage","fixtures/fileTypes/firstLineJSON","fixtures/fileTypes/grammars/codeblock-markdown.json","fixtures/fileTypes/grammars/javascript.tmLanguage copy 2 - Copy.json","fixtures/fileTypes/grammars/javascript.tmLanguage copy 2.json","fixtures/fileTypes/grammars/javascript.tmLanguage.json","fixtures/fileTypes/json.tmGrammar.json","fixtures/fileTypes/syntaxes/code-block.json","fixtures/fileTypes/syntaxes/injection.json","fixtures/fileTypes/syntaxes/javascript.tmLanguage copy - Copy.json","fixtures/fileTypes/syntaxes/javascript.tmLanguage copy.json"],"xml":["fixtures/XML.tmLanguage"],"yaml-textmate":["fixtures/YAML.tmLanguage.yaml","fixtures/fileTypes/YAML.YAML-tmLanguage","fixtures/fileTypes/yml.tmLanguage.yml"],"tmgrammar-test":["fixtures/fileTypes/baseline.baseline.txt","fixtures/fileTypes/firstLineBASELINE","fixtures/fileTypes/firstLineSNAP","fixtures/fileTypes/hitt.hitt","fixtures/fileTypes/snap.snap","fixtures/fileTypes/syntaxes/fixtures/baselines/issue999.txt","fixtures/fileTypes/tests/baselines/issue123.txt"],"json-textmate-regex":["fixtures/fileTypes/regex.tmLanguage.json.regex"],"textmate-scopes":["fixtures/fileTypes/textmate_scopes.txt"],"json":["fixtures/package.json"]}]

src/test/suite/extension.test.ts

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,16 @@ suite('Extension Tests', async () => {
112112
});
113113

114114
test('Pre-load test Files', async () => {
115-
const fixtures = await vscode.workspace.fs.readDirectory(fixturesUri);
116-
const baselines = await vscode.workspace.fs.readDirectory(baselinesUri);
115+
const files = await vscode.workspace.findFiles(
116+
new vscode.RelativePattern(
117+
workspaceFolder.uri,
118+
'{fixtures,baselines}/**/*'
119+
)
120+
);
117121
/* await */ Promise.allSettled(
118-
[
119-
fixtures.map((file) => vscode.window.showTextDocument(
120-
vscode.Uri.joinPath(fixturesUri, file[0]),
121-
showTextDocumentOptions
122-
)),
123-
baselines.map((file) => vscode.window.showTextDocument(
124-
vscode.Uri.joinPath(baselinesUri, file[0]),
125-
showTextDocumentOptions
126-
)),
127-
].flat(1)
122+
files.map(
123+
uri => vscode.window.showTextDocument(uri, showTextDocumentOptions)
124+
)
128125
);
129126

130127
// Diagnostics can be slow
@@ -144,32 +141,24 @@ suite('Extension Tests', async () => {
144141
});
145142

146143
test('FileTypes', async () => {
147-
const files = await vscode.workspace.fs.readDirectory(fixturesUri);
148-
const languageIds: { [languageId: string]: string[]; } = {};
149-
150-
for (const file of files) {
151-
const path = file[0];
152-
153-
if (path == 'fileTypes/ascii.tm-grammar.plist') {
154-
// TODO: `fileTypes/ascii.tm-grammar.plist` should be `ascii-textmate`
144+
const files = await vscode.workspace.findFiles(new vscode.RelativePattern(fixturesUri, '**/*'));
145+
files.sort(); // Must be predictable
146+
const documents = await Promise.all(files.map(uri => vscode.workspace.openTextDocument(uri)));
147+
148+
const languageIds: {
149+
[languageId: string]: string[];
150+
} = {};
151+
152+
for (const document of documents) {
153+
const path = vscode.workspace.asRelativePath(document.uri, false);
154+
if (path == 'fixtures/fileTypes/ascii.tm-grammar.plist') {
155+
// TODO: `fixtures/fileTypes/ascii.tm-grammar.plist` should be `ascii-textmate`
155156
// Works correctly in vscode-web
156157
// Broken in VSCode desktop nodejs
157158
continue;
158159
}
159160

160-
if (file[1] === 2) {
161-
const nestedFiles = await vscode.workspace.fs.readDirectory(vscode.Uri.joinPath(fixturesUri, path));
162-
nestedFiles.forEach(file => file[0] = `${path}/${file[0]}`);
163-
files.push(...nestedFiles);
164-
continue;
165-
}
166-
167-
const editor = await vscode.window.showTextDocument(
168-
vscode.Uri.joinPath(fixturesUri, path),
169-
showTextDocumentOptions,
170-
);
171-
172-
const languageId = editor.document.languageId;
161+
const languageId = document.languageId;
173162
languageIds[languageId] ??= [];
174163
languageIds[languageId].push(path);
175164
}

0 commit comments

Comments
 (0)