Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/tests/smoke/render/render-pdf.test.ts
12925 views
1
/*
2
* render-pdf.test.ts
3
*
4
* Copyright (C) 2020-2022 Posit Software, PBC
5
*
6
*/
7
8
import { existsSync } from "../../../src/deno_ral/fs.ts";
9
10
import {
11
removePackage,
12
TexLiveContext,
13
texLiveContext,
14
} from "../../../src/command/render/latexmk/texlive.ts";
15
import { which } from "../../../src/core/path.ts";
16
import { docs } from "../../utils.ts";
17
18
import { testRender } from "./render.ts";
19
20
const texLive = await texLiveContext(true);
21
22
// Simple rendering tests
23
testRender(docs("test.qmd"), "pdf", true);
24
testRender(docs("latexmk/bibliography-biblatex.Rmd"), "pdf", true);
25
testRender(docs("latexmk/bibliography-citeproc.Rmd"), "pdf", true);
26
testRender(docs("latexmk/bibliography-natbib.Rmd"), "pdf", true);
27
testRender(docs("latexmk/make-index.Rmd"), "pdf", true);
28
testRender(docs("latexmk/make-index-custom.Rmd"), "pdf", true);
29
30
// Package installation tests
31
testRender(docs("latexmk/all.Rmd"), "pdf", true, [], {
32
setup: async () => {
33
await ensurePackageRemoved("fontawesome5", texLive);
34
await ensurePackageRemoved("makeindex", texLive);
35
await ensurePackageRemoved("sansmath", texLive);
36
await ensurePackageRemoved("xindy", texLive);
37
},
38
});
39
40
testRender(docs("latexmk/babel.Rmd"), "pdf", true, [], {
41
setup: async () => {
42
await ensurePackageRemoved("hyphen-portuguese", texLive);
43
await ensurePackageRemoved("babel-portuges", texLive);
44
},
45
});
46
47
testRender(docs("latexmk/estopdf.Rmd"), "pdf", true, [], {
48
prereq: async () => {
49
const hasGhostscript = await which("gs") !== undefined;
50
return hasGhostscript;
51
},
52
setup: async () => {
53
await ensurePackageRemoved("epstopdf", texLive);
54
},
55
teardown: () => {
56
// clean intermediary that is produced:
57
const estopdf = docs("latexmk/estosoccer-eps-converted-to.pdf");
58
if (existsSync(estopdf)) {
59
Deno.removeSync(estopdf);
60
}
61
return Promise.resolve();
62
},
63
});
64
65
testRender(docs("latexmk/make-index-custom.Rmd"), "pdf", true, [], {
66
setup: async () => {
67
await ensurePackageRemoved("fontawesome5", texLive);
68
Deno.copyFileSync(
69
docs("latexmk/missfont.txt"),
70
docs("latexmk/missfont.log"),
71
);
72
},
73
});
74
75
async function ensurePackageRemoved(pkg: string, texLive: TexLiveContext) {
76
try {
77
await removePackage(pkg, texLive);
78
} catch {
79
// do nothing
80
}
81
}
82
83