-
Notifications
You must be signed in to change notification settings - Fork 620
/
Copy pathTerminalStreamWritable.test.ts
91 lines (76 loc) · 2.61 KB
/
TerminalStreamWritable.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
import { Terminal } from '../Terminal';
import { StringBufferTerminalProvider } from '../StringBufferTerminalProvider';
import { TerminalStreamWritable } from '../TerminalStreamWritable';
import { TerminalProviderSeverity } from '../ITerminalProvider';
import type { Writable } from 'stream';
let terminal: Terminal;
let provider: StringBufferTerminalProvider;
function verifyProvider(): void {
expect({
log: provider.getOutput(),
warning: provider.getWarningOutput(),
error: provider.getErrorOutput(),
verbose: provider.getVerboseOutput(),
debug: provider.getDebugOutput()
}).toMatchSnapshot();
}
async function writeAsync(writable: Writable, data: string): Promise<void> {
await new Promise<void>((resolve: () => void, reject: (error: Error) => void) => {
// eslint-disable-next-line @rushstack/no-new-null
writable.write(data, (error?: Error | null) => {
if (error) {
reject(error);
} else {
resolve();
}
});
});
}
describe(TerminalStreamWritable.name, () => {
beforeEach(() => {
provider = new StringBufferTerminalProvider(true);
terminal = new Terminal(provider);
});
test('writes a message', async () => {
const writable: TerminalStreamWritable = new TerminalStreamWritable({
terminal,
severity: TerminalProviderSeverity.log
});
await writeAsync(writable, 'test message');
verifyProvider();
});
test('writes a verbose message', async () => {
const writable: TerminalStreamWritable = new TerminalStreamWritable({
terminal,
severity: TerminalProviderSeverity.verbose
});
await writeAsync(writable, 'test message');
verifyProvider();
});
test('writes a debug message', async () => {
const writable: TerminalStreamWritable = new TerminalStreamWritable({
terminal,
severity: TerminalProviderSeverity.debug
});
await writeAsync(writable, 'test message');
verifyProvider();
});
test('writes a warning message', async () => {
const writable: TerminalStreamWritable = new TerminalStreamWritable({
terminal,
severity: TerminalProviderSeverity.warning
});
await writeAsync(writable, 'test message');
verifyProvider();
});
test('writes an error message', async () => {
const writable: TerminalStreamWritable = new TerminalStreamWritable({
terminal,
severity: TerminalProviderSeverity.error
});
await writeAsync(writable, 'test message');
verifyProvider();
});
});