test: classify prerequisite lanes and own Avalonia sessions
This commit is contained in:
parent
c1a905004a
commit
3684e7b5e7
113 changed files with 273 additions and 22 deletions
|
|
@ -12,9 +12,9 @@ The command verifies that `AcDream.slnx` contains every `.csproj` under `src/`,
|
|||
then discovers and runs every hermetic test in every default test assembly once
|
||||
in a fresh Release process. It does not retry failures. Tests carrying an
|
||||
explicit non-hermetic `Lane` trait (`InstalledDat`, `PreparedPackage`, `Live`,
|
||||
or `Manual`), `Purpose=Diagnostic`, or `Status=KnownFailure` are excluded from
|
||||
the hermetic total and run through their owned lane instead. The graph currently
|
||||
contains 44 projects,
|
||||
`Manual`, `Windows`, `Linux`, or `SystemFont`), `Purpose=Diagnostic`, or
|
||||
`Status=KnownFailure` are excluded from the hermetic total and run through
|
||||
their owned lane instead. The graph currently contains 44 projects,
|
||||
including all 13 maintained .NET tools; data-dependent tools are built but are
|
||||
not executed as tests.
|
||||
|
||||
|
|
@ -79,8 +79,18 @@ Installed-DAT tests require an explicit opt-in and a retail DAT directory:
|
|||
```powershell
|
||||
$env:ACDREAM_RUN_INSTALLED_DAT_TESTS = '1'
|
||||
$env:ACDREAM_DAT_DIR = 'C:\path\to\Asherons Call'
|
||||
dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release `
|
||||
--filter 'Lane=InstalledDat&Status!=KnownFailure&Purpose!=Diagnostic'
|
||||
pwsh ./tools/run-release-gate.ps1 -SkipRestore -SkipBuild `
|
||||
-TestFilter 'Lane=InstalledDat&Status!=KnownFailure&Purpose!=Diagnostic'
|
||||
```
|
||||
|
||||
The prepared-package lane additionally requires a validated `acdream.pak`
|
||||
beside the DATs or at `ACDREAM_PAK_PATH`:
|
||||
|
||||
```powershell
|
||||
$env:ACDREAM_DAT_DIR = 'C:\path\to\Asherons Call'
|
||||
$env:ACDREAM_PAK_PATH = 'C:\path\to\acdream.pak'
|
||||
pwsh ./tools/run-release-gate.ps1 -SkipRestore -SkipBuild `
|
||||
-TestFilter 'Lane=PreparedPackage&Status!=KnownFailure&Purpose!=Diagnostic'
|
||||
```
|
||||
|
||||
Regenerate all committed UI fixtures through the one comprehensive manual
|
||||
|
|
@ -109,6 +119,14 @@ dotnet test tests/AcDream.Core.Tests/AcDream.Core.Tests.csproj -c Release `
|
|||
--filter 'Purpose=Diagnostic'
|
||||
```
|
||||
|
||||
Operating-system contracts are likewise explicit. Run `Lane=Windows` on a
|
||||
Windows host and `Lane=Linux` on a native Linux host; a lane is not portable
|
||||
evidence when executed on the other operating system.
|
||||
|
||||
`Lane=SystemFont` exercises the BitmapFont path against a host-provided TTF.
|
||||
It is separate because the supported runtime can legitimately have none of the
|
||||
well-known development fonts installed.
|
||||
|
||||
## Updating dependencies
|
||||
|
||||
Do not edit lock files by hand. To make an intentional dependency change:
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ identifiable in the lane report.
|
|||
| T-004 warning mismatches | resolved in R2 | Clean rebuild is zero-warning with repository-wide warnings-as-errors. |
|
||||
| T-005 unreachable panel stack | requires production reachability proof | Do not delete 52 meaningful tests until the dead presentation surface and any supported plugin compatibility promise are verified together. |
|
||||
| T-006 misleading installed-DAT reason | resolved in batch B | Shared opt-in is now `ACDREAM_RUN_INSTALLED_DAT_TESTS=1` (legacy switch retained), the reason names the lane, and all nine owners carry `Lane=InstalledDat`. |
|
||||
| T-007 271 silent passing gates | active; current candidate set generated | Current syntax has 282 prerequisite-return candidates across seven projects. Inspect/classify from the generated manifest; the count changed with source growth and includes platform gates, so do not mechanically rewrite all 282. |
|
||||
| T-007 271 silent passing gates | lane classification complete in batch D; body cleanup active | Of 282 current candidates, 280 are true prerequisite gates and now have an explicit lane. The two unlaned methods are reviewed false positives that assert the current Windows/Linux branch before returning. Empty-return removal remains, lane by lane. |
|
||||
| T-008 incapable-of-failing diagnostics | batch A plus diagnostic lane work | Delete the literal wiring smoke test; repair the GPU contract tautology; later re-home output-only apparatus. |
|
||||
| T-009 wall-clock double-click tests | open | Introduce a behavior-preserving injectable monotonic clock and deterministic fake time. |
|
||||
| T-010 two useless cases | high-confidence cleanup batch A | Delete `SmokeTest.TestProject_IsWired` and `ChaseCameraTests.ImplementsICamera`; compilation already proves both claims. |
|
||||
|
|
@ -137,7 +137,7 @@ identifiable in the lane report.
|
|||
| T-014 seven load-sensitive tests | active; first mechanism reproduced | `PortalProjectionTests.ClipToRegion_FrameOwnedStore_ReusesExactResultArray` reported 6,904 B only while three App test hosts ran concurrently, then passed in an isolated run. Preserve both observations and remove ambient process-allocation sensitivity rather than loosening the zero-allocation oracle. |
|
||||
| T-015 four non-prerequisite skips | resolved in batches A/B | PVS scaffold deleted with rationale preserved; redundant chat/radar generators deleted in favor of the comprehensive Manual lane; tower oracle is `Status=KnownFailure`. |
|
||||
| T-016 historical test taxonomy | open | Rename/re-home only after each test's durable owner and oracle are established. |
|
||||
| T-017 Avalonia ownership | resolved in R2 | All seven editor variants now execute in one owned application session; 11 focused passes plus the complete gate. |
|
||||
| T-017 Avalonia ownership | reopened and closed in batch D | The full gate exposed the same compositor ownership class between six newer `MainWindowViewTests` facts. Their six named assertion phases now run in one owned Avalonia application session; 25 fresh-process stress iterations and the complete gate pass. |
|
||||
| T-018 stderr observer race | resolved in R2 | Live reader shares writes/deletes; 25 focused repetitions plus the complete gate. |
|
||||
|
||||
## Preserved rationale for removals in batch A
|
||||
|
|
@ -251,3 +251,62 @@ An attempted parallel App/Core build collided on the shared
|
|||
`AcDream.Plugin.Abstractions` intermediate DLL. The repository gate serializes
|
||||
projects, so the authoritative verification is the two isolated clean builds
|
||||
above; no code or assertion was changed in response to that tooling collision.
|
||||
|
||||
## Batch D prerequisite lanes and Avalonia ownership
|
||||
|
||||
The reviewed prerequisite map classifies every true candidate without deleting
|
||||
its existing guard:
|
||||
|
||||
| Lane | Attributed methods | Prerequisite |
|
||||
|---|---:|---|
|
||||
| `InstalledDat` | 336 | Installed retail DAT directory; includes the 73 custom installed-DAT facts and whole DAT-backed investigation classes. |
|
||||
| `PreparedPackage` | 2 | Installed DATs plus validated `acdream.pak`. |
|
||||
| `Live` | 3 | Explicit live handshake opt-in and reachable service. |
|
||||
| `Manual` | 1 | Explicit fixture-regeneration opt-in. |
|
||||
| `Windows` | 7 | Windows-only filesystem/process/timer behavior. |
|
||||
| `Linux` | 10 | Linux permission/signal/monotonic-clock behavior. |
|
||||
| `SystemFont` | 2 | A host system TTF available to the BitmapFont path. |
|
||||
|
||||
Class-level traits legitimately cover some additional methods that share the
|
||||
same fixture owner, so the 336 installed-DAT method count is larger than the
|
||||
280 syntax candidates. The only candidate methods without a lane are
|
||||
`GraphicalHostPlatformServicesTests.CurrentPlatformOwnsPathsPacingAndNativeClosure`
|
||||
and
|
||||
`LinuxMonotonicFramePacingWaiterTests.PlatformFactorySelectsCurrentOperatingSystem`.
|
||||
Both are hermetic cross-platform branch tests: on Windows or Linux they assert
|
||||
the matching branch and return only after the assertion. They are not silent
|
||||
prerequisite passes.
|
||||
|
||||
The 11 conditional `SkipException.ForSkip` source sites are also reconciled.
|
||||
They serve 12 test methods: installed-DAT asset contracts, one prepared-package
|
||||
contract, and two system-font contracts. xUnit v2 reports that exception shape
|
||||
as a failure rather than a dynamic skip, but the owning lanes now keep them out
|
||||
of the hermetic total. A later body-cleanup batch will replace the misleading
|
||||
skip wording/exception with explicit prerequisite failure or discovery-time
|
||||
lane behavior.
|
||||
|
||||
The first complete Batch D gate correctly failed in Launcher cleanup after
|
||||
14,396 passes: the six `MainWindowViewTests` Avalonia facts could start and
|
||||
destroy isolated thread-affine compositors on different xUnit workers. The
|
||||
assertion bodies were preserved as six named private phases under one
|
||||
`CompiledMarkupAndEveryModalFocusPathRunInOneOwnedAvaloniaSession` fact. The
|
||||
focused two-case class then passed in 25 consecutive fresh processes (50/50
|
||||
results), and the same full-gate context passed.
|
||||
|
||||
Batch D verification:
|
||||
|
||||
- complete 44-project Release build: 0 warnings, 0 errors;
|
||||
- final syntax manifest: 11,450 attributed methods, 51 diagnostics, one known
|
||||
failure, 282 prerequisite-return candidates, and only the two reviewed
|
||||
cross-platform false positives unlaned;
|
||||
- complete hermetic Release gate: 14,392 passed / 0 skipped / 0 failed across
|
||||
all 12 test assemblies in 131.518 seconds; and
|
||||
- Launcher view stress: 25 fresh processes, 2/2 cases per process, no cleanup
|
||||
or ownership failures.
|
||||
|
||||
The 350-pass reduction from the clean R2 headline is exactly explained: batch A
|
||||
netted minus one case; batch B removed six non-hermetic passes; batch C removed
|
||||
68 newly classified diagnostic cases; batch D removed 270 prerequisite-lane
|
||||
passes; and consolidating the six Avalonia sessions into one removed five case
|
||||
IDs without removing any assertion phase. All 77 former default skips are also
|
||||
accounted for by the PVS deletion and batch-B lane/deletion decisions.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue