Skip to content

Cover synchronous FileEx methods with temp-directory tests#399

Merged
ptr727 merged 4 commits into
developfrom
feature/coverage-improvements
Jul 10, 2026
Merged

Cover synchronous FileEx methods with temp-directory tests#399
ptr727 merged 4 commits into
developfrom
feature/coverage-improvements

Conversation

@ptr727

@ptr727 ptr727 commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

Adds FileExTests covering the previously-untested synchronous FileEx API (only the async variants and CombinePath were tested). Each test uses an isolated per-test temp directory (created in the constructor, removed in Dispose) and does not mutate the shared FileEx.Options, so the class is parallel-safe.

Covers: DeleteFile, DeleteDirectory (+ recursive), RenameFile/RenameFolder (including overwrite, invalid-path, and missing-source paths), DeleteEmptyDirectories, DeleteInsideDirectory, IsFileReadable/IsFileWriteable/IsFileReadWriteable, WaitFileReadable, AreFilesInDirectoryReadable, CreateDirectory, EnumerateDirectory/EnumerateDirectories, TimeStampFileName, CreateRandomFilledFile, and CreateSparseFile.

Impact

  • Overall line coverage 41% -> 60%.
  • FileEx synchronous methods went from ~0.7% to well-covered.

Verification

  • dotnet build - 0 warnings / 0 errors.
  • dotnet test - 183 passed (+31).
  • dotnet format style --verify-no-changes clean.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings July 10, 2026 20:28
@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.89%. Comparing base (7eff371) to head (312f344).

Additional details and impacted files
@@             Coverage Diff              @@
##           develop     #399       +/-   ##
============================================
+ Coverage    46.37%   66.89%   +20.51%     
============================================
  Files           13       13               
  Lines         1160     1160               
  Branches       108      108               
============================================
+ Hits           538      776      +238     
+ Misses         592      338      -254     
- Partials        30       46       +16     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new xUnit test suite to increase coverage of the synchronous FileEx API, using an isolated per-test temp directory and avoiding mutation of shared FileEx.Options.

Changes:

  • Added FileExTests covering key synchronous file and directory operations (delete, rename, create, enumerate, readability checks).
  • Added tests for timestamped filenames plus random-filled and sparse file creation.

Comment thread UtilitiesTests/FileExTests.cs Outdated
Copilot AI review requested due to automatic review settings July 10, 2026 20:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread UtilitiesTests/FileExTests.cs Outdated
Copilot AI review requested due to automatic review settings July 10, 2026 20:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 12 comments.

Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Comment thread UtilitiesTests/FileExTests.cs Outdated
Copilot AI review requested due to automatic review settings July 10, 2026 20:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@ptr727 ptr727 merged commit 3909a89 into develop Jul 10, 2026
12 checks passed
@ptr727 ptr727 deleted the feature/coverage-improvements branch July 10, 2026 20:49
ptr727-codegen Bot pushed a commit to ptr727/LanguageTags that referenced this pull request Jul 15, 2026
Updated
[Microsoft.Extensions.Logging.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.9 to 10.0.10.

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

_Sourced from [Microsoft.Extensions.Logging.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest)
from 18.7.0 to 18.8.1.

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

_Sourced from [Microsoft.NET.Test.Sdk's
releases](https://github.com/microsoft/vstest/releases)._

## 18.8.1

## What's Changed
* Fix protocol negotiation timeout when STJ reflection is disabled
(18.8.1) by @​nohwnd in microsoft/vstest#16281


**Full Changelog**:
microsoft/vstest@v18.8.0...v18.8.1

## 18.8.0

## What's Changed
* Migrate from Newtonsoft.Json to System.Text.Json / Jsonite (merge to
main) by @​nohwnd in microsoft/vstest#15687
- For more detail refer to
https://devblogs.microsoft.com/dotnet/vs-test-is-removing-its-newtonsoft-json-dependency/
* Create source-only filter package by @​Youssef1313 in
microsoft/vstest#15638
* Add ARM64 msdia140.dll support to test platform packages by @​nohwnd
in microsoft/vstest#15692
* Fix mutex cleanup crash on macOS/Linux by @​nohwnd in
microsoft/vstest#15684
* Restrict artifact temp directory permissions on Unix by @​nohwnd in
microsoft/vstest#15729
* Add support for filtering uncategorized tests with TestCategory=None
by @​Evangelink in microsoft/vstest#15727
* Fix SCI binding failure in DTA hosts (main) by @​nohwnd in
microsoft/vstest#15724
* Fix HTML logger parallel file collision by @​nohwnd in
microsoft/vstest#15435
* Improve error message when testhost cannot be found by @​nohwnd in
microsoft/vstest#16053
* Fix HTML logger exception on invalid XML chars in test display names
by @​nohwnd in microsoft/vstest#16051

**Full Changelog**:
microsoft/vstest@v18.7.0...v18.8.0

Commits viewable in [compare
view](microsoft/vstest@v18.7.0...v18.8.1).
</details>

Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet)
from 10.0.300 to 10.0.301.

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

_Sourced from [Microsoft.SourceLink.GitHub's
releases](https://github.com/dotnet/dotnet/releases)._

## 10.0.301

You can build .NET 10.0 from the repository by cloning the release tag
`v10.0.301` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

Commits viewable in [compare
view](dotnet/dotnet@v10.0.300...v10.0.301).
</details>

Updated [ptr727.Utilities](https://github.com/ptr727/Utilities) from
4.0.7 to 4.0.15.

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

_Sourced from [ptr727.Utilities's
releases](https://github.com/ptr727/Utilities/releases)._

## 4.0.15

## What's Changed
* Cover synchronous FileEx methods with temp-directory tests by @​ptr727
in ptr727/Utilities#399
* Promote: cover synchronous FileEx methods by @​ptr727 in
ptr727/Utilities#400
* conformance: per-surface lint architecture (editorconfig action + VS
Code lint tasks) by @​ptr727 in
ptr727/Utilities#401
* lint: EditorConfig rename + process-type VS Code Lint tasks by
@​ptr727 in ptr727/Utilities#402
* conformance: xUnit v3 migration, config hygiene, --pull=always lint
tasks by @​ptr727 in ptr727/Utilities#403
* Promote develop to main: xUnit v3 tests, per-surface lint,
--pull=always by @​ptr727 in
ptr727/Utilities#404
* Bump softprops/action-gh-release from 3.0.1 to 3.0.2 in the
actions-deps group by @​dependabot[bot] in
ptr727/Utilities#406
* Bump the nuget-deps group with 1 update by @​dependabot[bot] in
ptr727/Utilities#408


**Full Changelog**:
ptr727/Utilities@4.0.7...4.0.15

Commits viewable in [compare
view](ptr727/Utilities@4.0.7...4.0.15).
</details>

Updated [System.CommandLine](https://github.com/dotnet/dotnet) from
2.0.9 to 2.0.10.

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

_Sourced from [System.CommandLine's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants