import { expect, test, describe } from 'vitest' import { waitForFile, waitForPort, waitForProcess, waitForTimeout, waitForURL, } from '../../../src/template/readycmd' describe('readycmd', () => { test('waitForPort matches the exact listening port', () => { const cmd = waitForPort(80).getCmd() expect(cmd).toBe('[ -n "$(ss -Htuln sport = :80)" ]') }) test('waitForURL quotes the url', () => { const cmd = waitForURL('http://localhost:3000/health?ready=1&x=y').getCmd() expect(cmd).toBe( 'curl -s -o /dev/null -w "%{http_code}" \'http://localhost:3000/health?ready=1&x=y\' | grep -q "200"' ) }) test('waitForURL keeps simple urls unquoted', () => { const cmd = waitForURL('http://localhost:3000/health').getCmd() expect(cmd).toBe( 'curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/health | grep -q "200"' ) }) test('waitForProcess quotes the process name', () => { const cmd = waitForProcess('my daemon').getCmd() expect(cmd).toBe("pgrep 'my daemon' > /dev/null") }) test('waitForFile quotes the filename', () => { const cmd = waitForFile('/tmp/ready file').getCmd() expect(cmd).toBe("[ -f '/tmp/ready file' ]") }) test('waitForFile keeps simple paths unquoted', () => { const cmd = waitForFile('/tmp/ready').getCmd() expect(cmd).toBe('[ -f /tmp/ready ]') }) test('waitForTimeout converts milliseconds to seconds', () => { expect(waitForTimeout(5000).getCmd()).toBe('sleep 5') expect(waitForTimeout(100).getCmd()).toBe('sleep 1') }) })