amaran-light-cli
Version:
Command line tool for controlling Aputure Amaran lights via WebSocket to a local Amaran desktop app.
43 lines • 1.91 kB
JavaScript
import { spawnSync } from 'node:child_process';
import { existsSync, mkdirSync, mkdtempSync, rmSync, symlinkSync } from 'node:fs';
import path, { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { CONFIG_DIR_ENV } from '../config.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const cliPath = path.resolve(__dirname, '../../dist/cli.js');
const runBuiltCliTest = existsSync(cliPath) ? it : it.skip;
describe('CLI Smoke Test', () => {
let configDir;
beforeEach(() => {
mkdirSync('.test-storage', { recursive: true });
configDir = mkdtempSync(join(process.cwd(), '.test-storage', 'cli-smoke-'));
});
afterEach(() => {
rmSync(configDir, { recursive: true, force: true });
});
runBuiltCliTest('should run built cli help without error', () => {
const proc = spawnSync('node', [cliPath, '--help'], {
encoding: 'utf8',
timeout: 10000,
env: { ...process.env, [CONFIG_DIR_ENV]: configDir, FORCE_COLOR: '0' },
});
expect(proc.status).toBe(0);
expect(proc.stdout).toMatch(/Usage|Help|Options/i);
expect(proc.stdout).not.toContain('(dev)');
});
runBuiltCliTest('should run built cli help through a symlink', () => {
const binPath = join(configDir, 'amaran-cli');
symlinkSync(cliPath, binPath, 'file');
const proc = spawnSync('node', [binPath, '--help'], {
encoding: 'utf8',
timeout: 10000,
env: { ...process.env, [CONFIG_DIR_ENV]: configDir, FORCE_COLOR: '0' },
});
expect(proc.status).toBe(0);
expect(proc.stdout).toContain('Usage: amaran-cli');
expect(proc.stdout).not.toContain('(dev)');
});
});
//# sourceMappingURL=cli.smoke.test.js.map