Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/tests/smoke/extensions/extension-render-typst-templates.test.ts
12921 views
1
/*
2
* extension-render-typst-templates.test.ts
3
*
4
* Copyright (C) 2020-2024 Posit Software, PBC
5
*/
6
7
import { join } from "../../../src/deno_ral/path.ts";
8
import { quarto } from "../../../src/quarto.ts";
9
import { ensureDirSync, existsSync } from "../../../src/deno_ral/fs.ts";
10
import { testRender } from "../render/render.ts";
11
import { removeIfEmptyDir } from "../../../src/core/path.ts";
12
13
const GITHUB_REPO = "quarto-ext/typst-templates";
14
15
const typstTemplates = [
16
"ams",
17
"dept-news",
18
"fiction",
19
"ieee",
20
"letter",
21
"poster",
22
];
23
24
for (const name of typstTemplates) {
25
const format = `${name}-typst`;
26
const baseDir = join("docs", "_temp-test-artifacts");
27
const dirName = `typst-${name}`;
28
const workingDir = join(baseDir, dirName);
29
const input = join(workingDir, `${dirName}.qmd`);
30
31
testRender(input, format, true, [], {
32
prereq: () => {
33
if (existsSync(workingDir)) {
34
Deno.removeSync(workingDir, { recursive: true });
35
}
36
ensureDirSync(workingDir);
37
return Promise.resolve(true);
38
},
39
40
setup: async () => {
41
const source = `${GITHUB_REPO}/${name}`;
42
console.log(`using template: ${source}`);
43
const wd = Deno.cwd();
44
Deno.chdir(workingDir);
45
await quarto([
46
"use",
47
"template",
48
source,
49
"--no-prompt",
50
]);
51
Deno.chdir(wd);
52
},
53
54
teardown: async () => {
55
await Deno.remove(workingDir, { recursive: true });
56
removeIfEmptyDir(baseDir);
57
},
58
});
59
}
60
61