Use cached log for tests

This commit is contained in:
James-Yu 2023-01-12 12:19:57 +08:00
parent 7317024157
commit 7c4256aa15
12 changed files with 47 additions and 18 deletions

View File

@ -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() {

View File

@ -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, [

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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 () => {

View File

@ -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[]) {