Summary
Several UtilitiesCS.Test file-system wrapper tests locate the repository root at run time and open or enumerate the real TaskMaster.sln. This is the same defect class that #931 (PR #939) fixed in FileInfoWrapper_Tests: the outcome of a unit test depends on repository layout and on whether another process holds the solution file open.
Environment
- OS/version: Windows 11 (local) and windows-latest (CI)
- Python version: n/a (C# / MSTest, .NET Framework 4.8)
- Command/flags used:
Invoke-MSTestWithCoverage.ps1 (parallel run, Workers=0, Scope=ClassLevel)
- Data source or fixture: the repository's own
TaskMaster.sln
Steps to Reproduce
- Hold
TaskMaster.sln open with a share mode that excludes readers (for example a resident MSBuild node or an IDE).
- Run
UtilitiesCS.Test with the standard coverage route.
- Alternatively, run the test assembly from a location whose ancestors contain no
TaskMaster.sln.
Expected Behavior
The wrapper tests verify wrapper delegation through test-owned fixtures or mocks, independent of repository layout and of other processes.
Actual Behavior
UtilitiesCS.Test/HelperClasses/PhysicalFileSystemAdapters_Tests.cs walks up to the repository root (line ~361), builds a FileInfo over TaskMaster.sln (line ~376), asserts it is enumerated (lines 110-129), and swallows IOException in places, which hides the contention instead of removing it.
UtilitiesCS.Test/HelperClasses/DirectoryInfoWrapper_Tests.cs asserts that TaskMaster.sln is enumerated from the repository root (lines 60 and 79, root walk at line ~381).
Logs / Screenshots
Impact / Severity
Source
From: docs/features/potential/2026-09-29-filesystem-wrapper-tests-open-repository-solution-file.md
Summary
Several UtilitiesCS.Test file-system wrapper tests locate the repository root at run time and open or enumerate the real
TaskMaster.sln. This is the same defect class that #931 (PR #939) fixed inFileInfoWrapper_Tests: the outcome of a unit test depends on repository layout and on whether another process holds the solution file open.Environment
Invoke-MSTestWithCoverage.ps1(parallel run, Workers=0, Scope=ClassLevel)TaskMaster.slnSteps to Reproduce
TaskMaster.slnopen with a share mode that excludes readers (for example a resident MSBuild node or an IDE).UtilitiesCS.Testwith the standard coverage route.TaskMaster.sln.Expected Behavior
The wrapper tests verify wrapper delegation through test-owned fixtures or mocks, independent of repository layout and of other processes.
Actual Behavior
UtilitiesCS.Test/HelperClasses/PhysicalFileSystemAdapters_Tests.cswalks up to the repository root (line ~361), builds aFileInfooverTaskMaster.sln(line ~376), asserts it is enumerated (lines 110-129), and swallowsIOExceptionin places, which hides the contention instead of removing it.UtilitiesCS.Test/HelperClasses/DirectoryInfoWrapper_Tests.csasserts thatTaskMaster.slnis enumerated from the repository root (lines 60 and 79, root walk at line ~381).Logs / Screenshots
Impact / Severity
Source
From: docs/features/potential/2026-09-29-filesystem-wrapper-tests-open-repository-solution-file.md