Path: blob/main/tests/smoke/render/render-pdf.test.ts
12921 views
/*1* render-pdf.test.ts2*3* Copyright (C) 2020-2022 Posit Software, PBC4*5*/67import { existsSync } from "../../../src/deno_ral/fs.ts";89import {10removePackage,11TexLiveContext,12texLiveContext,13} from "../../../src/command/render/latexmk/texlive.ts";14import { which } from "../../../src/core/path.ts";15import { docs } from "../../utils.ts";1617import { testRender } from "./render.ts";1819const texLive = await texLiveContext(true);2021// Simple rendering tests22testRender(docs("test.qmd"), "pdf", true);23testRender(docs("latexmk/bibliography-biblatex.Rmd"), "pdf", true);24testRender(docs("latexmk/bibliography-citeproc.Rmd"), "pdf", true);25testRender(docs("latexmk/bibliography-natbib.Rmd"), "pdf", true);26testRender(docs("latexmk/make-index.Rmd"), "pdf", true);27testRender(docs("latexmk/make-index-custom.Rmd"), "pdf", true);2829// Package installation tests30testRender(docs("latexmk/all.Rmd"), "pdf", true, [], {31setup: async () => {32await ensurePackageRemoved("fontawesome5", texLive);33await ensurePackageRemoved("makeindex", texLive);34await ensurePackageRemoved("sansmath", texLive);35await ensurePackageRemoved("xindy", texLive);36},37});3839testRender(docs("latexmk/babel.Rmd"), "pdf", true, [], {40setup: async () => {41await ensurePackageRemoved("hyphen-portuguese", texLive);42await ensurePackageRemoved("babel-portuges", texLive);43},44});4546testRender(docs("latexmk/estopdf.Rmd"), "pdf", true, [], {47prereq: async () => {48const hasGhostscript = await which("gs") !== undefined;49return hasGhostscript;50},51setup: async () => {52await ensurePackageRemoved("epstopdf", texLive);53},54teardown: () => {55// clean intermediary that is produced:56const estopdf = docs("latexmk/estosoccer-eps-converted-to.pdf");57if (existsSync(estopdf)) {58Deno.removeSync(estopdf);59}60return Promise.resolve();61},62});6364testRender(docs("latexmk/make-index-custom.Rmd"), "pdf", true, [], {65setup: async () => {66await ensurePackageRemoved("fontawesome5", texLive);67Deno.copyFileSync(68docs("latexmk/missfont.txt"),69docs("latexmk/missfont.log"),70);71},72});7374async function ensurePackageRemoved(pkg: string, texLive: TexLiveContext) {75try {76await removePackage(pkg, texLive);77} catch {78// do nothing79}80}818283