LaTeX-Workshop/test/build.test.ts
2022-05-13 08:47:04 +09:00

720 lines
34 KiB
TypeScript

import * as assert from 'assert'
import * as fs from 'fs'
import * as path from 'path'
import * as process from 'process'
import * as vscode from 'vscode'
import * as os from 'os'
import {
assertPdfIsGenerated,
executeVscodeCommandAfterActivation,
execCommandThenPick,
getFixtureDir,
isDockerEnabled,
runTestWithFixture,
waitLatexWorkshopActivated,
promisify
} from './utils/ciutils'
import {sleep} from './utils/ciutils'
suite('Build TeX files 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
})
//
// Basic build tests
//
runTestWithFixture('fixture001', 'basic build', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture002', 'build with subfiles', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 'main.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture003', 'the same multiple placeholders in a recipe', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture004', 'automatically detect root', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture005', 'basic build with outDir', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, 'out', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture006', 'detect root with search.rootFiles.include', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture007', 'detect root with search.rootFiles.exclude', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture008', 'basic build with spaces in names', async () => {
const fixtureDir = getFixtureDir()
const subDir = 'root dir'
const texFileName = path.join(subDir, 'file t.tex')
const pdfFileName = path.join(subDir, 'file t.pdf')
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture009', 'basic build with spaces in outdir', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, 'out dir', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture010', 'basic build with spaces in outdir', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, 'out dir', 'build', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => os.platform() !== 'win32')
runTestWithFixture('fixture011', 'automatically detect root with verbatim content', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
//
// Magic comment tests
//
runTestWithFixture('fixture020', 'build with magic comment', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture021', 'build with !TEX program and !TEX options', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture022', 'build with !TEX root', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'z.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture023', 'build with invalid !TEX program', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture024', 'build with forceRecipeUsage: true', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
//
// Auto build tests
//
runTestWithFixture('fixture030', 'auto build', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await waitLatexWorkshopActivated()
await editor.edit((builder) => {
builder.insert(new vscode.Position(0, 0), ' ')
})
await doc.save()
})
})
runTestWithFixture('fixture031', 'auto build with subfiles and onFileChange', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const rootFileFound = promisify('findrootfileend')
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await rootFileFound
await editor.edit((builder) => {
builder.insert(new vscode.Position(2, 0), ' ')
})
await doc.save()
})
}, () => isDockerEnabled())
runTestWithFixture('fixture032', 'auto build with input', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const rootFileFound = promisify('findrootfileend')
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await rootFileFound
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await doc.save()
})
})
runTestWithFixture('fixture033', 'auto build main.tex when editing s.tex with onFileChange', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const rootFileFound = promisify('findrootfileend')
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await rootFileFound
await editor.edit((builder) => {
builder.insert(new vscode.Position(2, 0), ' ')
})
await doc.save()
})
})
runTestWithFixture('fixture034', 'auto build main.tex when editing a bib file', async () => {
const fixtureDir = getFixtureDir()
const bibFileName = 'b.bib'
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await waitLatexWorkshopActivated()
await assertPdfIsGenerated(pdfFilePath, async () => {
const bibFilePath = vscode.Uri.file(path.join(fixtureDir, bibFileName))
const bibDoc = await vscode.workspace.openTextDocument(bibFilePath)
const editor = await vscode.window.showTextDocument(bibDoc)
await sleep(1000)
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await bibDoc.save()
})
})
runTestWithFixture('fixture035', 'auto build with \\input whose path uses a macro', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await assertPdfIsGenerated(pdfFilePath, async () => {
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await sleep(1000)
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await doc.save()
})
}, () => isDockerEnabled())
runTestWithFixture('fixture036', 'auto build main.tex when main.tex not in root dir and editing a sub file', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await assertPdfIsGenerated(pdfFilePath, async () => {
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await sleep(1000)
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await doc.save()
})
}, () => isDockerEnabled())
runTestWithFixture('fixture037', 'auto build with \\input and outDir', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', 'out', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await assertPdfIsGenerated(pdfFilePath, async () => {
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await sleep(1000)
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await doc.save()
})
}, () => isDockerEnabled())
runTestWithFixture('fixture038', 'auto build with watch.files.ignore', async () => {
const fixtureDir = getFixtureDir()
const mainTexFileName = 'main.tex'
const subTexFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, mainTexFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
fs.unlinkSync(pdfFilePath)
const subTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', subTexFileName))
const subDoc = await vscode.workspace.openTextDocument(subTexFilePath)
const editor = await vscode.window.showTextDocument(subDoc)
await sleep(1000)
await editor.edit((builder) => {
builder.insert(new vscode.Position(1, 0), ' ')
})
await subDoc.save()
await sleep(5000)
assert.ok( !fs.existsSync(pdfFilePath) )
})
runTestWithFixture('fixture039', 'auto build with subfiles and onSave', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const rootFileFound = promisify('findrootfileend')
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await rootFileFound
await editor.edit((builder) => {
builder.insert(new vscode.Position(2, 0), ' ')
})
await doc.save()
})
}, () => isDockerEnabled())
runTestWithFixture('fixture03a', 'auto build main.tex when editing s.tex with onSave', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const rootFileFound = promisify('findrootfileend')
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
const editor = await vscode.window.showTextDocument(doc)
await rootFileFound
await editor.edit((builder) => {
builder.insert(new vscode.Position(2, 0), ' ')
})
await doc.save()
})
})
//
// Multi-file project build tests
//
runTestWithFixture('fixture050', 'build a subfile with the subfiles package', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture051', 'build a root file with the subfiles package', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture052', 'build a root file in a sub directory', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 'mainsub.tex'
const pdfFileName = 'mainsub.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture053', 'build a subfile when main.tex opened', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
const subTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(subTexFilePath)
await vscode.window.showTextDocument(doc, vscode.ViewColumn.Beside)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture054', 'build a subfile with .latexmkrc', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', 'out', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture055', 'build a subfile in the same directory as main.tex', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
runTestWithFixture('fixture056', 'build main.tex with input whose path uses a macro when subfile opened', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await assertPdfIsGenerated(pdfFilePath, async () => {
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture057', 'build main.tex with subfiles whose path uses a macro when subfile opened', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await assertPdfIsGenerated(pdfFilePath, async () => {
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture058', 'build main.tex when main.tex not in root dir and subfile opened', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, 'main', pdfFileName)
const mainTexFilePath = vscode.Uri.file(path.join(fixtureDir, 'main', 'main.tex'))
const mainDoc = await vscode.workspace.openTextDocument(mainTexFilePath)
await vscode.window.showTextDocument(mainDoc)
await waitLatexWorkshopActivated()
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
runTestWithFixture('fixture059', 'build main.tex choosing it in QuickPick', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 'main.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await waitLatexWorkshopActivated()
await execCommandThenPick(
() => vscode.commands.executeCommand('latex-workshop.build'),
() => vscode.commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem')
)
})
})
runTestWithFixture('fixture05a', 'build s.tex choosing it in QuickPick', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await waitLatexWorkshopActivated()
await execCommandThenPick(
() => vscode.commands.executeCommand('latex-workshop.build'),
async () => {
await vscode.commands.executeCommand('workbench.action.quickOpenSelectNext')
await vscode.commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem')
return undefined
}
)
})
}, () => isDockerEnabled())
runTestWithFixture('fixture05b', 'build a subfile with extra input file', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 's.tex'
const pdfFileName = 's.pdf'
const pdfFilePath = path.join(fixtureDir, 'sub', 'out', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, 'sub', texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => isDockerEnabled())
//
// Build with makeindex
//
runTestWithFixture('fixture060', 'basic build with makeindex', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
})
//
// Recipe tests
//
runTestWithFixture('fixture100', 'test q/.../ on Windows', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => os.platform() !== 'win32')
runTestWithFixture('fixture101', 'test q/.../ with spaces in outdir on Windows', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 't.pdf'
const pdfFilePath = path.join(fixtureDir, 'out dir', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => os.platform() !== 'win32')
runTestWithFixture('fixture102', 'test copy on Windows', async () => {
const fixtureDir = getFixtureDir()
const texFileName = 't.tex'
const pdfFileName = 'b.pdf'
const pdfFilePath = path.join(fixtureDir, 'out dir', pdfFileName)
await assertPdfIsGenerated(pdfFilePath, async () => {
const texFilePath = vscode.Uri.file(path.join(fixtureDir, texFileName))
const doc = await vscode.workspace.openTextDocument(texFilePath)
await vscode.window.showTextDocument(doc)
await executeVscodeCommandAfterActivation('latex-workshop.build')
})
}, () => os.platform() !== 'win32')
})