diff --git a/src/stdmock.ts b/src/stdmock.ts index 420ea5b..8ec95c2 100644 --- a/src/stdmock.ts +++ b/src/stdmock.ts @@ -1,13 +1,32 @@ import * as mock from 'stdout-stderr' +export interface Stdout { + before(): {stdout: string} + after(): void + catch(): void + finally(): void +} + +export interface Stderr { + before(): {stderr: string} + after(): void + catch(): void + finally(): void +} + const create = (std: T) => () => { const _finally = () => mock[std].stop() return { before() { mock[std].start() + if (std === 'stdout') { + return { + get stdout() { return mock.stdout.output } + } + } return { - get [std]() { return mock[std].output } - } as {[P in T]: string} + get stderr() { return mock.stderr.output } + } }, after: _finally, catch: _finally, @@ -15,5 +34,5 @@ const create = (std: T) => () => { } } -export const stdout = create('stdout') -export const stderr = create('stderr') +export const stdout = create('stdout') as () => Stdout +export const stderr = create('stderr') as () => Stderr diff --git a/src/test.ts b/src/test.ts index 115b6b1..2be6845 100644 --- a/src/test.ts +++ b/src/test.ts @@ -4,7 +4,7 @@ import env from './env' import mock from './mock' import {stderr, stdout} from './stdmock' -export type Extension = (a1: A1, a2: A2, a3: A3, a4: A4) => Filters +export type Extension = (a1: A1, a2: A2, a3: A3, a4: A4) => Filters export interface Filters { before?(input: any): Promise | C | void after?(context: C): Promise | any @@ -62,10 +62,10 @@ export interface TestBase { * } * }) */ - extend(key: K, filter: Extension): Test, C> - extend(key: K, filter: Extension): Test, C> - extend(key: K, filter: Extension): Test, C> - extend(key: K, filter: Extension): Test, C> + extend(key: K, filter: Extension): Test, C> + extend(key: K, filter: Extension): Test, C> + extend(key: K, filter: Extension): Test, C> + extend(key: K, filter: Extension): Test, C> extend(key: K, filter: Extension): Test, C> } export type Test = TestBase &