Remove ExtraCoverage category — run all functional tests in CI#1997
Draft
tyrielv wants to merge 2 commits into
Draft
Remove ExtraCoverage category — run all functional tests in CI#1997tyrielv wants to merge 2 commits into
tyrielv wants to merge 2 commits into
Conversation
1e0c363 to
4bad6ac
Compare
The ExtraCoverage category excluded ~110 functional test methods (19 test classes) from the default CI run. These tests cover critical functionality -- mount edge cases, dehydrate, repair, shared cache, disk layout upgrades, junctions -- but were never validated in CI. Remove ExtraCoverage filtering and fix the atrophied tests so they run in CI. Introduce SkipInCIAttribute with a required reason string for tests that still need follow-up work. Infrastructure: - Remove ExtraCoverage constant, --extra-only flag, and all 19 Category annotations - Download FastFetch artifact in functional-tests.yaml - Fix NUnitRunner slice grouping to include MultiEnlistmentTests - Increase test slices from 10 to 12 - Add resilient teardown: UnmountAndDeleteAll catches stuck unmounts and kills the GVFS.Mount process as a fallback Fixed tests: - FastFetchTests: artifact now available in CI - ConfigVerbTests: Order-dependent tests stay in same slice - RepairTests: remove stale mount-fail assertions (GVFS now tolerates corrupt index) - MountTests: capture stderr, use try/finally for metadata restore, check exit code only where errors go to GVFS log - FastFetchTests git output assertion: case-insensitive match Removed tests: - UpgradeReminderTests: old NuGet upgrade system removed - SharedCacheUpgradeTests: zero test methods (dead code) - MountMergesLocalPrePostHooksConfig: mount no longer merges hooks - ProjFS_CMDHangNoneActiveInstance: obsolete ProjFS regression test - MountingARepositoryThatRequiresPlaceholderUpdatesWorks: placeholder updates moved out of mount Assisted-by: Claude Opus 4.6 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
13757bf to
7d1e72c
Compare
The repair job for BlobSizes.sql was unable to delete the corrupt database file on Windows because SQLite connection pooling kept the file handle open after the integrity check in HasIssue(). Two fixes: 1. SqliteDatabase.HasIssue: Use Pooling=False for integrity check connections so file handles are released immediately on dispose, allowing repair to delete the corrupt file. 2. BlobSizes.Initialize: Tolerate corrupt databases by catching SQLITE_CORRUPT and SQLITE_NOTADB errors, deleting the corrupt file (and WAL/SHM sidecars), and recreating a fresh database. This provides defense-in-depth since BlobSizes is a cache. Also remove SkipInCI from RepairFixesCorruptBlobSizesDatabase and add an assertion that repair actually cleans up the corrupt folder. Assisted-by: Claude Opus 4.6 Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
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.
Summary
The
ExtraCoveragecategory excluded ~110 functional test methods (19 test classes) from the default test run and CI. These tests cover critical functionality - mount edge cases, dehydrate, repair, shared cache, disk layout upgrades, junctions, and more - but were never validated in CI, only via the--extra-onlyflag.This PR removes ExtraCoverage filtering, fixes atrophied tests, and introduces infrastructure to track tests that still need work.
Infrastructure changes
ExtraCoverageconstant,--extra-onlyflag handling, and all[Category(Categories.ExtraCoverage)]annotations (19 usages)functional-tests.yamlso FastFetch tests find the exeMultiEnlistmentTestsalongsideEnlistmentPerFixture, preventing Order-dependent tests from splitting across slicesSkipInCIAttributewith a required reason string, replacing the bareNeedsReactionInCIcategory. Makes it clear why each test is skippedUnmountAndDeleteAllcatchesTimeoutExceptionfrom stuck unmounts and kills the GVFS.Mount process as a fallback, preventing a single hung unmount from eating 5 minutes of CI timeAuthoringTests.mddocumentationFixed tests (now running in CI)
Removed tests
Still SkipInCI (follow-up work)
Timing impact
No measurable CI time increase. The additional ~80 tests that now run fit within the 12-slice parallelism. Baseline slowest slice was ~8.7 min; with the changes it's comparable.