Path: blob/main/tests/smoke/jupyter/cache.test.ts
6446 views
/*1* cache.test.ts2*3* Copyright (C) 2023 Posit Software, PBC4*/5import { dirname, join } from "path";6import { quarto } from "../../../src/quarto.ts";7import { test } from "../../test.ts";8import { docs } from "../../utils.ts";9import { folderExists, printsMessage } from "../../verify.ts";10import { fileLoader } from "../../utils.ts";11import { safeExistsSync, safeRemoveSync } from "../../../src/core/path.ts";1213const testInput = fileLoader("jupyter", "cache")("test.qmd", "html")14const cacheFolder = join(dirname(testInput.input), ".jupyter_cache")1516test({17name: "Jupyter cache is working",18execute: async () => {19// return await new Promise((_resolve, reject) => {20// setTimeout(reject, 10000, "timed out after 10 seconds");21// })22// https://github.com/quarto-dev/quarto-cli/issues/961823// repeated executions to trigger jupyter cache24await quarto(["render", testInput.input, "--to", "html", "--no-execute-daemon"]);25await quarto(["render", testInput.input, "--to", "html", "--no-execute-daemon"]);26},27context: {28teardown: async () => {29if (safeExistsSync(cacheFolder)) {30safeRemoveSync(cacheFolder, { recursive: true });31}32if (safeExistsSync(testInput.output.outputPath)) {33safeRemoveSync(testInput.output.outputPath);34}35if (safeExistsSync(testInput.output.supportPath)) {36safeRemoveSync(testInput.output.supportPath, { recursive: true });37}38}39},40verify: [41folderExists(cacheFolder),42// this will check only for the second render that should be read from cache43printsMessage({ level: "INFO", regex: /Notebook read from cache/})44],45type: "smoke",46});4748// -- Testing changing cache folder4950const testInput2 = fileLoader("jupyter", "cache-non-default")("test.qmd", "html")51// From value of cache set in _environment in test quarto project52const cacheFolder2 = join(dirname(testInput2.input), ".cache/jupyter-cache")5354test({55name: "Jupyter cache folder can be change",56execute: async () => {57// return await new Promise((_resolve, reject) => {58// setTimeout(reject, 10000, "timed out after 10 seconds");59// })60// https://github.com/quarto-dev/quarto-cli/issues/961861// repeated executions to trigger jupyter cache62await quarto(["render", testInput2.input, "--to", "html", "--no-execute-daemon"]);63await quarto(["render", testInput2.input, "--to", "html", "--no-execute-daemon"]);64},65context: {66teardown: async () => {67if (safeExistsSync(cacheFolder2)) {68safeRemoveSync(cacheFolder2, { recursive: true });69}70if (safeExistsSync(testInput2.output.outputPath)) {71safeRemoveSync(testInput2.output.outputPath);72}73if (safeExistsSync(testInput2.output.supportPath)) {74safeRemoveSync(testInput2.output.supportPath, { recursive: true });75}76if (safeExistsSync(join(dirname(testInput2.input), ".quarto"))) {77safeRemoveSync(join(dirname(testInput2.input), ".quarto"), { recursive: true });78}79}80},81verify: [82folderExists(cacheFolder2),83// this will check only for the second render that should be read from cache84printsMessage({level: "INFO", regex: /Notebook read from cache/})85],86type: "smoke",87});8889