Skip to content

fix: reject attribute and timestamp setters on read-only SafeFileHandle on Windows - #1102

Merged
vbreuss merged 1 commit into
mainfrom
fix/file-handle-setters-honour-access
Sep 27, 2026
Merged

vbreuss merged 1 commit into
mainfrom
fix/file-handle-setters-honour-access

Conversation

@vbreuss

@vbreuss vbreuss commented Sep 25, 2026

Copy link
Copy Markdown
Member

Windows needs FILE_WRITE_ATTRIBUTES for SetFileInformationByHandle, so the real file system throws UnauthorizedAccessException for a handle opened without FileAccess.Write while the mock silently applied the change.

…dle` on Windows

Windows needs `FILE_WRITE_ATTRIBUTES` for `SetFileInformationByHandle`, so the real file system throws `UnauthorizedAccessException` for a handle opened without `FileAccess.Write` while the mock silently applied the change.
@vbreuss vbreuss self-assigned this Sep 25, 2026
@github-actions

Copy link
Copy Markdown

Test Results

     62 files  ± 0       62 suites  ±0   1h 18m 50s ⏱️ + 2m 50s
 63 256 tests +92   56 395 ✅ +32   6 861 💤 +60  0 ❌ ±0 
147 336 runs  +90  128 287 ✅ +30  19 049 💤 +60  0 ❌ ±0 

Results for commit 1cf8a68. ± Comparison against base commit 015a573.

This pull request removes 60096 and adds 60187 tests. Note that renamed tests count towards both.
  )
)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(07a46bab-dc7a-4c80-8200-460a3681588c)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(1c5f782d-9ffe-4807-9400-c2bd3a10bbe9)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(28a7f2f8-4327-4e6a-bc3e-0f1e2a24828f)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(332884ea-4147-463a-bfe4-8b03073fe23f)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(7b467c46-d364-4d22-92f0-38812ea655f6)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(861085aa-8637-45df-86e6-6af028d3e60e)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(932614a8-ee31-406b-b356-e6b49da4f34d)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(a55169b7-077d-4a8c-82c0-8c8272eb22a1)
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(004c3518-f915-4265-8f8c-8f32ffdc6eea)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(0abbdbbf-1539-48c8-bbb9-5edbe247c8e2)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(3317571a-322c-44d9-8f1f-17b0310c278b)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(34b18969-56af-4ee6-97fb-dde2a2be4fe5)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(387ec186-cdc7-481f-8163-ac5977587df2)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(3d1b49e0-cb41-4cee-b4a3-7a3f92725a8b)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(78f9fd00-da11-4b81-827f-99ee84209f69)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(9bfdc3e3-fe47-4032-a9b0-299e3d8a5eae)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(b6223c8d-0d6d-454d-b789-58c4599563d5)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(c862f588-456d-45c0-8940-c9a64ef1cebb)
…
This pull request removes 6743 skipped tests and adds 6803 skipped tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(07a46bab-dc7a-4c80-8200-460a3681588c)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(1c5f782d-9ffe-4807-9400-c2bd3a10bbe9)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(28a7f2f8-4327-4e6a-bc3e-0f1e2a24828f)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(332884ea-4147-463a-bfe4-8b03073fe23f)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(7b467c46-d364-4d22-92f0-38812ea655f6)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(861085aa-8637-45df-86e6-6af028d3e60e)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(932614a8-ee31-406b-b356-e6b49da4f34d)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(a55169b7-077d-4a8c-82c0-8c8272eb22a1)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(b7dcf365-9a2d-41e7-a3eb-6542f684a49d)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(bb1eb49e-f407-48a1-a31f-93a9fad83883)
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(004c3518-f915-4265-8f8c-8f32ffdc6eea)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(0abbdbbf-1539-48c8-bbb9-5edbe247c8e2)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(3317571a-322c-44d9-8f1f-17b0310c278b)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(34b18969-56af-4ee6-97fb-dde2a2be4fe5)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(387ec186-cdc7-481f-8163-ac5977587df2)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(3d1b49e0-cb41-4cee-b4a3-7a3f92725a8b)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(78f9fd00-da11-4b81-827f-99ee84209f69)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(9bfdc3e3-fe47-4032-a9b0-299e3d8a5eae)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(b6223c8d-0d6d-454d-b789-58c4599563d5)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(c862f588-456d-45c0-8940-c9a64ef1cebb)
…

@sonarqubecloud

Copy link
Copy Markdown

@vbreuss
vbreuss marked this pull request as ready for review September 27, 2026 05:01
Copilot AI lite review requested due to automatic review settings September 27, 2026 05:01
@vbreuss
vbreuss merged commit 5e11d6d into main Sep 27, 2026
16 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vbreuss
vbreuss deleted the fix/file-handle-setters-honour-access branch September 27, 2026 05:01
@github-actions

Copy link
Copy Markdown

This is addressed in release v7.1.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants