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