Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Aug 12, 2025

This PR creates a comprehensive .github/copilot-instructions.md file that provides GitHub Copilot coding agents with detailed guidance on how to work effectively in the System.IO.Abstractions codebase.

Key Features

Essential Setup & Build Instructions:

  • Exact .NET SDK 9.0.304 installation commands (required by global.json)
  • Validated build commands with measured timing (~70s build, ~30s tests)
  • Critical "NEVER CANCEL" warnings with appropriate timeout recommendations (120+ minutes for builds, 60+ minutes for tests)
  • Code formatting requirements using dotnet format with validation steps

Project Structure Guidance:

  • Clear explanation of the 4 main projects: abstractions, wrappers, testing helpers, and multiple test projects
  • Multiple target framework support (net472, netstandard2.0/2.1, net6.0/8.0/9.0)
  • Important directory structure and build artifact locations

Validation Scenarios:

  • Complete manual validation checklist for verifying changes
  • Working code example demonstrating both MockFileSystem and real FileSystem usage:
var mockFileSystem = new MockFileSystem();
mockFileSystem.File.WriteAllText(@"C:\test.txt", "Test content");
var content = mockFileSystem.File.ReadAllText(@"C:\test.txt");

var realFileSystem = new FileSystem();
// ... real filesystem operations

Pull Request Guidelines:

  • Conventional commit prefixes for communicating intent to library consumers
  • Standard prefixes: fix:, feat:, refactor:, docs:, chore:

Performance & Timing:

  • All commands validated with actual execution times during development
  • Explicit timeout recommendations based on measured performance
  • Clear warnings about long-running operations to prevent premature cancellation

Troubleshooting Section:

  • Common issues (GitVersion errors, shallow clone limitations, platform-specific test failures)
  • Solutions for SDK installation problems
  • Alternative approaches when NUKE build script fails

The instructions follow an imperative tone ("Run this command", "Do not do this") and prioritize practical, validated commands that developers can copy-paste and have work immediately. Every command and timing recommendation was thoroughly tested during the creation of these instructions.

Fixes #1327.


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

@Copilot Copilot AI changed the title [WIP] ✨Set up Copilot instructions docs: Create comprehensive GitHub Copilot instructions for System.IO.Abstractions development Aug 12, 2025
@Copilot Copilot AI requested a review from vbreuss August 12, 2025 20:07
Copilot finished work on behalf of vbreuss August 12, 2025 20:07
@vbreuss
Copy link
Member

vbreuss commented Aug 12, 2025

@copilot add a section to use a correct pull request title:

Pull Request Title

To communicate intent to the consumers of your library, the title of the pull requests is prefixed with one of the following elements:

  • fix:: patches a bug
  • feat:: introduces a new feature
  • refactor: improves internal structure without changing the observable behavior
  • docs: updates documentation or XML comments
  • chore: updates to dependencies, build pipelines, ...

Copy link
Contributor Author

Copilot AI commented Aug 12, 2025

@copilot add a section to use a correct pull request title:

Pull Request Title

To communicate intent to the consumers of your library, the title of the pull requests is prefixed with one of the ...

Added the Pull Request Title guidelines section with conventional commit prefixes as requested. The section includes all the specified prefixes (fix:, feat:, refactor:, docs:, chore:) to help communicate intent to library consumers. Commit d300d7d.

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

Copy link

Test Results

   22 files  ±0     22 suites  ±0   10s ⏱️ ±0s
1 139 tests ±0  1 138 ✅ ±0    1 💤 ±0  0 ❌ ±0 
7 610 runs  ±0  7 048 ✅ ±0  562 💤 ±0  0 ❌ ±0 

Results for commit d300d7d. ± Comparison against base commit 2fdecff.

@vbreuss vbreuss disabled auto-merge August 12, 2025 20:34
@vbreuss vbreuss merged commit 4db047c into main Aug 12, 2025
11 checks passed
@vbreuss vbreuss deleted the copilot/fix-1327 branch August 12, 2025 20:34
Copy link

This is addressed in release v22.0.16.

@github-actions github-actions bot added the state: released Issues that are released label Sep 14, 2025
microsoft-github-policy-service bot pushed a commit to Azure/template-reference-generator that referenced this pull request Sep 14, 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](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.

✨Set up Copilot instructions
2 participants