Path: blob/main/tests/smoke/crossref/syntax.test.ts
12921 views
/*1* syntax.test.ts2*3* Copyright (C) 2020-2022 Posit Software, PBC4*/56import { ensureFileRegexMatches } from "../../verify.ts";7import { testRender } from "../render/render.ts";8import { crossref } from "./utils.ts";9import {10ExecuteOutput,11test,12TestContext,13TestDescriptor,14Verify,15} from "../../test.ts";16import { assert, fail } from "testing/asserts";17import { quarto } from "../../../src/quarto.ts";1819const syntaxQmd = crossref("syntax.qmd", "html");20testRender(syntaxQmd.input, "html", false, [21ensureFileRegexMatches(syntaxQmd.output.outputPath, [22/<div class="figtest-default">[^]*?>Figure 1<[^]*?<\/div>/,23/<div class="figtest-capitalized">[^]*?>Figure 1<[^]*?<\/div>/,24/<div class="figtest-prefix">[^]*?>Figure 1<[^]*?<\/div>/,25/<div class="figtest-noprefix">[^]*?>1<[^]*?<\/div>/,26], [27/\?@fig-/,28]),29]);3031// Test that two different syntaxes for a basic figure produce32// the same figure output33const imgQmd = crossref("figure-syntax-img.qmd", "html");34const divQmd = crossref("figure-syntax-div.qmd", "html");35const verify: Verify = {36name: "Compare output",37verify: (_outputs: ExecuteOutput[]) => {38const extractBodyRegex = /<body.*?>((.|\n)*)<\/body>/;3940const imgText = Deno.readTextFileSync(imgQmd.output.outputPath);41const imgBody = extractBodyRegex.exec(imgText);4243const divText = Deno.readTextFileSync(divQmd.output.outputPath);44const divBody = extractBodyRegex.exec(divText);4546if (imgBody && divBody) {47assert(48imgBody[0] === divBody[0],49"Contents of HTML generated for figures with div vs img syntax do not match.",50);51} else {52fail("Unable to extract html body from output.");53}5455return Promise.resolve();56},57};58const context: TestContext = {59teardown: () => {60Deno.removeSync(imgQmd.output.outputPath);61Deno.removeSync(imgQmd.output.supportPath, { recursive: true });6263Deno.removeSync(divQmd.output.outputPath);64Deno.removeSync(divQmd.output.supportPath, { recursive: true });65return Promise.resolve();66},67};68const testDesc: TestDescriptor = { // FIXME: why is this test flaky now? Ask @dragonstyle69name: "test html produced by different figure syntax",70context,71execute: async () => {72await quarto(["render", imgQmd.input]);73await quarto(["render", divQmd.input]);74},75verify: [verify],76type: "smoke",77};78test(testDesc);798081