Refine ACP log directions and visibility #79
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CLI Smoke Test | |
| on: | |
| push: | |
| branches: [ main ] | |
| paths: | |
| - 'packages/happy-cli/**' | |
| - '.github/workflows/cli-smoke-test.yml' | |
| pull_request: | |
| branches: [ main ] | |
| paths: | |
| - 'packages/happy-cli/**' | |
| - '.github/workflows/cli-smoke-test.yml' | |
| workflow_dispatch: | |
| jobs: | |
| smoke-test-linux: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [20, 24] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Build package | |
| run: yarn workspace happy-coder build | |
| - name: Pack package | |
| run: yarn workspace happy-coder pack | |
| - name: Install packed package globally | |
| run: | | |
| PACKAGE_FILE=$(ls packages/happy-cli/*.tgz) | |
| npm install -g "./$PACKAGE_FILE" | |
| - name: Test binary execution | |
| run: | | |
| # Test that the binary starts successfully | |
| echo "Testing happy --help..." | |
| timeout 30s happy --help || { | |
| echo "Error: happy --help failed or timed out" | |
| exit 1 | |
| } | |
| echo "Testing happy --version..." | |
| timeout 10s happy --version || { | |
| echo "Error: happy --version failed or timed out" | |
| exit 1 | |
| } | |
| echo "Testing happy doctor..." | |
| timeout 30s happy doctor || { | |
| echo "Error: happy doctor failed or timed out" | |
| exit 1 | |
| } | |
| echo "Testing happy daemon status..." | |
| timeout 10s happy daemon status || { | |
| echo "Error: happy daemon status failed or timed out" | |
| exit 1 | |
| } | |
| echo "Smoke test passed on Linux!" | |
| smoke-test-windows: | |
| runs-on: windows-latest | |
| strategy: | |
| matrix: | |
| node-version: [20, 24] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Build package | |
| run: yarn workspace happy-coder build | |
| - name: Pack package | |
| run: yarn workspace happy-coder pack | |
| - name: Install packed package globally | |
| shell: cmd | |
| run: | | |
| for %%f in (packages\happy-cli\*.tgz) do npm install -g "%%f" | |
| - name: Debug npm global installation structure | |
| shell: cmd | |
| run: | | |
| for /f "tokens=*" %%i in ('npm config get prefix') do set NPM_PREFIX=%%i | |
| echo NPM_PREFIX: %NPM_PREFIX% | |
| echo Listing npm prefix directory: | |
| dir "%NPM_PREFIX%" 2>nul || echo Failed to list NPM_PREFIX | |
| echo. | |
| echo Checking for node_modules in npm prefix: | |
| if exist "%NPM_PREFIX%\node_modules" ( | |
| echo Found node_modules directory | |
| dir "%NPM_PREFIX%\node_modules" 2>nul | |
| echo. | |
| echo Checking for happy-coder package: | |
| if exist "%NPM_PREFIX%\node_modules\happy-coder" ( | |
| echo Found happy-coder package | |
| dir "%NPM_PREFIX%\node_modules\happy-coder" 2>nul | |
| echo. | |
| echo Checking for dist directory: | |
| if exist "%NPM_PREFIX%\node_modules\happy-coder\dist" ( | |
| echo Found dist directory | |
| dir "%NPM_PREFIX%\node_modules\happy-coder\dist" 2>nul | |
| ) else ( | |
| echo No dist directory found | |
| ) | |
| ) else ( | |
| echo No happy-coder package found | |
| ) | |
| ) else ( | |
| echo No node_modules directory found | |
| ) | |
| - name: Test binary execution | |
| shell: cmd | |
| run: | | |
| @echo on | |
| rem Get npm global prefix and add to PATH | |
| for /f "tokens=*" %%i in ('npm config get prefix') do set NPM_PREFIX=%%i | |
| set PATH=%NPM_PREFIX%;%PATH% | |
| echo NPM_PREFIX: %NPM_PREFIX% | |
| echo Current PATH: %PATH% | |
| rem Debug: Check if happy exists in various locations | |
| echo Checking for happy binary... | |
| where happy 2>nul && echo Found happy in PATH || echo happy not found in PATH | |
| if exist "%NPM_PREFIX%\happy.cmd" echo Found happy.cmd in NPM_PREFIX | |
| if exist "%NPM_PREFIX%\node_modules\.bin\happy.cmd" echo Found happy.cmd in .bin directory | |
| dir "%NPM_PREFIX%\*happy*" 2>nul || echo No happy files found in NPM_PREFIX | |
| rem Debug: Check the actual contents and encoding of the installed file | |
| if exist "%NPM_PREFIX%\happy.cmd" ( | |
| echo File size and type: | |
| dir "%NPM_PREFIX%\happy.cmd" | |
| echo. | |
| echo First few lines of the file: | |
| type "%NPM_PREFIX%\happy.cmd" | head -5 | |
| echo. | |
| echo Hex dump of first 50 bytes to check line endings: | |
| powershell -Command "Get-Content '%NPM_PREFIX%\happy.cmd' -Encoding Byte -TotalCount 50 | ForEach-Object { '{0:X2}' -f $_ } | Join-String -Separator ' '" | |
| echo. | |
| echo Testing with direct path... | |
| "%NPM_PREFIX%\happy.cmd" --help | |
| ) else ( | |
| echo Testing happy --help... | |
| happy --help | |
| ) | |
| if errorlevel 1 ( | |
| echo Error: happy --help failed | |
| exit /b 1 | |
| ) | |
| rem Test version | |
| if exist "%NPM_PREFIX%\happy.cmd" ( | |
| "%NPM_PREFIX%\happy.cmd" --version | |
| ) else ( | |
| happy --version | |
| ) | |
| if errorlevel 1 ( | |
| echo Error: happy --version failed | |
| exit /b 1 | |
| ) | |
| rem Test doctor | |
| echo Testing happy doctor... | |
| if exist "%NPM_PREFIX%\happy.cmd" ( | |
| "%NPM_PREFIX%\happy.cmd" doctor | |
| ) else ( | |
| happy doctor | |
| ) | |
| if errorlevel 1 ( | |
| echo Error: happy doctor failed | |
| exit /b 1 | |
| ) | |
| rem Test daemon status | |
| echo Testing happy daemon status... | |
| if exist "%NPM_PREFIX%\happy.cmd" ( | |
| "%NPM_PREFIX%\happy.cmd" daemon status | |
| ) else ( | |
| happy daemon status | |
| ) | |
| if errorlevel 1 ( | |
| echo Error: happy daemon status failed | |
| exit /b 1 | |
| ) | |
| echo Smoke test passed on Windows! | |
| # We don't need a smoke test for macOS because most contributors are developing on macOS. |