Skip to content

Conversation

@vbreuss
Copy link
Member

@vbreuss vbreuss commented Aug 10, 2025

This PR adds the ability to configure a custom ITimeSystem when initializing a MockFileSystem, enhancing the testing capabilities by allowing developers to control time behavior in their tests.

  • Adds a new UseTimeSystem() method to MockFileSystemOptions for configuring custom time systems
  • Updates the MockFileSystem constructor to use the provided time system instead of always defaulting to current time

@vbreuss vbreuss self-assigned this Aug 10, 2025
Copilot AI review requested due to automatic review settings August 10, 2025 04:36
@vbreuss vbreuss added the enhancement New feature or request label Aug 10, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds the ability to configure a custom ITimeSystem when initializing a MockFileSystem, enhancing the testing capabilities by allowing developers to control time behavior in their tests.

  • Adds a new UseTimeSystem() method to MockFileSystemOptions for configuring custom time systems
  • Updates the MockFileSystem constructor to use the provided time system instead of always defaulting to current time
  • Includes comprehensive test coverage to verify the new functionality works correctly

Reviewed Changes

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

File Description
Source/Testably.Abstractions.Testing/MockFileSystem.cs Adds UseTimeSystem() configuration method and updates constructor to use provided time system
Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs Adds test coverage for the new time system configuration feature and updates existing test parameter naming

@sonarqubecloud
Copy link

@github-actions
Copy link

Test Results

    37 files  ± 0      37 suites  ±0   15m 48s ⏱️ -11s
43 509 tests +10  41 130 ✅ +10  2 379 💤 ±0  0 ❌ ±0 
84 747 runs  + 7  75 957 ✅ + 7  8 790 💤 ±0  0 ❌ ±0 

Results for commit 4a46b39. ± Comparison against base commit 92988f9.

This pull request removes 35631 and adds 35641 tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2894c2f2-507d-4d55-8930-d7bfe19bd55d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path3429cf60-c20f-4641-a5e7-d5c40b0f84b7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path38db933d-7e59-49ad-8da9-f574348628c1")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path3b3af9ca-f33b-45e4-9e47-f4953f8290f5")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path7792eff0-7a25-4801-be42-e87c3224abde")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathd3bd24e5-e99b-422e-b38f-0287c7873de0")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathfeea67d0-712a-413b-bd7c-09c38792f657")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2278fb3f-399e-488d-ab18-58fc6f7372cf")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path28812713-0c8d-4e85-8709-06308a16ae34")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path3c1bd70f-5746-40a1-8087-ddcdccbd7545")
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path00b62cdb-bc63-4e14-ba3c-10ee9752f10b")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path20f68072-e7fb-4800-abda-286035bb9c82")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path4bcaed53-2c23-4791-aad6-35907bbd710d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "patha3c20b97-d0b1-4978-9f59-4c6979a893f2")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "patha3c75faa-e604-42f8-9f09-db5f3e2c2bdc")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathcc80614e-6ccc-4a5e-b308-bdeb73bb94f6")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathdc2c5105-d3b7-4954-b0ed-2fad8bddbfb7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path077ea307-593d-4604-bd19-38394a9967d8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path182c2605-924f-4531-b247-4b0495aa28f7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path1f5c32a8-764d-40d1-889c-2ef6d7167cad")
…
This pull request removes 1754 skipped tests and adds 1754 skipped tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2894c2f2-507d-4d55-8930-d7bfe19bd55d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path38db933d-7e59-49ad-8da9-f574348628c1")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path3b3af9ca-f33b-45e4-9e47-f4953f8290f5")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathd3bd24e5-e99b-422e-b38f-0287c7873de0")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2278fb3f-399e-488d-ab18-58fc6f7372cf")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path28812713-0c8d-4e85-8709-06308a16ae34")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path5f390b4b-2ee4-489e-9fd5-138aff9652f0")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathc867594b-aabe-44d3-bc14-d172ee8bded2")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path3b9e09f9-28b1-427d-ab87-ee59449334e1")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path81f5a910-efad-4013-a43d-9802f5f14562")
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path00b62cdb-bc63-4e14-ba3c-10ee9752f10b")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path20f68072-e7fb-4800-abda-286035bb9c82")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "patha3c20b97-d0b1-4978-9f59-4c6979a893f2")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathdc2c5105-d3b7-4954-b0ed-2fad8bddbfb7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path077ea307-593d-4604-bd19-38394a9967d8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path182c2605-924f-4531-b247-4b0495aa28f7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path1f5c32a8-764d-40d1-889c-2ef6d7167cad")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path914a11ee-2cf8-43af-9d72-5994b8d38796")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path461a426c-de0b-4751-8130-9fbd8fb2ec7b")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path6c1b80da-78af-4b59-932b-93fb2a09a7c8")
…

@vbreuss vbreuss merged commit f1dd732 into main Aug 10, 2025
14 of 15 checks passed
@vbreuss vbreuss deleted the topic/support-setting-the-used-timesystem branch August 10, 2025 05:13
@github-actions
Copy link

This is addressed in release v4.3.0.

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

Labels

enhancement New feature or request state: released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FileSystem] Bug: Using IFile.Write... does not update IFileInfo.LastWriteTimeUtc

2 participants