/// import type { ExecaChildProcess } from 'execa'; import type { FSJetpack } from 'fs-jetpack/types'; /** * Base test context. */ export type BaseContext = { tmpDir: string; fs: FSJetpack; mocked: { cwd: string; }; /** * Set up the temporary directory based on the contents of some fixture. */ fixture: (name: string) => void; /** * Spawn the Prisma cli using the temporary directory as the CWD. * * @remarks * * For this to work the source must be built */ cli: (...input: string[]) => ExecaChildProcess; printDir(dir: string, extensions: string[]): void; /** * JavaScript-friendly implementation of the `tree` command. It skips the `node_modules` directory. * @param itemPath The path to start the tree from, defaults to the root of the temporary directory * @param indent How much to indent each level of the tree, defaults to '' * @returns String representation of the directory tree */ tree: (itemPath?: string, indent?: string) => void; }; /** * Create test context to use in tests. Provides the following: * * - A temporary directory * - an fs-jetpack instance bound to the temporary directory * - Mocked process.cwd via Node process.chdir * - Fixture loader for bootstrapping the temporary directory with content */ export declare const jestContext: { new: (ctx?: BaseContext) => { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): { add(contextContributor: ContextContributor): any; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4 & NewContext_5 & NewContext_6 & NewContext_7 & NewContext_8 & NewContext_9; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4 & NewContext_5 & NewContext_6 & NewContext_7 & NewContext_8; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4 & NewContext_5 & NewContext_6 & NewContext_7; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4 & NewContext_5 & NewContext_6; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4 & NewContext_5; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3 & NewContext_4; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2 & NewContext_3; }; assemble(): BaseContext & NewContext & NewContext_1 & NewContext_2; }; assemble(): BaseContext & NewContext & NewContext_1; }; assemble(): BaseContext & NewContext; }; assemble(): BaseContext; }; }; /** * A function that provides additional test context. */ type ContextContributor = (ctx: Context) => Context & NewContext; /** * Test context contributor. Mocks console.error with a Jest spy before each test. */ type ConsoleContext = { mocked: { 'console.error': jest.SpyInstance; 'console.log': jest.SpyInstance; 'console.info': jest.SpyInstance; 'console.warn': jest.SpyInstance; }; }; export declare const jestConsoleContext: () => (c: Ctx) => Ctx & ConsoleContext; /** * Test context contributor. Mocks process.std(out|err).write with a Jest spy before each test. */ type ProcessContext = { mocked: { 'process.stderr.write': jest.SpyInstance; 'process.stdout.write': jest.SpyInstance; }; normalizedCapturedStdout: () => string; normalizedCapturedStderr: () => string; clearCapturedStdout: () => void; clearCapturedStderr: () => void; }; type NormalizationRule = [RegExp | string, string]; export type ProcessContextSettings = { normalizationRules: NormalizationRule[]; }; export declare const jestStdoutContext: ({ normalizationRules }?: ProcessContextSettings) => (c: Ctx) => Ctx & ProcessContext; /** * Test context contributor. Mocks process.exit with a spay and records the exit code. */ type ProcessExitContext = { mocked: { 'process.exit': jest.SpyInstance; }; recordedExitCode: () => number; }; export declare const processExitContext: () => (c: C) => C & ProcessExitContext; export {};