From 7bcb7733ad6986fdf11a528dec22c38fff624836 Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Thu, 29 Oct 2026 10:24:22 -0700 Subject: [PATCH] ci(portability): spell the Windows test TEMP by its short name (#487) The runner's own TEMP was C:\Users\RUNNER~1\..., so tests met 8.3 short names in every temp path. The folder on D: keeps that when the disk has short names, and the step logs which spelling it got. TESTING.md notes that the slowest list is not printed when a job is cancelled. --- .github/workflows/portability.yml | 13 +++++++++---- TESTING.md | 15 +++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/portability.yml b/.github/workflows/portability.yml index b78a656a..bd58b2c6 100644 --- a/.github/workflows/portability.yml +++ b/.github/workflows/portability.yml @@ -54,14 +54,19 @@ jobs: # The runner's TEMP is on C:, the OS disk, where a flush took about 6 ms # and a test database's create-to-delete about 111 ms; on the D: work # disk the same took 0.5 ms and 23 ms (macOS: 19 ms). Tests write their - # databases under TEMP, so it moves to the runner's temp folder on D: - # (measured in #487, run 40915866444). + # databases under TEMP, so it moves to a folder on D: (measured in #487, + # run 40915866444). The runner's TEMP was an 8.3 short name + # (C:\Users\RUNNER~1\...), so the new one is spelled by its short name too + # when the disk has them, and paths still have to be resolved. - name: Keep test files on the work disk (Windows) if: runner.os == 'Windows' shell: pwsh run: | - "TEMP=$env:RUNNER_TEMP" >> $env:GITHUB_ENV - "TMP=$env:RUNNER_TEMP" >> $env:GITHUB_ENV + $folder = New-Item -ItemType Directory -Force -Path (Join-Path $env:RUNNER_TEMP "PromptManagerTests") + $short = (New-Object -ComObject Scripting.FileSystemObject).GetFolder($folder.FullName).ShortPath + Write-Output "test TEMP: $short (long name $($folder.FullName))" + "TEMP=$short" >> $env:GITHUB_ENV + "TMP=$short" >> $env:GITHUB_ENV - name: Run tests env: diff --git a/TESTING.md b/TESTING.md index 4e04e629..64aeb1e0 100644 --- a/TESTING.md +++ b/TESTING.md @@ -254,14 +254,17 @@ the process exits non-zero. - `PM_TEST_SLOWEST=N` (off by default) lists the N slowest tests after the summary, each timed from its `start:` line to the next one like the hang limit. The Windows and macOS jobs (`portability.yml`) set it to 40, so every - run shows where its time went (#487). + run shows where its time went (#487). The list prints only when the run + ends: a job GitHub cancels or a watchdog exit prints none, so read the + timestamps between `start:` lines instead. - On the Windows runners `TEMP` sits on the OS disk C:, where a flush took about 6 ms and a test database's create-to-delete about 111 ms (D: 0.5 ms and 23 ms, - macOS 19 ms). `portability.yml` points `TEMP`/`TMP` at `RUNNER_TEMP` on D: - before the suite. A test that waits on a fixed busy timeout, a network name - (`\\server\share`: use `\\localhost\`) or a default TLS - context (it reads the Windows certificate store) costs seconds there; the - slowest list shows it. + macOS 19 ms). `portability.yml` points `TEMP`/`TMP` at a folder under + `RUNNER_TEMP` on D: before the suite, spelled by its 8.3 short name when D: + has them (the runner's own TEMP was `C:\Users\RUNNER~1\...`), and logs it. + A test that waits on a fixed busy timeout, a network name (`\\server\share`: + use `\\localhost\`) or a default TLS context (it reads the + Windows certificate store) costs seconds there; the slowest list shows it. Every job in `test.yml`, `code-quality.yml` and `viewerjs-check.yml` has `timeout-minutes` (`tests/vendor/ci-workflow.test.mjs` checks it). The rule is