From 8f26c66a69f406842191551eb3cfbcbbe390b846 Mon Sep 17 00:00:00 2001 From: Mate Pek Date: Sun, 27 Apr 2025 11:02:14 +0800 Subject: [PATCH 1/2] exec-test-implicit-all step 1 --- src/TestItemManager.ts | 12 ++++++++++++ src/framework/AbstractExecutable.ts | 4 +++- src/framework/SharedVarOfExec.ts | 4 ++++ src/main.ts | 15 +++++++++++++++ test/cpp/.vscode/settings.json | 18 +++++++++--------- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/TestItemManager.ts b/src/TestItemManager.ts index 6de88061..a8e99ce4 100644 --- a/src/TestItemManager.ts +++ b/src/TestItemManager.ts @@ -1,6 +1,7 @@ import * as vscode from 'vscode'; import { AbstractTest } from './framework/AbstractTest'; import { parseLine } from './Util'; +import { AbstractExecutable } from './framework/AbstractExecutable'; /// @@ -110,4 +111,15 @@ export class TestItemManager { } } } + + // maps only if the TestItem explicitly represents the executable. relates to groupByExecuable + private readonly testItem2ExecDirectly = new WeakMap(); + + setDirectExec(item: vscode.TestItem, exec: AbstractExecutable): void { + this.testItem2ExecDirectly.set(item, exec); + } + + getDirectExec(item: vscode.TestItem): AbstractExecutable | undefined { + return this.testItem2ExecDirectly.get(item); + } } diff --git a/src/framework/AbstractExecutable.ts b/src/framework/AbstractExecutable.ts index 6c21bcd3..318f7667 100644 --- a/src/framework/AbstractExecutable.ts +++ b/src/framework/AbstractExecutable.ts @@ -328,6 +328,7 @@ export abstract class AbstractExecutable => { this._updateVarsWithTags(g, tags, tagsResolveRule); @@ -630,7 +631,7 @@ export abstract class AbstractExecutable { for (const i of this.direct) yield i; diff --git a/src/framework/SharedVarOfExec.ts b/src/framework/SharedVarOfExec.ts index 8c343f1e..af2a4143 100644 --- a/src/framework/SharedVarOfExec.ts +++ b/src/framework/SharedVarOfExec.ts @@ -65,6 +65,10 @@ export class SharedVarOfExec { return this._frameworkSpecific.failIfExceedsLimitNs; } + get enableRunExecutableTestsImplicitly(): boolean { + return true; //TODO + } + /// accessors for shared readonly log = this.shared.log; diff --git a/src/main.ts b/src/main.ts index 8c28a3b7..89c09ca2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -103,6 +103,7 @@ export async function activate(context: vscode.ExtensionContext): Promise if (request.exclude?.includes(item)) return; const test = testItemManager.map(item); + const directExec = test ? undefined : testItemManager.getDirectExec(item); if (test) { const executable = test.exec; @@ -118,6 +119,20 @@ export async function activate(context: vscode.ExtensionContext): Promise executables.set(executable, tests); } tests[type].push(test); + } else if (directExec && directExec.shared.enableRunExecutableTestsImplicitly) { + const executable = directExec; + const manager = workspace2manager.get(executable.shared.workspaceFolder)!; + let executables = managers.get(manager); + if (!executables) { + executables = new Map(); + managers.set(manager, executables); + } + let tests = executables.get(executable); + if (!tests) { + tests = new TestsToRun(); + executables.set(executable, tests); + } + tests.implicitAll = true; } else if (item.children.size) { item.children.forEach(enumerator('parent')); } diff --git a/test/cpp/.vscode/settings.json b/test/cpp/.vscode/settings.json index 4be1c905..9d12212f 100644 --- a/test/cpp/.vscode/settings.json +++ b/test/cpp/.vscode/settings.json @@ -26,15 +26,15 @@ // }, // }, // }, - // { - // "pattern": "build/*.exe", - // // "testGrouping": { - // // "groupByExecutable": { - // // "groupBySplittedTestName": { - // // }, - // // }, - // // }, - // } + { + "pattern": "build/*.exe", + // "testGrouping": { + // "groupByExecutable": { + // "groupBySplittedTestName": { + // }, + // }, + // }, + } ], "files.exclude": { "**/sub/**": false, From a4ec09240bafb8e53842b5f7fb0c3b188636a54f Mon Sep 17 00:00:00 2001 From: Mate Pek Date: Tue, 20 May 2025 14:55:26 +0700 Subject: [PATCH 2/2] something --- .vscode/settings.json | 17 ++++++++++++++--- package-lock.json | 4 ++-- src/WorkspaceManager.ts | 8 ++++++++ test/cpp/.vscode/settings.json | 18 +++++++++--------- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 763115f4..02ab67a6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -116,7 +116,16 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, - "todo-tree.general.tags": ["BUG", "HACK", "FIXME", "TODO", "TODO:future", "TODO:nice", "TODO:release", "XXX"], + "todo-tree.general.tags": [ + "BUG", + "HACK", + "FIXME", + "TODO", + "TODO:future", + "TODO:nice", + "TODO:release", + "XXX" + ], "todo-tree.highlights.customHighlight": { "TODO:future": { "type": "none" @@ -138,5 +147,7 @@ "**/bower_components": true, "**/*.code-search": true, "/package-lock.json": true - } -} + }, + "cmake.sourceDirectory": "/Users/matepek/repo/vscode-catch2-test-adapter/test/cpp", + "testMate.cpp.test.executables": "test/cpp/build/**/*{test,Test,TEST}*" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1a09dce8..b79c5578 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-catch2-test-adapter", - "version": "4.14.1", + "version": "4.15.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-catch2-test-adapter", - "version": "4.14.1", + "version": "4.15.0", "license": "MIT", "dependencies": { "ansi-colors": "^4.1.3", diff --git a/src/WorkspaceManager.ts b/src/WorkspaceManager.ts index 22d574fd..a286ca54 100644 --- a/src/WorkspaceManager.ts +++ b/src/WorkspaceManager.ts @@ -511,6 +511,14 @@ export class WorkspaceManager implements vscode.Disposable { }); }); + vscode.debug.onDidReceiveDebugSessionCustomEvent((_e: vscode.DebugSessionCustomEvent) => { + this._shared.log.info('TODO'); + }); + + vscode.debug.onDidChangeActiveDebugSession((_e: vscode.DebugSession | undefined) => { + this._shared.log.info('TODO'); + }); + const terminated = new Promise(resolve => { vscode.debug.onDidTerminateDebugSession((session: vscode.DebugSession) => { const session2 = session as unknown as { configuration: { [prop: string]: string } }; diff --git a/test/cpp/.vscode/settings.json b/test/cpp/.vscode/settings.json index 9d12212f..4be1c905 100644 --- a/test/cpp/.vscode/settings.json +++ b/test/cpp/.vscode/settings.json @@ -26,15 +26,15 @@ // }, // }, // }, - { - "pattern": "build/*.exe", - // "testGrouping": { - // "groupByExecutable": { - // "groupBySplittedTestName": { - // }, - // }, - // }, - } + // { + // "pattern": "build/*.exe", + // // "testGrouping": { + // // "groupByExecutable": { + // // "groupBySplittedTestName": { + // // }, + // // }, + // // }, + // } ], "files.exclude": { "**/sub/**": false,