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.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); } 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/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); + } }