Files
openchamber/packages/web/bin/cli-output.test.js
T

37 lines
1.1 KiB
JavaScript
Raw Normal View History

import { describe, expect, it } from 'vitest';
async function withInteractiveTty(fn) {
const stdoutDescriptor = Object.getOwnPropertyDescriptor(process.stdout, 'isTTY');
const stdinDescriptor = Object.getOwnPropertyDescriptor(process.stdin, 'isTTY');
Object.defineProperty(process.stdout, 'isTTY', { configurable: true, value: true });
Object.defineProperty(process.stdin, 'isTTY', { configurable: true, value: true });
try {
return await fn();
} finally {
if (stdoutDescriptor) {
Object.defineProperty(process.stdout, 'isTTY', stdoutDescriptor);
} else {
delete process.stdout.isTTY;
}
if (stdinDescriptor) {
Object.defineProperty(process.stdin, 'isTTY', stdinDescriptor);
} else {
delete process.stdin.isTTY;
}
}
}
describe('cli output', () => {
it('creates interactive clack spinner and progress helpers', async () => {
await withInteractiveTty(async () => {
const output = await import('./cli-output.js?interactive-test');
expect(output.createSpinner({})).toBeTruthy();
await expect(output.createProgress({}, { max: 2 })).resolves.toBeTruthy();
});
});
});