handle Uint8Array
This commit is contained in:
parent
350bf488da
commit
52e52435f7
3 changed files with 45 additions and 9 deletions
|
|
@ -3,10 +3,29 @@ import {TestInterface} from 'ava';
|
|||
type TestContext = {stdoutWrite: any, stderrWrite: any, testOutput: string};
|
||||
|
||||
function wrapOutput(context: TestContext) {
|
||||
return (str: any): boolean => {
|
||||
if (typeof str === 'string') {
|
||||
context.testOutput += str;
|
||||
// Function signature taken from Socket.write.
|
||||
// Note there are two overloads:
|
||||
// write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
|
||||
// write(str: Uint8Array | string, encoding?: string, cb?: (err?: Error) => void): boolean;
|
||||
return (chunk: Uint8Array | string, encoding?: string, cb?: (err?: Error) => void): boolean => {
|
||||
// Work out which method overload we are in
|
||||
if (cb === undefined && typeof encoding === 'function') {
|
||||
cb = encoding;
|
||||
encoding = undefined;
|
||||
}
|
||||
|
||||
// Record the output
|
||||
if (typeof chunk === 'string') {
|
||||
context.testOutput += chunk;
|
||||
} else {
|
||||
context.testOutput += new TextDecoder(encoding || 'utf-8').decode(chunk);
|
||||
}
|
||||
|
||||
// Satisfy contract by calling callback when done
|
||||
if (cb !== undefined && typeof cb === 'function') {
|
||||
cb();
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
|
@ -19,11 +38,11 @@ export function silenceDebugOutput(test: TestInterface<any>) {
|
|||
|
||||
const processStdoutWrite = process.stdout.write.bind(process.stdout);
|
||||
t.context.stdoutWrite = processStdoutWrite;
|
||||
process.stdout.write = wrapOutput(t.context);
|
||||
process.stdout.write = wrapOutput(t.context) as any;
|
||||
|
||||
const processStderrWrite = process.stderr.write.bind(process.stderr);
|
||||
t.context.stderrWrite = processStderrWrite;
|
||||
process.stderr.write = wrapOutput(t.context);
|
||||
process.stderr.write = wrapOutput(t.context) as any;
|
||||
});
|
||||
|
||||
typedTest.afterEach.always(t => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue