import { ProjectContext } from "../../../src/project/types.ts";
import { FileInformationCacheMap } from "../../../src/project/project-shared.ts";
export function createMockProjectContext(
dir?: string,
): ProjectContext {
const projectDir = dir ?? Deno.makeTempDirSync({ prefix: "quarto-test" });
const ownsDir = dir === undefined;
return {
dir: projectDir,
engines: [],
files: { input: [] },
notebookContext: {} as ProjectContext["notebookContext"],
fileInformationCache: new FileInformationCacheMap(),
resolveBrand: () => Promise.resolve(undefined),
resolveFullMarkdownForFile: () => Promise.resolve({} as never),
fileExecutionEngineAndTarget: () => Promise.resolve({} as never),
fileMetadata: () => Promise.resolve({}),
environment: () => Promise.resolve({} as never),
renderFormats: () => Promise.resolve({}),
clone: function () {
return this;
},
isSingleFile: false,
diskCache: {} as ProjectContext["diskCache"],
temp: {} as ProjectContext["temp"],
cleanup: () => {
if (ownsDir) {
try {
Deno.removeSync(projectDir, { recursive: true });
} catch {
}
}
},
} as ProjectContext;
}