docs: correct two landmine rows that my own later fixes disproved
The transport row said to cap xUnit.MaxParallelThreads; serializing that assembly actually REGRESSED Windows (1000 passed in 7 s -> 999/1000 in 17 s) and the real fix was widening the virtual-clock harness's wall-clock patience. The Avalonia row said to serialize via xunit.runner.json; that does not fix it either — proven twice, including with a compiled-in attribute so delivery could not be blamed. It needs a real desktop and is now Lane=Manual. Both rows now record what was tried and disproved, which is the part worth keeping.
This commit is contained in:
parent
311c8bd3df
commit
353231fe6e
1 changed files with 4 additions and 3 deletions
|
|
@ -94,7 +94,8 @@ directory and `current.json` names the installed version.
|
|||
|
||||
## Landmines
|
||||
|
||||
Each of these cost a red pipeline; none was a config typo.
|
||||
Each of these cost a red pipeline; none was a config typo. Two rows record a
|
||||
fix that was tried and **disproved** — read those before repeating it.
|
||||
|
||||
| Symptom | Cause |
|
||||
|---|---|
|
||||
|
|
@ -104,8 +105,8 @@ Each of these cost a red pipeline; none was a config typo.
|
|||
| ~40 tests fail on formatted numbers | Runner's `HKCU` locale was `en-SE` (comma decimal): expected `"update:0.25"`, got `"update:0,25"`. `Set-Culture` does **not** reach a scheduled task without a loaded profile — set the registry directly |
|
||||
| `DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1` as the locale fix | Too blunt — it breaks tests that legitimately construct a culture. Fix the machine locale instead |
|
||||
| `FileNotFoundException: client_cell_1.dat` | DAT-dependent tests missing `[Trait("Lane", "InstalledDat")]`. Build machines have no DATs |
|
||||
| Timing-sensitive test fails only under load | `FakeAceTransportTests.PausedSelector_…` took 37 s under full-assembly parallelism vs ~350 ms isolated. Cap `xUnit.MaxParallelThreads` on small runners rather than edit transport code |
|
||||
| Avalonia "calling thread cannot access this object" in cleanup | Serialize that assembly (`xunit.runner.json`). The stack shows a compositor being **constructed** during teardown; `TestAppBuilder` documents the hazard. Do **not** "fix" it by de-async-ing the test — that causes the failure |
|
||||
| Timing-sensitive test fails only under load | `FakeAceTransportTests.PausedSelector_…` took 37-42 s under load vs ~350 ms isolated. Its harness drives a VIRTUAL clock but asserted on 2 s wall-clock windows; those are patience, not assertions, and now share a 60 s `HarnessPatience`. **Do not serialize the assembly to fix it** — that regressed Windows from 1000 passed in 7 s to 999/1000 in 17 s, breaking a loss-soak test that had never failed |
|
||||
| Avalonia "calling thread cannot access this object" in cleanup | `MainWindowViewTests` needs a real desktop session and is `Lane=Manual`. Measured: PASSES on a dev desktop and on the CI Windows box over SSH; FAILS under `act_runner` and on Linux. Serializing the assembly does **not** fix it (tried via `xunit.runner.json` and a compiled-in `CollectionBehavior` attribute), and de-async-ing the test actively causes the failure. The stack shows a compositor being **constructed** during teardown — it is the headless session lifecycle, not parallelism |
|
||||
|
||||
## Culture note
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue