Path: blob/main/tests/smoke/extensions/extension-render-typst-templates.test.ts
12921 views
/*1* extension-render-typst-templates.test.ts2*3* Copyright (C) 2020-2024 Posit Software, PBC4*/56import { join } from "../../../src/deno_ral/path.ts";7import { quarto } from "../../../src/quarto.ts";8import { ensureDirSync, existsSync } from "../../../src/deno_ral/fs.ts";9import { testRender } from "../render/render.ts";10import { removeIfEmptyDir } from "../../../src/core/path.ts";1112const GITHUB_REPO = "quarto-ext/typst-templates";1314const typstTemplates = [15"ams",16"dept-news",17"fiction",18"ieee",19"letter",20"poster",21];2223for (const name of typstTemplates) {24const format = `${name}-typst`;25const baseDir = join("docs", "_temp-test-artifacts");26const dirName = `typst-${name}`;27const workingDir = join(baseDir, dirName);28const input = join(workingDir, `${dirName}.qmd`);2930testRender(input, format, true, [], {31prereq: () => {32if (existsSync(workingDir)) {33Deno.removeSync(workingDir, { recursive: true });34}35ensureDirSync(workingDir);36return Promise.resolve(true);37},3839setup: async () => {40const source = `${GITHUB_REPO}/${name}`;41console.log(`using template: ${source}`);42const wd = Deno.cwd();43Deno.chdir(workingDir);44await quarto([45"use",46"template",47source,48"--no-prompt",49]);50Deno.chdir(wd);51},5253teardown: async () => {54await Deno.remove(workingDir, { recursive: true });55removeIfEmptyDir(baseDir);56},57});58}596061