Repository navigation
ci: exclude the self-update version test that this fork inverts - #28
Merged
Nana Mensa-Bonsu (kombonsu) merged 2 commits intoSep 23, 2026
Merged
Conversation
Runner CI has failed on every run, including pushes to main: SelfUpdaterL0.TestSelfUpdateAsync_NoUpdateOnOldVersion dies with "Runner package ... failed after 3 download attempts". Nothing is actually downloaded. The test asserts that a refresh to 2.200.0 is declined for being older than the running runner. This fork pins src/runnerversion to 0.0.1 (publish-image.yml reads it only to tag the image; it is not a build-arg), and that value is compiled into BuildConstants.RunnerPackage.Version. So UpdateNeeded compares 2.200.0 > 0.0.1, returns true, and SelfUpdate takes the download path the test never expected to reach. That path calls HostContext.CreateHttpClientHandler(), and this is the one SelfUpdater test that does not register IHttpClientHandlerFactory, so TestHostContext throws "Singleton instance not registered". The retry loop swallows it three times and reports a download failure, which is why the test dies in ~200ms rather than on the 15-minute timeout. Filter the one broken test rather than skipping SelfUpdaterL0 wholesale — the other three tests in the class pass and cover the download, retry, and hash-validation paths. The Test target now honours an optional TestFilter property so the exclusion and its reason live in build.yml next to the job that needs it. The real fix is to stop pinning src/runnerversion to 0.0.1, which also closes the image-tag drift the repo documents in AGENTS.md; that moves published image tags, so it is not bundled here. Verified: build.yml and dir.proj parse (PyYAML, ElementTree) and actionlint reports no new findings. No local .NET SDK, so the L0 result comes from Runner CI on this branch. Co-authored-by: Cursor <cursoragent@cursor.com>
Copilot started reviewing on behalf of
David Gang (david-gang)
September 23, 2026 13:13
View session
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The filtering is correctly scoped; only a minor documentation correction remains.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Adds targeted CI filtering for a self-update test invalidated by this fork’s pinned runner version, unblocking Runner CI and PR #27.
Changes:
- Adds optional
TestFilterforwarding todotnet test. - Excludes only the incompatible self-update test in CI.
| File | Description |
|---|---|
src/dir.proj |
Conditionally forwards the test filter. |
.github/workflows/build.yml |
Configures the targeted exclusion. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+48
to
+51
| # This fork pins src/runnerversion to 0.0.1 (it only tags the published | ||
| # image), so 2.200.0 compares as newer and the test drives a real | ||
| # self-update download instead. Drop this filter once src/runnerversion | ||
| # tracks the RUNNER_VERSION in images/Dockerfile. |
David Gang (david-gang)
approved these changes
Sep 23, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
Nana Mensa-Bonsu (kombonsu)
deleted the
ci/skip-selfupdater-version-test
branch
September 23, 2026 13:52
Nana Mensa-Bonsu (kombonsu)
added a commit
that referenced
this pull request
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What
Stop
Runner CIfailing on a test that cannot pass in this fork..github/workflows/build.yml: theL0step gainsTestFilter, excludingSelfUpdaterL0.TestSelfUpdateAsync_NoUpdateOnOldVersion.src/dir.proj: theTesttarget passes--filtertodotnet testwhenTestFilteris set, and is unchanged when it is not.Why
Runner CIhas failed on every run in this repo's history, including pushes tomain. The x64 job reportsRunner package '.../actions-runner-linux-x64-2.337.0.tar.gz' failed after 3 download attempts, which reads like a network flake and is not one — the test dies in ~200 ms, and no HTTP request is ever made.The test asserts that a refresh to
2.200.0is declined for being older than the running runner. This fork pinssrc/runnerversionto0.0.1, anddir.projcompiles that intoBuildConstants.RunnerPackage.Version.SelfUpdater.UpdateNeededreturnsserverVersion.CompareTo(runnerVersion) > 0, so2.200.0 > 0.0.1is true andSelfUpdateentersDownloadLatestRunner— the branch the test never expected to reach. That branch callsHostContext.CreateHttpClientHandler(), and this is the onlySelfUpdaterL0test that does not registerIHttpClientHandlerFactory, soTestHostContextthrowsSingleton instance not registered. The retry loop swallows it three times and reports a download failure.The filter targets the one broken test rather than the class: the other three tests in
SelfUpdaterL0pass and cover the download, retry, and hash-validation paths. Putting the exclusion inbuild.ymlkeeps it and its rationale next to the job that needs it, and leaves a plain./dev.sh testbehaving exactly as before.Not in this PR
src/runnerversionto0.0.1. That also closes the image-tag drift this repo documents inAGENTS.md(0.0.1vs2.329.0inimages/Dockerfile), but it changes the tagpublish-image.ymlstamps on published images, so it needs its own change and its own gitops follow-up.Test plan
build.ymlparses (PyYAML); theL0step'senvandrunresolve as intended.src/dir.projparses (ElementTree); theTesttarget contains the conditionalTestFilterArgand bothExeccommands.actionlintonbuild.ymlreports no new findings (its only output is the pre-existingactions/checkout@v3, which ci: upgrade GitHub Actions to Node 24 majors #27 fixes).Runner CIon this branch:build (linux-x64)passed in 1m57s. The L0 log echoes the filter and reportsPassed! - Failed: 0, Passed: 649, Skipped: 0, Total: 649— one test fewer than the 650 collected before, so exactly the intended test was excluded.Refs DEVOPS-204