test: adopt refresh action

This commit is contained in:
Connor Peet
2022-01-06 13:01:53 -08:00
parent 11f80d1e8b
commit 2f1d70f74e
5 changed files with 29 additions and 17 deletions

View File

@ -4,4 +4,4 @@ node_modules
*.vsix
/vscode.d.ts
/vscode.proposed.testCoverage.d.ts
/vscode.proposed.*.d.ts

View File

@ -1277,9 +1277,9 @@
"dev": true
},
"vscode-dts": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/vscode-dts/-/vscode-dts-0.3.2.tgz",
"integrity": "sha512-vL6p3MYuRgyvztEyK/X+7KH8JqMrqzxSvZZi8e0eMubCj2v0POmypitJ93EcHSkZbULA2mCK6mdp5bZ5Re/bZw==",
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/vscode-dts/-/vscode-dts-0.3.3.tgz",
"integrity": "sha512-JfOsWL0NvfVw0UF9bcTjlv1Onz3Ted7cgpPWKWMnHGB+72t/tn8WFDeKLZO42l2k9KJq/NGS9rFC5gZbyI4FTg==",
"dev": true,
"requires": {
"minimist": "^1.2.0",

View File

@ -5,9 +5,9 @@
"version": "0.0.1",
"publisher": "vscode-samples",
"repository": "https://github.com/Microsoft/vscode-extension-samples",
"enableProposedApi": true,
"enabledApiProposals": [
"testCoverage"
"testCoverage",
"testRefresh"
],
"engines": {
"vscode": "^1.51.0"
@ -39,6 +39,6 @@
"@typescript-eslint/parser": "^4.16.0",
"eslint": "^7.21.0",
"typescript": "^4.2.2",
"vscode-dts": "^0.3.2"
"vscode-dts": "^0.3.3"
}
}

View File

@ -85,7 +85,11 @@ export async function activate(context: vscode.ExtensionContext) {
discoverTests(request.include ?? gatherTestItems(ctrl.items)).then(runTestQueue);
};
ctrl.refreshHandler = async () => {
await Promise.all(getWorkspaceTestPatterns().map(({ pattern }) => findInitialFiles(ctrl, pattern)));
};
ctrl.createRunProfile('Run Tests', vscode.TestRunProfileKind.Run, runHandler, true);
ctrl.resolveHandler = async item => {
@ -145,13 +149,25 @@ function gatherTestItems(collection: vscode.TestItemCollection) {
return items;
}
function startWatchingWorkspace(controller: vscode.TestController) {
function getWorkspaceTestPatterns() {
if (!vscode.workspace.workspaceFolders) {
return [];
}
return vscode.workspace.workspaceFolders.map(workspaceFolder => {
const pattern = new vscode.RelativePattern(workspaceFolder, '**/*.md');
return vscode.workspace.workspaceFolders.map(workspaceFolder => ({
workspaceFolder,
pattern: new vscode.RelativePattern(workspaceFolder, '**/*.md'),
}));
}
async function findInitialFiles(controller: vscode.TestController, pattern: vscode.GlobPattern) {
for (const file of await vscode.workspace.findFiles(pattern)) {
getOrCreateFile(controller, file);
}
}
function startWatchingWorkspace(controller: vscode.TestController) {
return getWorkspaceTestPatterns().map(({ workspaceFolder, pattern }) => {
const watcher = vscode.workspace.createFileSystemWatcher(pattern);
watcher.onDidCreate(uri => getOrCreateFile(controller, uri));
@ -163,11 +179,7 @@ function startWatchingWorkspace(controller: vscode.TestController) {
});
watcher.onDidDelete(uri => controller.items.delete(uri.toString()));
vscode.workspace.findFiles(pattern).then(files => {
for (const file of files) {
getOrCreateFile(controller, file);
}
});
findInitialFiles(controller, pattern);
return watcher;
});

View File

@ -29,7 +29,7 @@ export class TestFile {
item.error = undefined;
this.updateFromContents(controller, content, item);
} catch (e) {
item.error = e.stack;
item.error = (e as Error).stack;
}
}