Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Aug 12, 2025

This PR adds a detailed section to the README explaining the relationship between TestableIO.System.IO.Abstractions and Testably.Abstractions, addressing community questions about the differences and migration path between these two testing libraries.

What's Added

The new "Relationship with Testably.Abstractions" section covers:

  • Compatibility: Both projects use the same interfaces, requiring no production code changes when switching
  • Feature comparison: Testably.Abstractions offers more extensive features including time handling (ITimeSystem), random system abstractions (IRandomSystem), drive management, FileSystemWatcher support, and SafeFileHandle operations
  • Migration guide: Step-by-step instructions for switching from TestableIO.System.IO.Abstractions.TestingHelpers to Testably.Abstractions.Testing
  • Architectural differences: Explanation of design trade-offs between direct entity access vs. restrictive file system operations
  • Testing approach: Cross-platform validation on real file systems (Linux, Windows, macOS)
  • Maintenance status: Current development focus and future plans for both projects

Additionally, the PR includes a "Contributing" section with pull request title guidelines to help contributors format their PR titles consistently using conventional commit prefixes (fix:, feat:, refactor:, docs:, chore:).

Why This Matters

Users often wonder about the relationship between these projects and which one to choose. This documentation provides clear guidance on:

  • When to consider migrating to Testably.Abstractions
  • How the migration process works (spoiler: it's seamless for production code)
  • What additional capabilities they gain with Testably.Abstractions
  • The architectural reasons behind the two different approaches

The documentation makes it clear that both libraries will continue to be maintained, but new feature development is focused on Testably.Abstractions.

Fixes #1325.


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

Copy link
Contributor Author

Copilot AI commented Aug 12, 2025

@vbreuss 👋 This repository doesn't have Copilot instructions. With Copilot instructions, I can understand the repository better, work faster and produce higher quality PRs.

I can generate a .github/copilot-instructions.md file for you automatically. Click here to open a pre-filled issue and assign it to me. I'll write the instructions, and then tag you for review.

@Copilot Copilot AI changed the title [WIP] Relationship with Testably.Abstractions Add comprehensive documentation about relationship with Testably.Abstractions Aug 12, 2025
@Copilot Copilot AI requested a review from vbreuss August 12, 2025 20:01
Copilot finished work on behalf of vbreuss August 12, 2025 20:01
@vbreuss vbreuss changed the title Add comprehensive documentation about relationship with Testably.Abstractions docs: Add comprehensive documentation about relationship with Testably.Abstractions Aug 12, 2025

This comment was marked as outdated.

Copilot finished work on behalf of vbreuss August 12, 2025 20:15
@vbreuss vbreuss marked this pull request as ready for review August 12, 2025 20:19
@vbreuss vbreuss enabled auto-merge (squash) August 12, 2025 20:19
Copy link

@vbreuss vbreuss merged commit a91390a into main Aug 12, 2025
10 checks passed
@vbreuss vbreuss deleted the copilot/fix-1325 branch August 12, 2025 20:22
Copy link

This is addressed in release v22.0.16.

mlapaglia pushed a commit to mlapaglia/OpenAlprWebhookProcessor that referenced this pull request Sep 18, 2025
Updated
[System.IO.Abstractions](https://github.com/TestableIO/System.IO.Abstractions)
from 22.0.15 to 22.0.16.

<details>
<summary>Release notes</summary>

_Sourced from [System.IO.Abstractions's
releases](https://github.com/TestableIO/System.IO.Abstractions/releases)._

## 22.0.16

## What's Changed
* chore(deps): update dependency system.text.json to 9.0.7 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1306
* chore(deps): update dependency awexpect to 2.18.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1307
* chore(deps): update dependency dotnet-sdk to v9.0.302 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1308
* chore(deps): update dependency awexpect to 2.19.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1309
* chore(deps): update dependency awexpect to 2.19.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1310
* chore(deps): update dependency awexpect.testably to 0.11.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1311
* chore(deps): update dependency dotnet-sdk to v9.0.303 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1314
* chore(deps): update dependency awexpect to 2.20.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1315
* chore(deps): update dependency awexpect to 2.21.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1316
* chore(deps): update dependency system.text.json to 9.0.8 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1317
* chore(deps): update dependency dotnet-sdk to v9.0.304 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1318
* chore(deps): update actions/download-artifact action to v5 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1319
* chore(deps): update dependency nunit.analyzers to 4.10.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1320
* chore(deps): update dependency nunit to 4.4.0 by @​renovate[bot] in
TestableIO/System.IO.Abstractions#1321
* chore(deps): update dependency nunit3testadapter to 5.1.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1322
* chore(deps): update actions/checkout action to v5 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1323
* chore(deps): update dependency awexpect to 2.21.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1324
* docs: Add comprehensive documentation about relationship with
Testably.Abstractions by @​Copilot in
TestableIO/System.IO.Abstractions#1326
* docs: Create comprehensive GitHub Copilot instructions for
System.IO.Abstractions development by @​Copilot in
TestableIO/System.IO.Abstractions#1328
* chore(deps): update dependency awexpect to 2.22.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1331
* chore(deps): update actions/setup-dotnet action to v5 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1332
* chore(deps): update dependency awexpect to 2.23.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1334
* chore(deps): update dependency system.text.json to 9.0.9 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1333
* chore(deps): update dependency dotnet-sdk to v9.0.305 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1335
* chore(deps): update dependency awexpect.testably to 0.12.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1336
* fix: Add TypeForwardedTo attribute to forward IFileSystem usage to its
new… by @​borisf94 in
TestableIO/System.IO.Abstractions#1338
* fix: use `dotnet nuget` to push packages by @​vbreuss in
TestableIO/System.IO.Abstractions#1339
* fix: Add TypeForwardedTo attribute to forward other moved interfaces
by @​borisf94 in
TestableIO/System.IO.Abstractions#1340

## New Contributors
* @​Copilot made their first contribution in
TestableIO/System.IO.Abstractions#1326
* @​borisf94 made their first contribution in
TestableIO/System.IO.Abstractions#1338

**Full Changelog**:
TestableIO/System.IO.Abstractions@v22.0.15...v22.0.16

Commits viewable in [compare
view](TestableIO/System.IO.Abstractions@v22.0.15...v22.0.16).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=System.IO.Abstractions&package-manager=nuget&previous-version=22.0.15&new-version=22.0.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
mlapaglia pushed a commit to mlapaglia/OpenAlprWebhookProcessor that referenced this pull request Sep 18, 2025
)

Updated
[System.IO.Abstractions.TestingHelpers](https://github.com/TestableIO/System.IO.Abstractions)
from 22.0.15 to 22.0.16.

<details>
<summary>Release notes</summary>

_Sourced from [System.IO.Abstractions.TestingHelpers's
releases](https://github.com/TestableIO/System.IO.Abstractions/releases)._

## 22.0.16

## What's Changed
* chore(deps): update dependency system.text.json to 9.0.7 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1306
* chore(deps): update dependency awexpect to 2.18.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1307
* chore(deps): update dependency dotnet-sdk to v9.0.302 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1308
* chore(deps): update dependency awexpect to 2.19.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1309
* chore(deps): update dependency awexpect to 2.19.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1310
* chore(deps): update dependency awexpect.testably to 0.11.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1311
* chore(deps): update dependency dotnet-sdk to v9.0.303 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1314
* chore(deps): update dependency awexpect to 2.20.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1315
* chore(deps): update dependency awexpect to 2.21.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1316
* chore(deps): update dependency system.text.json to 9.0.8 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1317
* chore(deps): update dependency dotnet-sdk to v9.0.304 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1318
* chore(deps): update actions/download-artifact action to v5 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1319
* chore(deps): update dependency nunit.analyzers to 4.10.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1320
* chore(deps): update dependency nunit to 4.4.0 by @​renovate[bot] in
TestableIO/System.IO.Abstractions#1321
* chore(deps): update dependency nunit3testadapter to 5.1.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1322
* chore(deps): update actions/checkout action to v5 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1323
* chore(deps): update dependency awexpect to 2.21.1 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1324
* docs: Add comprehensive documentation about relationship with
Testably.Abstractions by @​Copilot in
TestableIO/System.IO.Abstractions#1326
* docs: Create comprehensive GitHub Copilot instructions for
System.IO.Abstractions development by @​Copilot in
TestableIO/System.IO.Abstractions#1328
* chore(deps): update dependency awexpect to 2.22.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1331
* chore(deps): update actions/setup-dotnet action to v5 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1332
* chore(deps): update dependency awexpect to 2.23.0 by @​renovate[bot]
in TestableIO/System.IO.Abstractions#1334
* chore(deps): update dependency system.text.json to 9.0.9 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1333
* chore(deps): update dependency dotnet-sdk to v9.0.305 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1335
* chore(deps): update dependency awexpect.testably to 0.12.0 by
@​renovate[bot] in
TestableIO/System.IO.Abstractions#1336
* fix: Add TypeForwardedTo attribute to forward IFileSystem usage to its
new… by @​borisf94 in
TestableIO/System.IO.Abstractions#1338
* fix: use `dotnet nuget` to push packages by @​vbreuss in
TestableIO/System.IO.Abstractions#1339
* fix: Add TypeForwardedTo attribute to forward other moved interfaces
by @​borisf94 in
TestableIO/System.IO.Abstractions#1340

## New Contributors
* @​Copilot made their first contribution in
TestableIO/System.IO.Abstractions#1326
* @​borisf94 made their first contribution in
TestableIO/System.IO.Abstractions#1338

**Full Changelog**:
TestableIO/System.IO.Abstractions@v22.0.15...v22.0.16

Commits viewable in [compare
view](TestableIO/System.IO.Abstractions@v22.0.15...v22.0.16).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=System.IO.Abstractions.TestingHelpers&package-manager=nuget&previous-version=22.0.15&new-version=22.0.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state: released Issues that are released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Relationship with Testably.Abstractions

2 participants