Skip to content

Fix CI: xunit test discovery and VSIX installer blocking - #54

Merged
o4oren merged 9 commits into
mainfrom
fix/ci-workflows
Aug 15, 2026
Merged

Fix CI: xunit test discovery and VSIX installer blocking#54
o4oren merged 9 commits into
mainfrom
fix/ci-workflows

Conversation

@o4oren

@o4oren o4oren commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • Tests ran zero tests silently: vstest.console does not auto-load the xunit adapter from the output directory — it printed No test is available and still exited 0, so the check was green without running anything. Now passes /TestAdapterPath and hard-fails if no tests are discovered or no passing summary is printed.
  • Release workflow VSIX step failed with 8006: MSBuild background nodes from the build step were still alive and blocked VSIXInstaller. The extension now installs before any build, blocking processes are killed first, and MSBuild runs with /nr:false.

Changes

  • .github/workflows/test.yml — TestAdapterPath + zero-test guard, /nr:false
  • .github/workflows/release.yml — VSIX install moved before builds + taskkill, TestAdapterPath + zero-test guard, /nr:false

Test Plan

  • Tests workflow on this PR reports the actual test count (~40) instead of 'No test is available'
  • After merge: re-run Build and Release with version 3.6.2 — VSIX install and Setup.msi build succeed

🤖 Generated with Claude Code

Oren Geva and others added 9 commits August 15, 2026 19:24
…e builds

- vstest.console does not auto-load the xunit adapter from the output
  directory and exits 0 with 'No test is available' — pass
  /TestAdapterPath and hard-fail when no tests are discovered or no
  passing summary is printed
- VSIXInstaller exits 8006 when MSBuild background nodes are still
  alive: install the Installer Projects extension before any build,
  taskkill blockers first, and build with /nr:false

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The adapter DLL is not reliably copied to the test output directory, so
/TestAdapterPath pointed at bin still discovered zero tests. Prefer the
bin copy, fall back to the restored package in the NuGet cache, and log
the bin contents for diagnosis.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
windows-latest now ships Visual Studio 18; the Installer Projects
extension targets VS 2022 (v17) and cannot install there, which is the
real cause of the VSIXInstaller failures. windows-2022 ships VS 2022.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
VSTest prints 'Test Run Successful.' rather than 'Passed!' — all 44
tests passed but the guard rejected the summary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nstall

Start-Process does not set $LASTEXITCODE, so the Actions pwsh wrapper's
trailing 'exit $LASTEXITCODE' returned taskkill's nonzero result even
when VSIXInstaller succeeded (silent 11-minute 'failure' with no
exception in the log). Reset $LASTEXITCODE, exit 0 explicitly, log the
installer exit code, and dump the VSIX log tail on real failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
System.Data.SQLite.dll and System.Data.SQLite.EF6.dll used bare
filenames as SourcePath, resolved relative to the Setup folder — they
only built because untracked local copies existed there. Point them at
FSTRaK\bin\x64\Release like the other assembly entries so the vdproj
builds on CI and on any clean checkout.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
VSIXInstaller nondeterministically hangs on fresh runners (succeeded in
~10 minutes on one run, hung past 20 on the next). Cap each attempt at
15 minutes, kill and retry once, and raise the step timeout to 35.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The .mbtiles chart data lives in LFS; the default checkout left pointer
files, producing a 33 MB MSI instead of ~347 MB.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace lfs:true checkout with cached .git/lfs keyed on the LFS object
IDs plus git lfs pull — the mbtiles rarely change, so repeat runs cost
no LFS bandwidth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@o4oren
o4oren merged commit f481dc7 into main Aug 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant