From 086697d46ca33713c13d564b04c57db61e5d6103 Mon Sep 17 00:00:00 2001 From: Sebastian Herrlinger Date: Tue, 30 Jun 2026 17:24:00 +0200 Subject: [PATCH] debug: fail Windows repro on PTY crashes --- .github/workflows/test.yml | 13 ++++++++++ script/repro-windows-opentui-crash.ps1 | 34 ++++++++++++++++++++------ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9eda2118ff..57af1f7bc1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -193,3 +193,16 @@ jobs: - name: Run Windows standalone repro timeout-minutes: 15 run: ./script/repro-windows-opentui-crash.ps1 -Version "${{ matrix.version }}" + + - name: Upload Windows repro artifacts + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: windows-opentui-repro-${{ matrix.version }}-${{ matrix.host }}-${{ github.run_attempt }} + if-no-files-found: ignore + retention-days: 7 + path: | + ${{ runner.temp }}/opencode-windows-opentui-${{ matrix.version }}/**/*.log + ${{ runner.temp }}/opencode-windows-opentui-${{ matrix.version }}/**/*.jsonl + ${{ runner.temp }}/*.out.log + ${{ runner.temp }}/*.err.log diff --git a/script/repro-windows-opentui-crash.ps1 b/script/repro-windows-opentui-crash.ps1 index 6343651b55..f5842c6305 100644 --- a/script/repro-windows-opentui-crash.ps1 +++ b/script/repro-windows-opentui-crash.ps1 @@ -96,6 +96,26 @@ function Invoke-Opencode { } } +function Invoke-PtyScenario { + param( + [Parameter(Mandatory = $true)] + [string]$Scenario, + [Parameter(Mandatory = $true)] + [string]$Exe, + [Parameter(Mandatory = $true)] + [string]$Project, + [Parameter(Mandatory = $true)] + [string]$Version, + [Parameter(Mandatory = $true)] + [int]$Seconds + ) + + node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $Exe --project $Project --version $Version --seconds $Seconds --scenario $Scenario + if ($LASTEXITCODE -ne 0) { + throw "PTY scenario '$Scenario' failed with exit code $LASTEXITCODE" + } +} + Write-Section "Environment" node --version npm --version @@ -171,14 +191,14 @@ Push-Location $ptyRoot try { npm init -y | Out-Host npm install "@lydell/node-pty@1.2.0-beta.12" | Out-Host - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario text - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario markdown - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario bash-auto - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario bash-permission - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario task-permission - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario mcp-npx + Invoke-PtyScenario -Scenario "text" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds + Invoke-PtyScenario -Scenario "markdown" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds + Invoke-PtyScenario -Scenario "bash-auto" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds + Invoke-PtyScenario -Scenario "bash-permission" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds + Invoke-PtyScenario -Scenario "task-permission" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds + Invoke-PtyScenario -Scenario "mcp-npx" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds if ($Version -eq "1.17.10") { - node (Join-Path $PSScriptRoot "repro-windows-opentui-pty-session.mjs") -- --exe $exe --project $sessionProject --version $Version --seconds $PtySeconds --scenario mcp-npx-no-native-render + Invoke-PtyScenario -Scenario "mcp-npx-no-native-render" -Exe $exe -Project $sessionProject -Version $Version -Seconds $PtySeconds } } finally { Pop-Location