diff --git a/src/components/logger.ts b/src/components/logger.ts index 19693d5f6..cfc8aab68 100644 --- a/src/components/logger.ts +++ b/src/components/logger.ts @@ -6,6 +6,17 @@ const STATUS_ITEM = vscode.window.createStatusBarItem(vscode.StatusBarAlignment. const PLACEHOLDERS: {[placeholder: string]: string} = {} COMPILER_PANEL.append('Ready') +let CACHED_EXTLOG: string[] = [] +let CACHED_COMPILER: string[] = [] + +export function resetCachedLog() { + CACHED_EXTLOG = [] + CACHED_COMPILER = [] +} + +export function getCachedLog() { + return {CACHED_EXTLOG, CACHED_COMPILER} +} export function getLogger(...tags: string[]) { const tagString = tags.map(tag => `[${tag}]`).join('') @@ -44,9 +55,13 @@ function logTagless(message: string) { } const placeholder = `%WS${Object.keys(PLACEHOLDERS).length + 1}%` PLACEHOLDERS[folder.uri.fsPath] = placeholder - LOG_PANEL.appendLine(`[${timestamp}][Logger] New log placeholder ${placeholder} registered for ${folder.uri.fsPath} .`) + const log = `[${timestamp}][Logger] New log placeholder ${placeholder} registered for ${folder.uri.fsPath} .` + LOG_PANEL.appendLine(log) + CACHED_EXTLOG.push(log) }) - LOG_PANEL.appendLine(`[${timestamp}]${applyPlaceholders(message)}`) + const log = `[${timestamp}]${applyPlaceholders(message)}` + LOG_PANEL.appendLine(log) + CACHED_EXTLOG.push(log) } function applyPlaceholders(message: string) { @@ -77,6 +92,7 @@ function logErrorTagless(message: string, error: unknown, stderr?: string) { function logCompiler(message: string) { COMPILER_PANEL.append(message) + CACHED_COMPILER.push(message) } function initializeStatusBarItem() { diff --git a/test/suites/01_build.test.ts b/test/suites/01_build.test.ts index 9e9b966c8..e7e6f0fe2 100644 --- a/test/suites/01_build.test.ts +++ b/test/suites/01_build.test.ts @@ -4,6 +4,7 @@ import rimraf from 'rimraf' import * as lw from '../../src/lw' import * as test from './utils' import { BuildDone } from '../../src/components/eventbus' +import { resetCachedLog } from '../../src/components/logger' suite('Build TeX files test suite', () => { @@ -17,6 +18,7 @@ suite('Build TeX files test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { @@ -130,7 +132,7 @@ suite('Build TeX files test suite', () => { await test.assert.build(fixture, 'main.tex', 'main.pdf') }) - test.run(suiteName, fixtureName, 'build a subfile when main.tex opened', async () => { + test.only(suiteName, fixtureName, 'build a subfile when main.tex opened', async () => { await vscode.workspace.getConfiguration('latex-workshop').update('latex.rootFile.doNotPrompt', true) await vscode.workspace.getConfiguration('latex-workshop').update('latex.rootFile.useSubFile', true) await test.load(fixture, [ diff --git a/test/suites/02_autobuild.test.ts b/test/suites/02_autobuild.test.ts index 6f9c11080..d18db3dfa 100644 --- a/test/suites/02_autobuild.test.ts +++ b/test/suites/02_autobuild.test.ts @@ -4,6 +4,7 @@ import rimraf from 'rimraf' import * as lw from '../../src/lw' import * as test from './utils' import { FileWatched } from '../../src/components/eventbus' +import { resetCachedLog } from '../../src/components/logger' suite('Auto-build test suite', () => { @@ -19,6 +20,7 @@ suite('Auto-build test suite', () => { await vscode.commands.executeCommand('latex-workshop.activate') await vscode.workspace.getConfiguration('latex-workshop').update('latex.autoBuild.interval', 250) await vscode.workspace.getConfiguration('latex-workshop').update('latex.autoBuild.run', 'onFileChange') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/03_findroot.test.ts b/test/suites/03_findroot.test.ts index c135d75b4..b6805b967 100644 --- a/test/suites/03_findroot.test.ts +++ b/test/suites/03_findroot.test.ts @@ -4,6 +4,7 @@ import rimraf from 'rimraf' import * as assert from 'assert' import * as lw from '../../src/lw' import * as test from './utils' +import { resetCachedLog } from '../../src/components/logger' suite('Find root file test suite', () => { @@ -17,6 +18,7 @@ suite('Find root file test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/04_intellisense.test.ts b/test/suites/04_intellisense.test.ts index 9dbda5a04..56fe37d9d 100644 --- a/test/suites/04_intellisense.test.ts +++ b/test/suites/04_intellisense.test.ts @@ -11,6 +11,7 @@ import { CmdType } from '../../src/providers/completer/command' import { PkgType } from '../../src/providers/completion' import { isTriggerSuggestNeeded } from '../../src/providers/completer/commandlib/commandfinder' import { FileParsed } from '../../src/components/eventbus' +import { resetCachedLog } from '../../src/components/logger' function assertKeys(keys: string[], expected: string[] = [], message: string): void { assert.ok( @@ -31,6 +32,7 @@ suite('Intellisense test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/05_viewer.test.ts b/test/suites/05_viewer.test.ts index d381dcabb..4a4e8290f 100644 --- a/test/suites/05_viewer.test.ts +++ b/test/suites/05_viewer.test.ts @@ -4,6 +4,7 @@ import rimraf from 'rimraf' import * as lw from '../../src/lw' import * as test from './utils' import { BuildDone } from '../../src/components/eventbus' +import { resetCachedLog } from '../../src/components/logger' suite('PDF viewer test suite', () => { @@ -18,6 +19,7 @@ suite('PDF viewer test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') await vscode.workspace.getConfiguration().update('latex-workshop.view.pdf.viewer', 'tab') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/06_structure.test.ts b/test/suites/06_structure.test.ts index bd6db4fce..18662c32b 100644 --- a/test/suites/06_structure.test.ts +++ b/test/suites/06_structure.test.ts @@ -5,6 +5,7 @@ import rimraf from 'rimraf' import * as lw from '../../src/lw' import * as test from './utils' import { SectionNodeProvider } from '../../src/providers/structure' +import { resetCachedLog } from '../../src/components/logger' async function loadTestFiles(fixture: string) { await test.load(fixture, [ @@ -27,6 +28,7 @@ suite('Document structure test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/07_mathpreview.test.ts b/test/suites/07_mathpreview.test.ts index 8c623f798..eca942c1a 100644 --- a/test/suites/07_mathpreview.test.ts +++ b/test/suites/07_mathpreview.test.ts @@ -7,6 +7,7 @@ import * as test from './utils' import { TextDocumentLike } from '../../src/providers/preview/mathpreviewlib/textdocumentlike' import { TeXMathEnvFinder } from '../../src/providers/preview/mathpreviewlib/texmathenvfinder' import { CursorRenderer } from '../../src/providers/preview/mathpreviewlib/cursorrenderer' +import { resetCachedLog } from '../../src/components/logger' suite('Math preview test suite', () => { @@ -20,6 +21,7 @@ suite('Math preview test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/08_linter.test.ts b/test/suites/08_linter.test.ts index e8f53b574..44aaefc55 100644 --- a/test/suites/08_linter.test.ts +++ b/test/suites/08_linter.test.ts @@ -6,6 +6,7 @@ import * as lw from '../../src/lw' import * as test from './utils' import { ChkTeX } from '../../src/components/linterlib/chktex' import { LaCheck } from '../../src/components/linterlib/lacheck' +import { resetCachedLog } from '../../src/components/logger' suite('Linter test suite', () => { @@ -19,6 +20,7 @@ suite('Linter test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/09_formatter.test.ts b/test/suites/09_formatter.test.ts index b84731c50..ca8058796 100644 --- a/test/suites/09_formatter.test.ts +++ b/test/suites/09_formatter.test.ts @@ -4,6 +4,7 @@ import * as assert from 'assert' import rimraf from 'rimraf' import * as lw from '../../src/lw' import * as test from './utils' +import { resetCachedLog } from '../../src/components/logger' suite('Formatter test suite', () => { @@ -17,6 +18,7 @@ suite('Formatter test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/99_multiroot.test.ts b/test/suites/99_multiroot.test.ts index b11f5115e..b9291efb4 100644 --- a/test/suites/99_multiroot.test.ts +++ b/test/suites/99_multiroot.test.ts @@ -4,6 +4,7 @@ import rimraf from 'rimraf' import * as assert from 'assert' import * as lw from '../../src/lw' import * as test from './utils' +import { resetCachedLog } from '../../src/components/logger' suite('Multi-root workspace test suite', () => { @@ -18,6 +19,7 @@ suite('Multi-root workspace test suite', () => { setup(async () => { await vscode.commands.executeCommand('latex-workshop.activate') await vscode.workspace.getConfiguration('latex-workshop').update('latex.autoBuild.interval', 250) + resetCachedLog() }) teardown(async () => { diff --git a/test/suites/utils.ts b/test/suites/utils.ts index 19fbd0340..36f9c70d1 100644 --- a/test/suites/utils.ts +++ b/test/suites/utils.ts @@ -7,6 +7,7 @@ import { ok, strictEqual } from 'assert' import * as lw from '../../src/lw' import { BuildDone, FileParsed, FileWatched, RootFileSearched, ViewerPageLoaded, ViewerStatusChanged } from '../../src/components/eventbus' import type { EventName } from '../../src/components/eventbus' +import { getCachedLog } from '../../src/components/logger' let testCounter = 0 @@ -43,7 +44,7 @@ export function run(suiteName: string, fixtureName: string, testName: string, cb try { await cb() } catch (error) { - await log(counterString) + log(fixtureName, testName, counterString) throw error } }).timeout(timeout || 15000) @@ -53,22 +54,14 @@ export function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)) } -async function log(counter: string) { - await vscode.commands.executeCommand('workbench.action.closeAllEditors') - await sleep(500) - await vscode.commands.executeCommand('workbench.action.output.toggleOutput') - await sleep(500) - await vscode.commands.executeCommand('latex-workshop.log') - await sleep(500) - const extensionMessage = vscode.window.activeTextEditor?.document.getText() - await vscode.commands.executeCommand('latex-workshop.compilerlog') - await sleep(500) - const compilerMessage = vscode.window.activeTextEditor?.document.getText() - +function log(fixtureName: string, testName: string, counter: string) { + const cachedLog = getCachedLog() const logFolder = path.resolve(__dirname, '../../../test/log') fs.mkdirSync(logFolder, {recursive: true}) - fs.writeFileSync(path.resolve(logFolder, `${counter}.extension.log`), extensionMessage || '') - fs.writeFileSync(path.resolve(logFolder, `${counter}.compiler.log`), compilerMessage || '') + fs.writeFileSync(path.resolve(logFolder, `${fixtureName}-${counter}.log`), + testName + '\n\n' + new Array(80).fill('=') + '\n\n' + + cachedLog.CACHED_EXTLOG + '\n\n' + new Array(80).fill('=') + '\n\n' + + cachedLog.CACHED_COMPILER) } export function write(fixture: string, fileName: string, ...contents: string[]) {