diff --git a/.gitignore b/.gitignore index 59f1a905..d9855b00 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ test-results .yarn .pnp.* samples/**/coverage -tests-logs-* \ No newline at end of file +tests-logs-* +*.tsbuildinfo \ No newline at end of file diff --git a/README.md b/README.md index 9c93bbab..009b4062 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ These options are resolved relative to the [workspace file](https://code.visuals - `vitest.maximumConfigs`: The maximum amount of configs that Vitest extension can load. If exceeded, the extension will show a warning suggesting to use a workspace config file. Default: `5` - `vitest.logLevel`: How verbose should the logger be in the "Output" channel. Default: `info` - `vitest.applyDiagnostic`: Show a squiggly line where the error was thrown. This also enables the error count in the File Tab. Default: `true` +- `vitest.showInlineConsoleLog`: Show console.log messages inline in the editor next to the code that produced them. When disabled, console logs will still appear in the test output but not inline. Default: `true` - `vitest.experimentalStaticAstCollect`: uses AST parses to collect tests instead of running files and collecting them at runtime. Default: `true` ### Commands diff --git a/package.json b/package.json index ac00fae7..946522c5 100644 --- a/package.json +++ b/package.json @@ -261,12 +261,20 @@ "vitest.applyDiagnostic": { "description": "Show a squiggly line where the error was thrown. This also enables the error count in the File Tab.", "type": "boolean", - "default": true + "default": true, + "scope": "resource" }, "vitest.showImportsDuration": { "description": "Show how long it took to import the module during the last test run. If multiple isolated tests imported the module, the times will be aggregated.", "type": "boolean", - "default": true + "default": true, + "scope": "resource" + }, + "vitest.showInlineConsoleLog": { + "description": "Show inline console.log messages in the editor. When disabled, console logs will still appear in the test output but not inline next to the code.", + "type": "boolean", + "default": true, + "scope": "resource" } } } diff --git a/packages/extension/src/config.ts b/packages/extension/src/config.ts index b04944dc..d9856b2f 100644 --- a/packages/extension/src/config.ts +++ b/packages/extension/src/config.ts @@ -72,6 +72,7 @@ export function getConfig(workspaceFolder?: WorkspaceFolder) { const debugOutFiles = get('debugOutFiles', []) const applyDiagnostic = get('applyDiagnostic', true) const ignoreWorkspace = get('ignoreWorkspace', false) ?? false + const showInlineConsoleLog = get('showInlineConsoleLog', true) ?? true return { env: get>('nodeEnv', null), @@ -98,6 +99,7 @@ export function getConfig(workspaceFolder?: WorkspaceFolder) { debuggerAddress: get('debuggerAddress', undefined) || undefined, logLevel, showImportsDuration: get('showImportsDuration', true) ?? true, + showInlineConsoleLog, } } diff --git a/packages/extension/src/runner.ts b/packages/extension/src/runner.ts index 4b03cd8b..a2b8f350 100644 --- a/packages/extension/src/runner.ts +++ b/packages/extension/src/runner.ts @@ -11,6 +11,7 @@ import { getTasks } from '@vitest/runner/utils' import { basename, normalize, relative } from 'pathe' import { normalizeDriveLetter } from 'vitest-vscode-shared' import * as vscode from 'vscode' +import { getConfig } from './config' import { coverageContext, readCoverageReport } from './coverage' import { log } from './log' import { getTestData, TestCase, TestFile, TestFolder } from './testTreeData' @@ -30,6 +31,8 @@ export class TestRunner extends vscode.Disposable { private cancelled = false + private showInlineConsoleLog = true + constructor( private readonly controller: vscode.TestController, private readonly tree: TestTree, @@ -49,6 +52,9 @@ export class TestRunner extends vscode.Disposable { this.disposables = [] }) + // Initialize with workspace-specific config + this.showInlineConsoleLog = getConfig(api.workspaceFolder).showInlineConsoleLog + api.onStdout((content) => { if (this.testRun) { this.testRun.appendOutput(formatTestOutput(content)) @@ -163,8 +169,9 @@ export class TestRunner extends vscode.Disposable { const testRun = this.testRun if (testRun) { // Create location from parsed console log for inline display + // Only set location if inline console logs are enabled let location: vscode.Location | undefined - if (consoleLog.parsedLocation) { + if (consoleLog.parsedLocation && this.showInlineConsoleLog) { const uri = vscode.Uri.file(consoleLog.parsedLocation.file) const position = new vscode.Position( consoleLog.parsedLocation.line, @@ -183,6 +190,15 @@ export class TestRunner extends vscode.Disposable { log.info('[TEST]', consoleLog.content) } }) + + // Listen to configuration changes + this.disposables.push( + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration('vitest.showInlineConsoleLog', api.workspaceFolder.uri)) { + this.showInlineConsoleLog = getConfig(api.workspaceFolder).showInlineConsoleLog + } + }), + ) } protected endTestRun() { diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo deleted file mode 100644 index ca451d25..00000000 --- a/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"root":["./debug-shims.d.ts","./packages/extension/src/api.ts","./packages/extension/src/config.ts","./packages/extension/src/constants.ts","./packages/extension/src/coverage.ts","./packages/extension/src/debug.ts","./packages/extension/src/diagnostic.ts","./packages/extension/src/extension.ts","./packages/extension/src/importsbreakdownprovider.ts","./packages/extension/src/log.ts","./packages/extension/src/polyfills.ts","./packages/extension/src/runner.ts","./packages/extension/src/schemaprovider.ts","./packages/extension/src/tagsmanager.ts","./packages/extension/src/testtree.ts","./packages/extension/src/testtreedata.ts","./packages/extension/src/utils.ts","./packages/extension/src/watcher.ts","./packages/extension/src/api/child_process.ts","./packages/extension/src/api/pkg.ts","./packages/extension/src/api/resolve.ts","./packages/extension/src/api/rpc.ts","./packages/extension/src/api/terminal.ts","./packages/extension/src/api/types.ts","./packages/extension/src/api/ws.ts","./packages/extension/src/worker/browsersetupfile.ts","./packages/extension/src/worker/index.ts","./packages/shared/src/emitter.ts","./packages/shared/src/index.ts","./packages/shared/src/rpc.ts","./packages/shared/src/utils.ts","./packages/worker/src/coverage.ts","./packages/worker/src/index.ts","./packages/worker/src/reporter.ts","./packages/worker/src/runner.ts","./packages/worker/src/watcher.ts","./packages/worker/src/worker.ts","./packages/worker-legacy/src/collect.ts","./packages/worker-legacy/src/coverage.ts","./packages/worker-legacy/src/index.ts","./packages/worker-legacy/src/reporter.ts","./packages/worker-legacy/src/setupfile.ts","./packages/worker-legacy/src/types.ts","./packages/worker-legacy/src/watcher.ts","./packages/worker-legacy/src/worker.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file