From bd81c6beb2697364db59ed1485e3ae2d13a30374 Mon Sep 17 00:00:00 2001 From: "p.wintrich" Date: Thu, 12 Feb 2026 15:25:44 +0100 Subject: [PATCH 1/3] fix: fixed dot file system entries not having hidden attribute when mocking mac --- .../Storage/InMemoryContainer.cs | 4 +-- .../FileSystem/File/GetAttributesTests.cs | 15 ++++++++++ .../FileSystem/FileVersionInfo/Tests.cs | 28 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/Source/Testably.Abstractions.Testing/Storage/InMemoryContainer.cs b/Source/Testably.Abstractions.Testing/Storage/InMemoryContainer.cs index 21ca4d1e7..6d4d881ce 100644 --- a/Source/Testably.Abstractions.Testing/Storage/InMemoryContainer.cs +++ b/Source/Testably.Abstractions.Testing/Storage/InMemoryContainer.cs @@ -312,8 +312,8 @@ public override string ToString() internal FileAttributes AdjustAttributes(FileAttributes attributes) { - if (_fileSystem.Execute.IsLinux && - _fileSystem.Execute.Path.GetFileName(_location.FullPath).StartsWith('.')) + if ((_fileSystem.Execute.IsLinux || _fileSystem.Execute.IsMac) + && _fileSystem.Execute.Path.GetFileName(_location.FullPath).StartsWith('.')) { attributes |= FileAttributes.Hidden; } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/File/GetAttributesTests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/File/GetAttributesTests.cs index c35c2d424..cbc142688 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/File/GetAttributesTests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/File/GetAttributesTests.cs @@ -18,4 +18,19 @@ public async Task GetAttributes_ShouldReturnAttributes( await That(result).IsEqualTo(attributes); } + + [Fact] + public async Task GetAttributes_WhenDotEntry_ShouldHaveHiddenFlag() + { + Skip.If(Test.RunsOnWindows); + + const string path = ".env"; + FileAttributes result; + + FileSystem.File.WriteAllText(path, null); + + result = FileSystem.File.GetAttributes(path); + + await That(result).HasFlag(FileAttributes.Hidden); + } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs index e54a49886..dbc9504fa 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs @@ -1,3 +1,5 @@ +using System.IO; + namespace Testably.Abstractions.Tests.FileSystem.FileVersionInfo; [FileSystemTests] @@ -15,4 +17,30 @@ public async Task ToString_ShouldReturnProvidedPath(string fileName) await That(result).Contains(fullPath); } + + [Theory] + [AutoData] + public async Task Attributes_WhenDotFile_ShouldHaveHiddenFlag(bool isFile) + { + Skip.If(Test.RunsOnWindows); + + const string path = ".env"; + + FileAttributes result; + + if (isFile) + { + FileSystem.File.WriteAllText(path, null); + + result = FileSystem.FileInfo.New(path).Attributes; + } + else + { + FileSystem.Directory.CreateDirectory(path); + + result = FileSystem.DirectoryInfo.New(path).Attributes; + } + + await That(result).HasFlag(FileAttributes.Hidden); + } } From 22d9d0a9fe00384781a3a1234fe48ed3e0d328ed Mon Sep 17 00:00:00 2001 From: "p.wintrich" Date: Thu, 12 Feb 2026 15:42:48 +0100 Subject: [PATCH 2/3] test: moved Attributes_WhenDotFile_ShouldHaveHiddenFlag from FileVersionInfo to FileSystemInfo --- .../FileSystem/FileSystemInfo/Tests.cs | 26 +++++++++++++++++ .../FileSystem/FileVersionInfo/Tests.cs | 28 ------------------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/Tests.cs index 26e4cfdc5..50318b5ab 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileSystemInfo/Tests.cs @@ -156,4 +156,30 @@ public async Task SetAttributes_ShouldOnlyWork_OnWindows(FileAttributes attribut await That(result).IsEqualTo(FileAttributes.Normal); } } + + [Theory] + [AutoData] + public async Task Attributes_WhenDotFile_ShouldHaveHiddenFlag(bool isFile) + { + Skip.If(Test.RunsOnWindows); + + const string path = ".env"; + + FileAttributes result; + + if (isFile) + { + FileSystem.File.WriteAllText(path, null); + + result = FileSystem.FileInfo.New(path).Attributes; + } + else + { + FileSystem.Directory.CreateDirectory(path); + + result = FileSystem.DirectoryInfo.New(path).Attributes; + } + + await That(result).HasFlag(FileAttributes.Hidden); + } } diff --git a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs index dbc9504fa..e54a49886 100644 --- a/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs +++ b/Tests/Testably.Abstractions.Tests/FileSystem/FileVersionInfo/Tests.cs @@ -1,5 +1,3 @@ -using System.IO; - namespace Testably.Abstractions.Tests.FileSystem.FileVersionInfo; [FileSystemTests] @@ -17,30 +15,4 @@ public async Task ToString_ShouldReturnProvidedPath(string fileName) await That(result).Contains(fullPath); } - - [Theory] - [AutoData] - public async Task Attributes_WhenDotFile_ShouldHaveHiddenFlag(bool isFile) - { - Skip.If(Test.RunsOnWindows); - - const string path = ".env"; - - FileAttributes result; - - if (isFile) - { - FileSystem.File.WriteAllText(path, null); - - result = FileSystem.FileInfo.New(path).Attributes; - } - else - { - FileSystem.Directory.CreateDirectory(path); - - result = FileSystem.DirectoryInfo.New(path).Attributes; - } - - await That(result).HasFlag(FileAttributes.Hidden); - } } From 019023eb6b0e45cb765344808ed1d8736de25643 Mon Sep 17 00:00:00 2001 From: "p.wintrich" Date: Thu, 12 Feb 2026 16:37:06 +0100 Subject: [PATCH 3/3] test: renamed InMemoryContainerTests.AdjustAttributes_LeadingDot_ShouldBeHiddenOnLinux to AdjustAttributes_LeadingDot_ShouldBeHiddenOnUnix and adjusted expectation --- .../Storage/InMemoryContainerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryContainerTests.cs b/Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryContainerTests.cs index b6f6cec45..cc6c55591 100644 --- a/Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryContainerTests.cs +++ b/Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryContainerTests.cs @@ -47,7 +47,7 @@ public async Task AdjustAttributes_Encrypt_ShouldHaveEncryptedAttribute(string p [Theory] [AutoData] - public async Task AdjustAttributes_LeadingDot_ShouldBeHiddenOnLinux(string path) + public async Task AdjustAttributes_LeadingDot_ShouldBeHiddenOnUnix(string path) { path = "." + path; MockFileSystem fileSystem = new(); @@ -60,7 +60,7 @@ public async Task AdjustAttributes_LeadingDot_ShouldBeHiddenOnLinux(string path) FileAttributes result = container.AdjustAttributes(FileAttributes.Normal); - if (Test.RunsOnLinux) + if (!Test.RunsOnWindows) { await That(result).HasFlag(FileAttributes.Hidden); }