LaTeX-Workshop/test/rootfile.test.ts
2022-12-13 11:24:25 +08:00

65 lines
2.8 KiB
TypeScript

import * as assert from 'assert'
import * as path from 'path'
import * as process from 'process'
import * as vscode from 'vscode'
import {
getFixtureDir,
runTestWithFixture,
waitLatexWorkshopActivated,
promisify,
sleep
} from './utils/ciutils'
suite('RootFile test suite', () => {
suiteSetup(() => {
const config = vscode.workspace.getConfiguration()
if (process.env['LATEXWORKSHOP_CI_ENABLE_DOCKER']) {
return config.update('latex-workshop.docker.enabled', true, vscode.ConfigurationTarget.Global)
}
return
})
runTestWithFixture('fixture001', 'import package', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 'abc/lmn/uvw/two.tex'
const mainFileName = 'main.tex'
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await sleep(1000)
const rootFileFound = promisify('findrootfileend')
await vscode.window.showTextDocument(doc)
const extension = await waitLatexWorkshopActivated()
await rootFileFound
console.log(`rootFile: ${extension.exports.extension.manager.rootFile}`)
assert.strictEqual(extension.exports.extension.manager.rootFile, path.join(fixtureDir, mainFileName))
})
runTestWithFixture('fixture002', 'circular inclusion', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 'a.tex'
const tex2FileName = 'poo.tex'
const mainFileName = 'main.tex'
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const rootFileFound = promisify('findrootfileend')
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
const extension = await waitLatexWorkshopActivated()
await rootFileFound
console.log(`rootFile: ${extension.exports.extension.manager.rootFile}`)
assert.strictEqual(extension.exports.extension.manager.rootFile, path.join(fixtureDir, mainFileName))
if (extension.exports.extension) {
extension.exports.extension.manager.rootFile = undefined
await extension.exports.extension.manager.findRoot()
const includedTeX = extension.exports.extension.manager.getIncludedTeX()
console.log(`rootFile: ${extension.exports.extension.manager.rootFile}`)
console.log(JSON.stringify(includedTeX))
return assert.ok(includedTeX.includes(path.join(fixtureDir, texFileName)) && includedTeX.includes(path.join(fixtureDir, tex2FileName)) && includedTeX.includes(path.join(fixtureDir, mainFileName)))
}
assert.fail('Real extension is undefined.')
})
})