Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/tests/smoke/jupyter/cache.test.ts
6446 views
1
/*
2
* cache.test.ts
3
*
4
* Copyright (C) 2023 Posit Software, PBC
5
*/
6
import { dirname, join } from "path";
7
import { quarto } from "../../../src/quarto.ts";
8
import { test } from "../../test.ts";
9
import { docs } from "../../utils.ts";
10
import { folderExists, printsMessage } from "../../verify.ts";
11
import { fileLoader } from "../../utils.ts";
12
import { safeExistsSync, safeRemoveSync } from "../../../src/core/path.ts";
13
14
const testInput = fileLoader("jupyter", "cache")("test.qmd", "html")
15
const cacheFolder = join(dirname(testInput.input), ".jupyter_cache")
16
17
test({
18
name: "Jupyter cache is working",
19
execute: async () => {
20
// return await new Promise((_resolve, reject) => {
21
// setTimeout(reject, 10000, "timed out after 10 seconds");
22
// })
23
// https://github.com/quarto-dev/quarto-cli/issues/9618
24
// repeated executions to trigger jupyter cache
25
await quarto(["render", testInput.input, "--to", "html", "--no-execute-daemon"]);
26
await quarto(["render", testInput.input, "--to", "html", "--no-execute-daemon"]);
27
},
28
context: {
29
teardown: async () => {
30
if (safeExistsSync(cacheFolder)) {
31
safeRemoveSync(cacheFolder, { recursive: true });
32
}
33
if (safeExistsSync(testInput.output.outputPath)) {
34
safeRemoveSync(testInput.output.outputPath);
35
}
36
if (safeExistsSync(testInput.output.supportPath)) {
37
safeRemoveSync(testInput.output.supportPath, { recursive: true });
38
}
39
}
40
},
41
verify: [
42
folderExists(cacheFolder),
43
// this will check only for the second render that should be read from cache
44
printsMessage({ level: "INFO", regex: /Notebook read from cache/})
45
],
46
type: "smoke",
47
});
48
49
// -- Testing changing cache folder
50
51
const testInput2 = fileLoader("jupyter", "cache-non-default")("test.qmd", "html")
52
// From value of cache set in _environment in test quarto project
53
const cacheFolder2 = join(dirname(testInput2.input), ".cache/jupyter-cache")
54
55
test({
56
name: "Jupyter cache folder can be change",
57
execute: async () => {
58
// return await new Promise((_resolve, reject) => {
59
// setTimeout(reject, 10000, "timed out after 10 seconds");
60
// })
61
// https://github.com/quarto-dev/quarto-cli/issues/9618
62
// repeated executions to trigger jupyter cache
63
await quarto(["render", testInput2.input, "--to", "html", "--no-execute-daemon"]);
64
await quarto(["render", testInput2.input, "--to", "html", "--no-execute-daemon"]);
65
},
66
context: {
67
teardown: async () => {
68
if (safeExistsSync(cacheFolder2)) {
69
safeRemoveSync(cacheFolder2, { recursive: true });
70
}
71
if (safeExistsSync(testInput2.output.outputPath)) {
72
safeRemoveSync(testInput2.output.outputPath);
73
}
74
if (safeExistsSync(testInput2.output.supportPath)) {
75
safeRemoveSync(testInput2.output.supportPath, { recursive: true });
76
}
77
if (safeExistsSync(join(dirname(testInput2.input), ".quarto"))) {
78
safeRemoveSync(join(dirname(testInput2.input), ".quarto"), { recursive: true });
79
}
80
}
81
},
82
verify: [
83
folderExists(cacheFolder2),
84
// this will check only for the second render that should be read from cache
85
printsMessage({level: "INFO", regex: /Notebook read from cache/})
86
],
87
type: "smoke",
88
});
89