Path: blob/main/tests/smoke/render/render-format-extension.test.ts
12925 views
/*1* render-format-extension.test.ts2*3* Copyright (C) 2020-2022 Posit Software, PBC4*/56// TODO re-enable the ACM tests once the template has been updated78// This test file focuses on rendering documents with journal extensions.9// It tests HTML formats, PDF formats, and format variants (e.g., elsevier-pdf+foobar).10// Note: extension-render-journals.test.ts tests template scaffolding (quarto use template).11// Both files serve different purposes and should remain separate.1213import { safeRemoveSync } from "../../../src/core/path.ts";14import { docs } from "../../utils.ts";15import { quarto } from "../../../src/quarto.ts";1617import { testRender } from "./render.ts";1819// Update extensions to latest versions before testing20// Falls back to committed versions on network failure21//22// Maintenance note: Committed extension files serve as fallback for offline/CI23// failure scenarios. They don't need frequent updates since tests always fetch24// latest versions. When extension-related issues occur, consider updating the25// committed files to document the working version (see commits c3149a9ba and26// b8421caf9 for example).27const updateExtensions = async () => {28try {29console.log("Updating quarto-journals extensions to latest versions...");30const wd = Deno.cwd();31Deno.chdir(docs("extensions/format/academic"));3233for (const repo of ["acs", "elsevier"]) {34await quarto([35"update",36"extension",37`quarto-journals/${repo}`,38"--no-prompt",39]);40}4142Deno.chdir(wd);43console.log("Extensions updated successfully");44} catch (error) {45const message = error instanceof Error ? error.message : String(error);46console.warn(`Failed to update extensions: ${message}`);47console.warn("Falling back to committed extension versions");48}49};5051// Some HTML tests52testRender(docs("extensions/format/academic/document.qmd"), "html", false);53// testRender(docs("extensions/format/academic/document.qmd"), "acm-html", false);54testRender(55docs("extensions/format/academic/document.qmd"),56"acs-html",57false,58[],59{ setup: updateExtensions },60);61testRender(62docs("extensions/format/academic/document.qmd"),63"elsevier-html",64false,65[],66{ setup: updateExtensions },67);6869// some PDF tests70testRender(docs("extensions/format/academic/document.qmd"), "pdf", true);71// testRender(72// docs("extensions/format/academic/document.qmd"),73// "acm-pdf",74// true,75// [],76// {77// teardown: async () => {78// await Deno.remove(docs("extensions/format/academic/sensys-abstract.cls"));79// await Deno.remove(80// docs("extensions/format/academic/acm_proc_article-sp.cls"),81// );82// },83// },84// );85testRender(86docs("extensions/format/academic/document.qmd"),87"acs-pdf",88true,89[],90{91setup: updateExtensions,92// deno-lint-ignore require-await93teardown: async () => {94// Clean up files generated by the acs extension95safeRemoveSync(docs("extensions/format/academic/acs-document.bib"));96safeRemoveSync(docs("extensions/format/academic/achemso.bst"));97},98},99);100testRender(101docs("extensions/format/academic/document.qmd"),102"elsevier-pdf",103true,104[],105{106setup: updateExtensions,107// deno-lint-ignore require-await108teardown: async () => {109// Clean up files generated by the elsevier extension110safeRemoveSync(docs("extensions/format/academic/document.spl"));111safeRemoveSync(docs("extensions/format/academic/elsarticle.cls"));112safeRemoveSync(docs("extensions/format/academic/elsarticle-num.bst"));113},114},115);116117// Funky format string test118testRender(119docs("extensions/format/academic/document.qmd"),120"elsevier-pdf+foobar",121true,122[],123{124setup: updateExtensions,125// deno-lint-ignore require-await126teardown: async () => {127// Clean up files generated by the elsevier extension128safeRemoveSync(docs("extensions/format/academic/document+foobar.spl"));129safeRemoveSync(docs("extensions/format/academic/elsarticle.cls"));130safeRemoveSync(docs("extensions/format/academic/elsarticle-num.bst"));131},132},133);134135136