mirror of https://github.com/garrytan/gstack.git
51 lines
1.8 KiB
TypeScript
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;
|
|
}
|
|
});
|
|
});
|