Export ngrok tunnel capabilities for CLI startup Import Clack spinner/progress helpers used in interactive CLI paths Restore Google quota provider registry exports
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|