Skip to content

Commit 024097b

Browse files
committed
test: add dedicated noise file detection coverage
1 parent 52980d0 commit 024097b

2 files changed

Lines changed: 154 additions & 1 deletion

File tree

tests/ByteSync.Client.UnitTests/Services/Inventories/FileSystemInspectorTests.cs

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using ByteSync.Business.Inventories;
2+
using ByteSync.Common.Business.Misc;
23
using ByteSync.Interfaces.Controls.Inventories;
34
using ByteSync.Services.Inventories;
45
using FluentAssertions;
@@ -131,4 +132,46 @@ public void ClassifyEntry_FallsBackToRegularFile_WhenPosixClassifierThrows()
131132
Directory.Delete(tempDirectory.FullName, true);
132133
}
133134
}
134-
}
135+
136+
[Test]
137+
public void IsNoiseFileName_ShouldReturnTrue_ForKnownNoiseFile()
138+
{
139+
var inspector = new FileSystemInspector();
140+
var tempDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")));
141+
var filePath = Path.Combine(tempDirectory.FullName, "thumbs.db");
142+
File.WriteAllText(filePath, "x");
143+
var fileInfo = new FileInfo(filePath);
144+
145+
try
146+
{
147+
var result = inspector.IsNoiseFileName(fileInfo, OSPlatforms.Windows);
148+
149+
result.Should().BeTrue();
150+
}
151+
finally
152+
{
153+
Directory.Delete(tempDirectory.FullName, true);
154+
}
155+
}
156+
157+
[Test]
158+
public void IsNoiseFileName_ShouldReturnFalse_ForUnknownFile()
159+
{
160+
var inspector = new FileSystemInspector();
161+
var tempDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")));
162+
var filePath = Path.Combine(tempDirectory.FullName, "regular.txt");
163+
File.WriteAllText(filePath, "x");
164+
var fileInfo = new FileInfo(filePath);
165+
166+
try
167+
{
168+
var result = inspector.IsNoiseFileName(fileInfo, OSPlatforms.Windows);
169+
170+
result.Should().BeFalse();
171+
}
172+
finally
173+
{
174+
Directory.Delete(tempDirectory.FullName, true);
175+
}
176+
}
177+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
using ByteSync.Common.Business.Misc;
2+
using ByteSync.Services.Inventories;
3+
using FluentAssertions;
4+
using NUnit.Framework;
5+
6+
namespace ByteSync.Client.UnitTests.Services.Inventories;
7+
8+
public class NoiseFileDetectorTests
9+
{
10+
private static readonly string[] KnownNoiseFileNames =
11+
[
12+
"desktop.ini",
13+
"thumbs.db",
14+
"ehthumbs.db",
15+
"ehthumbs_vista.db",
16+
".desktop.ini",
17+
".thumbs.db",
18+
".DS_Store",
19+
".AppleDouble",
20+
".LSOverride",
21+
".Spotlight-V100",
22+
".Trashes",
23+
".fseventsd",
24+
".TemporaryItems",
25+
".VolumeIcon.icns",
26+
".directory"
27+
];
28+
29+
[TestCaseSource(nameof(KnownNoiseFileNames))]
30+
public void IsNoiseFileName_ShouldReturnTrue_ForKnownNoiseFiles_OnWindows(string fileName)
31+
{
32+
var result = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Windows);
33+
34+
result.Should().BeTrue();
35+
}
36+
37+
[TestCaseSource(nameof(KnownNoiseFileNames))]
38+
public void IsNoiseFileName_ShouldReturnTrue_ForKnownNoiseFiles_OnLinux(string fileName)
39+
{
40+
var result = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Linux);
41+
42+
result.Should().BeTrue();
43+
}
44+
45+
[TestCase("DESKTOP.INI")]
46+
[TestCase("THUMBS.DB")]
47+
[TestCase("EHTHUMBS.DB")]
48+
[TestCase("EHTHUMBS_VISTA.DB")]
49+
[TestCase(".ds_store")]
50+
[TestCase(".appledouble")]
51+
[TestCase(".lsoverride")]
52+
[TestCase(".spotlight-v100")]
53+
[TestCase(".trashes")]
54+
[TestCase(".FSEVENTSD")]
55+
[TestCase(".temporaryitems")]
56+
[TestCase(".volumeicon.icns")]
57+
[TestCase(".DIRECTORY")]
58+
public void IsNoiseFileName_ShouldBeCaseInsensitive_OnNonLinuxPlatforms(string fileName)
59+
{
60+
var windowsResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Windows);
61+
var macResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.MacOs);
62+
63+
windowsResult.Should().BeTrue();
64+
macResult.Should().BeTrue();
65+
}
66+
67+
[TestCase("DESKTOP.INI")]
68+
[TestCase("THUMBS.DB")]
69+
[TestCase("EHTHUMBS.DB")]
70+
[TestCase("EHTHUMBS_VISTA.DB")]
71+
[TestCase(".ds_store")]
72+
[TestCase(".appledouble")]
73+
[TestCase(".lsoverride")]
74+
[TestCase(".spotlight-v100")]
75+
[TestCase(".trashes")]
76+
[TestCase(".FSEVENTSD")]
77+
[TestCase(".temporaryitems")]
78+
[TestCase(".volumeicon.icns")]
79+
[TestCase(".DIRECTORY")]
80+
public void IsNoiseFileName_ShouldBeCaseSensitive_OnLinux(string fileName)
81+
{
82+
var result = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Linux);
83+
84+
result.Should().BeFalse();
85+
}
86+
87+
[TestCase("readme.md")]
88+
[TestCase("normal.txt")]
89+
[TestCase(".gitignore")]
90+
public void IsNoiseFileName_ShouldReturnFalse_ForUnknownFileNames(string fileName)
91+
{
92+
var windowsResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Windows);
93+
var linuxResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Linux);
94+
95+
windowsResult.Should().BeFalse();
96+
linuxResult.Should().BeFalse();
97+
}
98+
99+
[TestCase(null)]
100+
[TestCase("")]
101+
[TestCase(" ")]
102+
public void IsNoiseFileName_ShouldReturnFalse_ForEmptyValues(string? fileName)
103+
{
104+
var windowsResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Windows);
105+
var linuxResult = NoiseFileDetector.IsNoiseFileName(fileName, OSPlatforms.Linux);
106+
107+
windowsResult.Should().BeFalse();
108+
linuxResult.Should().BeFalse();
109+
}
110+
}

0 commit comments

Comments
 (0)