Cover synchronous FileEx methods with temp-directory tests - #399
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
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
FileExTestscovering key synchronous file and directory operations (delete, rename, create, enumerate, readability checks). - Added tests for timestamped filenames plus random-filled and sparse file creation.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
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>
Summary
Adds
FileExTestscovering the previously-untested synchronousFileExAPI (only the async variants andCombinePathwere tested). Each test uses an isolated per-test temp directory (created in the constructor, removed inDispose) and does not mutate the sharedFileEx.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, andCreateSparseFile.Impact
FileExsynchronous 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-changesclean.🤖 Generated with Claude Code