tag:github.com,2008:https://github.com/Testably/Testably.Abstractions/releases Tags from Testably.Abstractions 2026-02-21T16:19:08Z tag:github.com,2008:Repository/537873498/v5.3.0 2026-02-23T06:57:14Z v5.3.0 <p>chore: bump core version to 10.1.0 (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/946">#946</a>)</p> <p>Updates centrally managed package versions to consume the stable `10.1.0` releases of the core Testably packages (moving off the prior RC), aligning dependency resolution across the repo (e.g., examples and helper projects that reference the NuGet packages).</p> github-actions tag:github.com,2008:Repository/537873498/core/v10.1.0 2026-02-21T10:39:42Z core/v10.1.0: fix: `Stopwatch` implementation on pre-release version 10.1.0-rc1 (#944) <p>fix: `Stopwatch` implementation on pre-release version 10.1.0-rc1 (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/944">#944</a>)</p> <p>This PR completes the release workflow for core library version 10.1.0-rc1 by updating package versions and restoring the build pipeline to build all projects (both core and main).</p> <p>### Key Changes: <br />- Bumps core package versions from 10.0.0 to 10.1.0-rc1 in Directory.Packages.props <br />- Resets BuildScope from CoreOnly to Default to enable building all projects again <br />- Simplifies TestHelpers project references by removing unused Testably.Abstractions dependency</p> vbreuss tag:github.com,2008:Repository/537873498/v5.3.0-rc1 2026-02-20T16:13:48Z v5.3.0-rc1 vbreuss tag:github.com,2008:Repository/537873498/core/v10.1.0-rc1 2026-02-20T15:36:16Z core/v10.1.0-rc1: feat: add `Stopwatch` support to `ITimeSystem` (#943) <p>feat: add `Stopwatch` support to `ITimeSystem` (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/943">#943</a>)</p> <p>Adds a `System.Diagnostics.Stopwatch` abstraction to `ITimeSystem`, enabling both `RealTimeSystem` and `MockTimeSystem` consumers to create/use stopwatches through a testable interface.</p> <p>### Key Changes: <br />- Introduces `IStopwatch` and `IStopwatchFactory` and wires them into `ITimeSystem`, `RealTimeSystem`, and `MockTimeSystem`. <br />- Implements real wrappers (`StopwatchFactory`/`StopwatchWrapper`) and mock implementations (`StopwatchFactoryMock`/`StopwatchMock`), plus parity and unit tests. <br />- Adds a feature flag for `Stopwatch.GetElapsedTime` (.NET 8 or higher) <br />- Adjusts build/project configuration (conditional PackageReference vs ProjectReference for the Interface project, pipeline + versioning tweaks).</p> vbreuss tag:github.com,2008:Repository/537873498/v5.2.0 2026-02-20T05:25:54Z v5.2.0 <p>feat: support async wait handlers (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/942">#942</a>)</p> <p>This pull request adds async wait handler support to the `IAwaitableCallback&lt;TValue&gt;` interface by introducing a new `WaitAsync` method. The changes enable asynchronous waiting for callbacks using modern async/await patterns with cancellation token support.</p> <p>### Key Changes: <br />- Added `WaitAsync` method to `IAwaitableCallback&lt;TValue&gt;` for asynchronous waiting with cancellation support <br />- Refactored the interface to change the generic constraint from `out TValue` (covariant) to `TValue` (invariant) to support returning arrays <br />- Implemented channel-based async infrastructure using `System.Threading.Channels` for efficient value buffering <br />- Added comprehensive test coverage for the new WaitAsync functionality <br />- Updated API surface files across all target frameworks (.NET 6.0, 8.0, 9.0, 10.0, netstandard2.0, netstandard2.1)</p> github-actions tag:github.com,2008:Repository/537873498/v5.1.2 2026-02-19T19:12:57Z v5.1.2: fix: fixed removing current directory not throwing ioexception (#940) <p>fix: fixed removing current directory not throwing ioexception (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/940">#940</a>)</p> <p>Aligns `MockFileSystem` behavior with Windows by preventing delete/move operations on the current working directory (or its parents) and throwing the same `IOException` patterns observed on the real file system.</p> <p>### Key Changes: <br />- Added Windows-specific tests asserting `IOException` when deleting the current directory (and nested current directory) via both `Directory` and `DirectoryInfo`. <br />- Added Windows-specific tests asserting `IOException` when moving the current directory (and when the current directory is nested under the moved directory) via both `Directory` and `DirectoryInfo`. <br />- Implemented Windows-only “current directory handle” validations in `InMemoryStorage` and introduced new exception factory helpers.</p> <p>---</p> <p>* fix: fixed removing current directory not throwing ioexception</p> <p>* refactor: removed unnecessary path trimming</p> <p>* test: moved tests from RemoveCurrentDirectoryTests and added parent dir deletion</p> <p>* test: fixed move test moving directory into itself</p> <p>* test: fixed delete tests because delete wasn't recursive</p> <p>* fix: fixed handle checks in InMemoryStorage</p> <p>* test: fixed test cases for current dir modification</p> <p>* test: applied suggestion of OnlyIf to current dir modification tests</p> <p>* fix: fixed handle check for modifiying directories similar to the current directory</p> <p>* fix: fixed trailing separator in file sharing exception</p> pw-sgr tag:github.com,2008:Repository/537873498/v5.1.1 2026-02-15T07:43:41Z v5.1.1 <p>fix: dot file entries not having hidden attribute on mac mock (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/937">#937</a>)</p> <p>Adds coverage and implementation changes to ensure dot-prefixed entries are treated as `Hidden` on macOS (and other non-Windows platforms) in the in-memory file system.</p> <p>* fix: fixed dot file system entries not having hidden attribute when mocking mac</p> <p>* test: moved Attributes_WhenDotFile_ShouldHaveHiddenFlag from FileVersionInfo to FileSystemInfo</p> <p>* test: renamed InMemoryContainerTests.AdjustAttributes_LeadingDot_ShouldBeHiddenOnLinux to AdjustAttributes_LeadingDot_ShouldBeHiddenOnUnix and adjusted expectation</p> github-actions tag:github.com,2008:Repository/537873498/v5.1.0 2026-02-02T05:56:34Z v5.1.0 <p>feat: add triggered notification handler for `IFileSystemWatcher` (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/931">#931</a>)</p> <p>This PR adds a new notification handler for `IFileSystemWatcher` that allows tests to be notified when file system changes are actually triggered by a watcher. This complements the existing `Notify` handler which fires on all file system changes.</p> <p>### Key Changes: <br />- Introduces `IWatcherTriggeredHandler` interface with `OnTriggered` method <br />- Adds `Watcher` property to `MockFileSystem` exposing this handler <br />- Updates API test expectations across all target frameworks</p> github-actions tag:github.com,2008:Repository/537873498/v5.0.3 2026-01-21T17:18:45Z v5.0.3 <p>refactor: fix or ignore sonar issues (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/922">#922</a>)</p> <p>This PR addresses SonarCloud issues by refactoring code to eliminate static analysis warnings. The changes focus on improving code quality without altering functionality.</p> <p>### Key Changes: <br />- Removed redundant multiplication by zero in timer configurations <br />- Replaced `GetCustomAttribute&lt;T&gt;()` with more efficient `IsDefined()` calls <br />- Added pragma directives to suppress unavoidable SonarCloud warnings for complexity and parameter count</p> github-actions tag:github.com,2008:Repository/537873498/v5.0.2 2026-01-10T08:46:12Z v5.0.2 <p>fix: set UnixFileMode when creating new mock file stream (<a class="issue-link js-issue-link" href="https://github.com/Testably/Testably.Abstractions/pull/916">#916</a>)</p> <p>This PR sets `UnixFileMode` when creating a new mock file stream via `MockFileSystem.FileStream.New(string, FileStreamOptions)`.</p> <p>* Adds `UnixFileMode` argument to `FileStreamMock` constructors <br />* Sets `UnixFileMode` if valid `FileMode` is used <br />* Throws `ArgumentException` if invalid `FileMode` is used <br />* Passes `FileStreamOptions.UnixCreateMode` in `FileStreamFactoryMock` to `FileStreamMock` <br />* Adds new CallStatistics overload to handle an additional parameter <br />* Adds tests</p> github-actions