Skip to content

Conversation

vbreuss
Copy link
Member

@vbreuss vbreuss commented Sep 6, 2025

This PR fixes a bug where drives in the mock file system were not properly initialized with their root directory containers, causing issues when trying to enumerate files on newly created drives. The fix ensures that when a drive is created, its corresponding root directory container is also created in the storage system.

Key changes:

  • Initializes the main drive with a root directory container during storage construction
  • Updates the GetOrAddDrive method to create root directory containers for new drives
  • Add tests to verify that drives can be enumerated without errors

@vbreuss vbreuss self-assigned this Sep 6, 2025
@vbreuss vbreuss added the bug Something isn't working label Sep 6, 2025
@Copilot Copilot AI review requested due to automatic review settings September 6, 2025 16:22
Copy link

@Copilot 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 fixes a bug where drives in the mock file system were not properly initialized with their root directory containers, causing issues when trying to enumerate files on newly created drives. The fix ensures that when a drive is created, its corresponding root directory container is also created in the storage system.

  • Initializes the main drive with a root directory container during storage construction
  • Updates the GetOrAddDrive method to create root directory containers for new drives
  • Adds a test to verify that drives can be enumerated without errors

Reviewed Changes

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

File Description
Tests/Testably.Abstractions.Testing.Tests/MockFileSystemTests.cs Adds test to verify drive enumeration works correctly with root directories
Source/Testably.Abstractions.Testing/Storage/InMemoryStorage.cs Initializes main drive with root container and ensures new drives get root containers

@vbreuss vbreuss enabled auto-merge (squash) September 6, 2025 16:25
Copy link

github-actions bot commented Sep 6, 2025

Test Results

    37 files  ± 0      37 suites  ±0   21m 5s ⏱️ +17s
44 110 tests + 1  41 683 ✅  - 1  2 425 💤 ±0  2 ❌ +2 
85 728 runs  +14  76 733 ✅ +6  8 987 💤 ±0  8 ❌ +8 

For more details on these failures, see this check.

Results for commit a8653aa. ± Comparison against base commit c6a2782.

This pull request removes 36185 and adds 36186 tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2aa12e0c-9652-43b3-91fd-47bdb961dc6c")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path383f6ee4-e2ab-408f-aa69-64c8c591a2ae")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path57799261-7fd4-4862-81ba-a9523697dd3e")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path93bb1e3d-95bb-44e3-a6a2-5e9e18ccdf49")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathbfac460b-6850-400f-b36d-f61d4db5b889")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathf4e6133c-0e82-4518-892c-3549cc7082c7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathfcbcadf9-1b21-4d58-abd5-d34d8c776016")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path47e31af3-e431-423b-862c-bd0f88ea6ba1")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path9a311a2a-4419-4288-b00a-d823eb7f07ec")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathacbc30ab-827b-4fff-a0f0-96743dbc79c0")
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path0e56841b-46fe-4c27-bb57-620b8731d8a8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path11185497-50cd-4e40-8f6f-b5cc3ede3887")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path4acecb86-81bf-44cd-851a-f0c9f29acfba")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "patha216f7dd-44c4-4f98-a6b8-e7a3a239880d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathc1f680ea-c573-47c5-99b4-a0b367bd9947")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathc9a20297-34ce-42b0-a076-e412730aa09f")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathe8f9ef31-22b2-4cfe-b9db-f663f03d1f57")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path07b72056-c41f-401c-aa54-d92d858882af")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path21195652-4723-4855-b13b-3c813f9e21c8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2a114393-6830-4e2b-8cf4-23d6a5e78b97")
…
This pull request removes 1784 skipped tests and adds 1784 skipped tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path2aa12e0c-9652-43b3-91fd-47bdb961dc6c")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path93bb1e3d-95bb-44e3-a6a2-5e9e18ccdf49")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathbfac460b-6850-400f-b36d-f61d4db5b889")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathf4e6133c-0e82-4518-892c-3549cc7082c7")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathacbc30ab-827b-4fff-a0f0-96743dbc79c0")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathae0db3e6-ec06-4ae5-ba56-d9d4de4a1e59")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathd9102a31-5626-4bf3-b147-a66662e6416d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathf87628ec-63d3-4604-8fe7-6d361df096e1")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path197e3f8a-167e-483b-ba9a-f7b4938cc9ef")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path1e72e51a-326f-47ca-a15f-2487f1c6bca0")
…
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path0e56841b-46fe-4c27-bb57-620b8731d8a8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path4acecb86-81bf-44cd-851a-f0c9f29acfba")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "patha216f7dd-44c4-4f98-a6b8-e7a3a239880d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathc1f680ea-c573-47c5-99b4-a0b367bd9947")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path07b72056-c41f-401c-aa54-d92d858882af")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path21195652-4723-4855-b13b-3c813f9e21c8")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path9e1e2587-e765-4d0c-86f1-9e47623a7968")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathcc7be57e-7f3b-4620-8085-f548e14dfa9e")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path5e3460f1-ff60-4f48-a827-c5b4f389a517")
Testably.Abstractions.Testing.Tests.FileSystem.FileMockTests ‑ GetUnixFileMode_SafeFileHandle_ShouldThrowPlatformNotSupportedExceptionOnWindows(path: "path75e1a087-fbd8-4dc0-b237-0699982af887")
…

♻️ This comment has been updated with latest results.

@vbreuss vbreuss disabled auto-merge September 6, 2025 17:01
@vbreuss vbreuss force-pushed the topic/initialize-drives-with-root-directory branch from 9a99ea4 to dbe1807 Compare September 6, 2025 17:21
@vbreuss vbreuss enabled auto-merge (squash) September 6, 2025 20:04
Copy link

sonarqubecloud bot commented Sep 6, 2025

@vbreuss vbreuss merged commit f66fee3 into main Sep 6, 2025
13 checks passed
@vbreuss vbreuss deleted the topic/initialize-drives-with-root-directory branch September 6, 2025 20:28
Copy link

github-actions bot commented Sep 6, 2025

This is addressed in release v4.3.3.

This was referenced Sep 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working state: released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug: iterate over all drives and iterate over all files throws error if no file is create in C?
1 participant