gstack/test/is-conductor.test.ts

51 lines
1.8 KiB
TypeScript

import { describe, test, expect } from 'bun:test';
import { isConductor } from '../lib/is-conductor';
describe('is-conductor', () => {
test('true when CONDUCTOR_WORKSPACE_PATH is set', () => {
expect(isConductor({ CONDUCTOR_WORKSPACE_PATH: '/Users/x/conductor/ws' })).toBe(true);
});
test('true when CONDUCTOR_PORT is set', () => {
expect(isConductor({ CONDUCTOR_PORT: '55070' })).toBe(true);
});
test('true when both are set', () => {
expect(isConductor({ CONDUCTOR_WORKSPACE_PATH: '/ws', CONDUCTOR_PORT: '55070' })).toBe(true);
});
test('false when neither is set', () => {
expect(isConductor({ HOME: '/Users/x', PATH: '/usr/bin' })).toBe(false);
});
test('false on an empty env', () => {
expect(isConductor({})).toBe(false);
});
test('false when the vars are present but empty (Codex #1 hardening — empty != set)', () => {
expect(isConductor({ CONDUCTOR_WORKSPACE_PATH: '', CONDUCTOR_PORT: '' })).toBe(false);
});
test('reads the passed env at call time, not a module-load snapshot', () => {
const env: NodeJS.ProcessEnv = {};
expect(isConductor(env)).toBe(false);
// mutate AFTER the first call — a call-time read must see the new value
env.CONDUCTOR_PORT = '55070';
expect(isConductor(env)).toBe(true);
});
test('defaults to process.env when no arg is passed', () => {
const saved = process.env.CONDUCTOR_PORT;
try {
process.env.CONDUCTOR_PORT = '12345';
expect(isConductor()).toBe(true);
delete process.env.CONDUCTOR_PORT;
// CONDUCTOR_WORKSPACE_PATH may be set in a real Conductor session; guard the assertion
if (!process.env.CONDUCTOR_WORKSPACE_PATH) expect(isConductor()).toBe(false);
} finally {
if (saved === undefined) delete process.env.CONDUCTOR_PORT;
else process.env.CONDUCTOR_PORT = saved;
}
});
});