import { expect, test } from 'bun:test'; import { checkCliVersion } from './cli-version-contract'; // ce-5qp: harness<->CLI version contract fails fast on a stale management image. test('accepts a CLI at or above the minimum', () => { expect(checkCliVersion('celilo 0.9.1', '0.9.0')).toBeNull(); expect(checkCliVersion('celilo 0.9.0', '0.9.0')).toBeNull(); expect(checkCliVersion('celilo 1.2.3', '0.9.0')).toBeNull(); }); test('rejects a stale CLI with an actionable message', () => { const msg = checkCliVersion('celilo 0.5.0-alpha.5', '0.9.0'); expect(msg).toContain('celilo 0.5.0-alpha.5'); expect(msg).toContain('>=0.9.0'); expect(msg).toContain('build-infra'); }); test('reports unparseable version output instead of silently passing', () => { expect(checkCliVersion('command not found', '0.9.0')).toContain('Could not parse'); expect(checkCliVersion('', '0.9.0')).toContain('Could not parse'); });