debug: fail Windows repro on PTY crashes

This commit is contained in:
Sebastian Herrlinger 2026-06-30 17:24:00 +02:00
commit 086697d46c
2 changed files with 40 additions and 7 deletions

View file

@ -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

View file

@ -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