Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/tests/smoke/use/template.test.ts
12921 views
1
import { testQuartoCmd } from "../../test.ts";
2
import { directoryContainsOnlyAllowedPaths, fileExists, folderExists, noErrorsOrWarnings, printsMessage } from "../../verify.ts";
3
import { join } from "../../../src/deno_ral/path.ts";
4
import { ensureDirSync } from "../../../src/deno_ral/fs.ts";
5
6
const tempDir = Deno.makeTempDirSync();
7
8
const templateFolder = "article";
9
const workingDir = join(tempDir, templateFolder);
10
const extensionsDir = join(workingDir, "_extensions");
11
ensureDirSync(workingDir);
12
testQuartoCmd(
13
"use",
14
["template", "quarto-journals/jasa", "--no-prompt"],
15
[noErrorsOrWarnings, fileExists(`${templateFolder}.qmd`), folderExists(extensionsDir)],
16
{
17
setup: () => {
18
return Promise.resolve();
19
},
20
cwd: () => {
21
return workingDir;
22
},
23
teardown: () => {
24
try {
25
Deno.removeSync(workingDir, {recursive: true});
26
} catch {
27
28
}
29
return Promise.resolve();
30
}
31
}
32
)
33
34
const nonEmptyTemplateFolder = "notempty";
35
const nonEmptyFileName = `${nonEmptyTemplateFolder}.qmd`;
36
const nonEmptyWorkingDir = join(tempDir, nonEmptyTemplateFolder);
37
ensureDirSync(nonEmptyWorkingDir);
38
39
testQuartoCmd(
40
"use",
41
["template", "quarto-journals/jasa", "--no-prompt"],
42
[printsMessage({level: "ERROR", regex: /directory isn't empty/}), directoryContainsOnlyAllowedPaths(nonEmptyWorkingDir, [nonEmptyFileName])],
43
{
44
setup: () => {
45
Deno.writeTextFileSync(join(nonEmptyWorkingDir, nonEmptyFileName), "Just making a non-empty file!");
46
return Promise.resolve();
47
},
48
cwd: () => {
49
return nonEmptyWorkingDir;
50
},
51
teardown: () => {
52
try {
53
Deno.removeSync(nonEmptyWorkingDir, {recursive: true});
54
} catch {
55
56
}
57
return Promise.resolve();
58
}
59
}
60
)
61
62
const starterFolder = "starterFolder";
63
const starterWorkingDir = join(tempDir, starterFolder);
64
ensureDirSync(starterWorkingDir);
65
testQuartoCmd(
66
"use",
67
["template", "quarto-examples/website-template", "--no-prompt"],
68
[noErrorsOrWarnings, fileExists("_quarto.yml"), fileExists("index.qmd")],
69
{
70
setup: () => {
71
return Promise.resolve();
72
},
73
cwd: () => {
74
return starterWorkingDir;
75
},
76
teardown: () => {
77
try {
78
Deno.removeSync(starterWorkingDir, {recursive: true});
79
} catch {
80
81
}
82
return Promise.resolve();
83
}
84
}
85
)
86
87