diff --git a/src/ConfigOfExecGroup.ts b/src/ConfigOfExecGroup.ts index 986b860a..b8c46370 100644 --- a/src/ConfigOfExecGroup.ts +++ b/src/ConfigOfExecGroup.ts @@ -16,7 +16,7 @@ import { GazeWrapper, VSCFSWatcherWrapper, FSWatcher } from './util/FSWatcher'; import { readJSONSync } from 'fs-extra'; import { Spawner, DefaultSpawner, SpawnWithExecutor } from './Spawner'; import { RunTaskConfig, ExecutionWrapperConfig, FrameworkSpecificConfig } from './AdvancedExecutableInterface'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import { debugBreak } from './util/DevelopmentHelper'; import { FrameworkType } from './framework/Framework'; import { readFileSync } from 'fs'; @@ -525,7 +525,7 @@ export class ConfigOfExecGroup implements vscode.Disposable { } } -function checkEnvForPath(env: Record, log: LoggerWrapper): void { +function checkEnvForPath(env: Record, log: Logger): void { if (process.platform === 'win32') { checkPathVariance('PATH', env, log); checkPathVariance('Path', env, log); @@ -533,7 +533,7 @@ function checkEnvForPath(env: Record, log: LoggerWrapper): void } } -function checkPathVariance(variance: string, env: Record, log: LoggerWrapper): void { +function checkPathVariance(variance: string, env: Record, log: Logger): void { if (variance in env) { if (env[variance].indexOf('/') != -1) log.warn(`Env variable ${variance} contains slash on Windows: "${env[variance]}". That won't really work.`); diff --git a/src/Configurations.ts b/src/Configurations.ts index fe8aed2c..c21ee45a 100644 --- a/src/Configurations.ts +++ b/src/Configurations.ts @@ -1,5 +1,5 @@ import * as vscode from 'vscode'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import { ConfigOfExecGroup } from './ConfigOfExecGroup'; import { WorkspaceShared } from './WorkspaceShared'; import { hashString } from './Util'; @@ -66,7 +66,7 @@ export const setEnvKey = 'testMate.cpp.debug.setEnv'; export class Configurations { private _cfg: vscode.WorkspaceConfiguration; - constructor(readonly _log: LoggerWrapper, private _workspaceFolderUri: vscode.Uri) { + constructor(readonly _log: Logger, private _workspaceFolderUri: vscode.Uri) { this._cfg = vscode.workspace.getConfiguration(ConfigSectionBase, _workspaceFolderUri); } diff --git a/src/Logger.ts b/src/Logger.ts new file mode 100644 index 00000000..c778b63a --- /dev/null +++ b/src/Logger.ts @@ -0,0 +1,89 @@ +import * as util from 'vscode-test-adapter-util'; +import { debugBreak } from './util/DevelopmentHelper'; + +/// + +export class Logger { + constructor() { + this._logger = new util.Log('testMate.cpp.log', undefined, 'C++ TestMate', { depth: 3 }, false); + } + + private _logger: util.Log; + + //eslint-disable-next-line + trace(msg: any, ...msgs: any[]): void { + process.env['TESTMATE_DEBUG'] && this._logger.debug(msg, ...msgs); + } + + //eslint-disable-next-line + debug(msg: any, ...msgs: any[]): void { + this._logger.debug(msg, ...msgs); + } + + //eslint-disable-next-line + debugS(msg: any, ...msgs: any[]): void { + this._logger.debug(msg, ...msgs); + } + + //eslint-disable-next-line + setContext(name: string, context: { [key: string]: any } | null): void { + this._logger.info('context:' + name, context); + } + + setTags(_tags: { [key: string]: string }): void {} + + //eslint-disable-next-line + info(msg: any, ...msgs: any[]): void { + this._logger.info(msg, ...msgs); + } + + //eslint-disable-next-line + infoS(_m: string, ...msg: any[]): void { + this._logger.info(...msg); + } + + infoSWithTags(m: string, tags: { [key: string]: string }): void { + this._logger.info(m, tags); + } + + //eslint-disable-next-line + warn(m: string, ...msg: any[]): void { + this._logger.warn(m, ...msg); + } + + //eslint-disable-next-line + warnS(m: string, ...msg: any[]): void { + this._logger.warn(m, ...msg); + } + + //eslint-disable-next-line + error(m: string, ...msg: any[]): void { + if (!m.startsWith('TODO')) debugBreak(); + this._logger.error(m, ...msg); + } + + //eslint-disable-next-line + errorS(m: string, ...msg: any[]): void { + this.error(m, ...msg); + } + + //eslint-disable-next-line + exception(e: unknown, ...msg: unknown[]): void { + debugBreak(); + this._logger.error(e, ...msg); + } + + //eslint-disable-next-line + exceptionS(e: unknown, ...msg: unknown[]): void { + debugBreak(); + this._logger.error(e, ...msg); + } + + setNextInspectOptions(inspectOptions: util.InspectOptions): void { + this._logger.setNextInspectOptions(inspectOptions); + } + + dispose(): void { + this._logger.dispose(); + } +} diff --git a/src/LoggerWrapper.ts b/src/LoggerWrapper.ts deleted file mode 100644 index 55c71f75..00000000 --- a/src/LoggerWrapper.ts +++ /dev/null @@ -1,58 +0,0 @@ -import * as util from 'vscode-test-adapter-util'; -import { debugBreak } from './util/DevelopmentHelper'; - -/// - -export class LoggerWrapper extends util.Log { - constructor(configSection: string, outputChannelName: string) { - super(configSection, undefined, outputChannelName, { depth: 3 }, false); - } - - //eslint-disable-next-line - trace(msg: any, ...msgs: any[]): void { - process.env['TESTMATE_DEBUG'] && super.debug(msg, ...msgs); - } - - //eslint-disable-next-line - debugS(msg: any, ...msgs: any[]): void { - super.debug(msg, ...msgs); - } - - //eslint-disable-next-line - setContext(name: string, context: { [key: string]: any } | null): void { - super.info('context:' + name, context); - } - - setTags(_tags: { [key: string]: string }): void {} - - //eslint-disable-next-line - infoS(_m: string, ...msg: any[]): void { - super.info(...msg); - } - - infoSWithTags(m: string, tags: { [key: string]: string }): void { - super.info(m, tags); - } - - //eslint-disable-next-line - warnS(m: string, ...msg: any[]): void { - super.warn(m, ...msg); - } - - //eslint-disable-next-line - override error(m: string, ...msg: any[]): void { - if (!m.startsWith('TODO')) debugBreak(); - super.error(m, ...msg); - } - - //eslint-disable-next-line - errorS(m: string, ...msg: any[]): void { - this.error(m, ...msg); - } - - //eslint-disable-next-line - exceptionS(e: unknown, ...msg: unknown[]): void { - debugBreak(); - super.error(e, ...msg); - } -} diff --git a/src/RunningExecutable.ts b/src/RunningExecutable.ts index c021a95f..0b1465e2 100644 --- a/src/RunningExecutable.ts +++ b/src/RunningExecutable.ts @@ -3,7 +3,7 @@ import * as ansi from 'ansi-colors'; import { ChildProcessWithoutNullStreams } from './util/FSWrapper'; import { AbstractTest } from './framework/AbstractTest'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import { promisify } from 'util'; import { CancellationToken, generateId } from './Util'; import { SpawnBuilder } from './Spawner'; @@ -122,7 +122,7 @@ export class RunningExecutable { } catch {} } - setPriorityAsync(log: LoggerWrapper): void { + setPriorityAsync(log: Logger): void { const priority = 16; let retryOnFailure = 5; diff --git a/src/Util.ts b/src/Util.ts index ebd03a15..c615e154 100644 --- a/src/Util.ts +++ b/src/Util.ts @@ -167,7 +167,7 @@ export function milisecToStr(durationInMilisec: number): string { import * as vscode from 'vscode'; import * as fs from 'fs'; import { promisify } from 'util'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; type VersionT = [number, number, number]; export class GoogleTestVersionFinder { @@ -189,7 +189,7 @@ export class GoogleTestVersionFinder { private static _version: Promise | undefined = undefined; - static Get(log: LoggerWrapper): Promise { + static Get(log: Logger): Promise { if (this._version === undefined) { const cancellation = new vscode.CancellationTokenSource(); diff --git a/src/WorkspaceManager.ts b/src/WorkspaceManager.ts index a4cb291a..536ed84b 100644 --- a/src/WorkspaceManager.ts +++ b/src/WorkspaceManager.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; import { Config, Configurations, setEnvKey } from './Configurations'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import { createPythonIndexerForArray, createPythonIndexerForPathVariable, @@ -20,7 +20,7 @@ import { ProgressReporter } from './util/ProgressReporter'; export class WorkspaceManager implements vscode.Disposable { constructor( private readonly workspaceFolder: vscode.WorkspaceFolder, - private readonly log: LoggerWrapper, + private readonly log: Logger, testItemManager: TestItemManager, executableChanged: (e: Iterable) => void, ) { @@ -272,7 +272,7 @@ export class WorkspaceManager implements vscode.Disposable { if (this.initP === true) this.init(false); } - private _getConfiguration(log: LoggerWrapper): Configurations { + private _getConfiguration(log: Logger): Configurations { return new Configurations(log, this.workspaceFolder.uri); } diff --git a/src/WorkspaceShared.ts b/src/WorkspaceShared.ts index 2bdb917e..a1b69fe2 100644 --- a/src/WorkspaceShared.ts +++ b/src/WorkspaceShared.ts @@ -1,4 +1,4 @@ -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import * as vscode from 'vscode'; import { TaskPool } from './util/TaskPool'; import { ResolveRuleAsync } from './util/ResolveRule'; @@ -11,7 +11,7 @@ import { AbstractExecutable } from './framework/AbstractExecutable'; export class WorkspaceShared { constructor( readonly workspaceFolder: vscode.WorkspaceFolder, - readonly log: LoggerWrapper, + readonly log: Logger, readonly testController: TestItemManager, readonly executeTask: ( taskName: string, @@ -66,5 +66,5 @@ export class WorkspaceShared { } export interface ExecutableShared extends Readonly { - readonly log: LoggerWrapper; + readonly log: Logger; } diff --git a/src/framework/GoogleBenchmark/GoogleBenchmarkExecutable.ts b/src/framework/GoogleBenchmark/GoogleBenchmarkExecutable.ts index 7cdac1bc..fadba5ad 100644 --- a/src/framework/GoogleBenchmark/GoogleBenchmarkExecutable.ts +++ b/src/framework/GoogleBenchmark/GoogleBenchmarkExecutable.ts @@ -10,7 +10,7 @@ import { AbstractTest } from '../AbstractTest'; import { CancellationFlag } from '../../Util'; import { TestGroupingConfig } from '../../TestGroupingInterface'; import { TestResultBuilder } from '../../TestResultBuilder'; -import { LoggerWrapper } from '../../LoggerWrapper'; +import { Logger } from '../../Logger'; import { TestItemParent } from '../../TestItemManager'; export class GoogleBenchmarkExecutable extends AbstractExecutable { @@ -207,7 +207,7 @@ export class GoogleBenchmarkExecutable extends AbstractExecutable, metric: Record, ): void { diff --git a/src/main.ts b/src/main.ts index 372affbf..0cacb83d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; import { AbstractExecutable, TestsToRun } from './framework/AbstractExecutable'; -import { LoggerWrapper } from './LoggerWrapper'; +import { Logger } from './Logger'; import { WorkspaceManager } from './WorkspaceManager'; import { SharedTestTags } from './framework/SharedTestTags'; import { TestItemManager } from './TestItemManager'; @@ -8,7 +8,7 @@ import { TestItemManager } from './TestItemManager'; /// export async function activate(context: vscode.ExtensionContext): Promise { - const log = new LoggerWrapper('testMate.cpp.log', 'C++ TestMate'); + const log = new Logger(); log.info('Activating extension'); const controller = vscode.tests.createTestController('testmatecpp', 'TestMate C++'); const workspace2manager = new Map(); diff --git a/src/util/BuildProcessChecker.ts b/src/util/BuildProcessChecker.ts index 69ccabb8..7bfb09d6 100644 --- a/src/util/BuildProcessChecker.ts +++ b/src/util/BuildProcessChecker.ts @@ -1,11 +1,11 @@ -import { LoggerWrapper } from '../LoggerWrapper'; +import { Logger } from '../Logger'; import find_process = require('find-process'); /// // not so nice, init in rootsuite in the future export class BuildProcessChecker { - constructor(private readonly _log: LoggerWrapper) {} + constructor(private readonly _log: Logger) {} private readonly _checkIntervalMillis = 2000; // https://en.wikipedia.org/wiki/List_of_compilers#C++_compilers diff --git a/src/util/TextStreamParser.ts b/src/util/TextStreamParser.ts index 7ba797ce..7377eac7 100644 --- a/src/util/TextStreamParser.ts +++ b/src/util/TextStreamParser.ts @@ -1,13 +1,9 @@ -import { LoggerWrapper } from '../LoggerWrapper'; +import { Logger } from '../Logger'; import { debugBreak } from './DevelopmentHelper'; import { ParserInterface } from './ParserInterface'; export class TextStreamParser implements ParserInterface { - constructor( - private readonly log: LoggerWrapper, - rootProcessor: RootLineProcessor, - private readonly handleStdErr = true, - ) { + constructor(private readonly log: Logger, rootProcessor: RootLineProcessor, private readonly handleStdErr = true) { this.topProcessor = rootProcessor; } diff --git a/src/util/XmlParser.ts b/src/util/XmlParser.ts index f276963c..7f6a879f 100644 --- a/src/util/XmlParser.ts +++ b/src/util/XmlParser.ts @@ -1,5 +1,5 @@ import * as htmlparser2 from 'htmlparser2'; -import { LoggerWrapper } from '../LoggerWrapper'; +import { Logger } from '../Logger'; import { debugBreak } from './DevelopmentHelper'; import { ParserInterface } from './ParserInterface'; @@ -15,7 +15,7 @@ export class XmlParser implements ParserInterface { private readonly xmlTagProcessorStack: ProcessorFrame[] = []; private topTagProcessor: ProcessorFrame; - constructor(private readonly log: LoggerWrapper, processor: XmlTagProcessor, onerrorCb: (error: Error) => void) { + constructor(private readonly log: Logger, processor: XmlTagProcessor, onerrorCb: (error: Error) => void) { { let resolver: () => void; this.endP = new Promise(resolve => (resolver = resolve)); diff --git a/test/LogOutputContent.test.ts b/test/LogOutputContent.test.ts index 88235c5e..d78b9bb1 100644 --- a/test/LogOutputContent.test.ts +++ b/test/LogOutputContent.test.ts @@ -1,6 +1,6 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; -import { LoggerWrapper } from '../src/LoggerWrapper'; +import { Logger } from '../src/Logger'; /// @@ -18,7 +18,7 @@ export function expectedLoggedWarning(warning: string): void { /// -export const logger = new LoggerWrapper('testMate.cpp.log', `C++ TestMate`); +export const logger = new Logger(); // eslint-disable-next-line const spyError: sinon.SinonSpy = sinon.spy(logger, 'error'); // eslint-disable-next-line