tag:github.com,2008:https://github.com/Testably/Testably.Abstractions/releasesTags from Testably.Abstractions2026-02-21T16:19:08Ztag:github.com,2008:Repository/537873498/v5.3.02026-02-23T06:57:14Zv5.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-actionstag:github.com,2008:Repository/537873498/core/v10.1.02026-02-21T10:39:42Zcore/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>vbreusstag:github.com,2008:Repository/537873498/v5.3.0-rc12026-02-20T16:13:48Zv5.3.0-rc1vbreusstag:github.com,2008:Repository/537873498/core/v10.1.0-rc12026-02-20T15:36:16Zcore/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>vbreusstag:github.com,2008:Repository/537873498/v5.2.02026-02-20T05:25:54Zv5.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<TValue>` 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<TValue>` 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-actionstag:github.com,2008:Repository/537873498/v5.1.22026-02-19T19:12:57Zv5.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-sgrtag:github.com,2008:Repository/537873498/v5.1.12026-02-15T07:43:41Zv5.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-actionstag:github.com,2008:Repository/537873498/v5.1.02026-02-02T05:56:34Zv5.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-actionstag:github.com,2008:Repository/537873498/v5.0.32026-01-21T17:18:45Zv5.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<T>()` with more efficient `IsDefined()` calls
<br />- Added pragma directives to suppress unavoidable SonarCloud warnings for complexity and parameter count</p>github-actionstag:github.com,2008:Repository/537873498/v5.0.22026-01-10T08:46:12Zv5.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