Skip to content

Commit 62f435a

Browse files
committed
refactor: split noise detection for files and directories
1 parent a7e9616 commit 62f435a

5 files changed

Lines changed: 35 additions & 19 deletions

File tree

src/ByteSync.Client/Interfaces/Controls/Inventories/IFileSystemInspector.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ public interface IFileSystemInspector
1212

1313
bool IsSystemAttribute(FileInfo fileInfo);
1414

15-
bool IsNoiseEntryName(string? entryName, OSPlatforms os);
16-
1715
bool IsNoiseFileName(FileInfo fileInfo, OSPlatforms os);
1816

17+
bool IsNoiseDirectoryName(DirectoryInfo directoryInfo, OSPlatforms os);
18+
1919
bool IsReparsePoint(FileSystemInfo fsi);
2020

2121
bool Exists(FileInfo fileInfo);
2222

2323
bool IsOffline(FileInfo fileInfo);
2424

2525
bool IsRecallOnDataAccess(FileInfo fileInfo);
26-
}
26+
}

src/ByteSync.Client/Services/Inventories/FileSystemInspector.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ public bool IsSystemAttribute(FileInfo fileInfo)
6161
return isSystem;
6262
}
6363

64-
public bool IsNoiseEntryName(string? entryName, OSPlatforms os)
64+
public bool IsNoiseFileName(FileInfo fileInfo, OSPlatforms os)
6565
{
66-
return NoiseFileDetector.IsNoiseFileName(entryName, os);
66+
return NoiseFileDetector.IsNoiseFileName(fileInfo.Name, os);
6767
}
6868

69-
public bool IsNoiseFileName(FileInfo fileInfo, OSPlatforms os)
69+
public bool IsNoiseDirectoryName(DirectoryInfo directoryInfo, OSPlatforms os)
7070
{
71-
return IsNoiseEntryName(fileInfo.Name, os);
71+
return NoiseFileDetector.IsNoiseFileName(directoryInfo.Name, os);
7272
}
7373

7474
public bool IsReparsePoint(FileSystemInfo fsi)

src/ByteSync.Client/Services/Inventories/InventoryBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ private bool ShouldIgnoreNoiseDirectory(DirectoryInfo directoryInfo)
549549
return false;
550550
}
551551

552-
if (FileSystemInspector.IsNoiseEntryName(directoryInfo.Name, OSPlatform))
552+
if (FileSystemInspector.IsNoiseDirectoryName(directoryInfo, OSPlatform))
553553
{
554554
_logger.LogInformation("Directory {Directory} is ignored because considered as noise", directoryInfo.FullName);
555555

@@ -566,7 +566,7 @@ private bool ShouldIgnoreNoiseDirectory(DirectoryInfo directoryInfo)
566566
return null;
567567
}
568568

569-
if (FileSystemInspector.IsNoiseEntryName(fileInfo.Name, OSPlatform))
569+
if (FileSystemInspector.IsNoiseFileName(fileInfo, OSPlatform))
570570
{
571571
_logger.LogInformation("File {File} is ignored because considered as noise", fileInfo.FullName);
572572

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,41 @@ public void ClassifyEntry_FallsBackToRegularFile_WhenPosixClassifierThrows()
134134
}
135135

136136
[Test]
137-
public void IsNoiseEntryName_ShouldReturnTrue_ForKnownNoiseEntry()
137+
public void IsNoiseDirectoryName_ShouldReturnTrue_ForKnownNoiseDirectory()
138138
{
139139
var inspector = new FileSystemInspector();
140+
var tempDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")));
141+
var noiseDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "$RECYCLE.BIN"));
140142

141-
var result = inspector.IsNoiseEntryName("thumbs.db", OSPlatforms.Windows);
143+
try
144+
{
145+
var result = inspector.IsNoiseDirectoryName(noiseDirectory, OSPlatforms.Windows);
142146

143-
result.Should().BeTrue();
147+
result.Should().BeTrue();
148+
}
149+
finally
150+
{
151+
Directory.Delete(tempDirectory.FullName, true);
152+
}
144153
}
145154

146155
[Test]
147-
public void IsNoiseEntryName_ShouldReturnFalse_ForUnknownEntry()
156+
public void IsNoiseDirectoryName_ShouldReturnFalse_ForUnknownDirectory()
148157
{
149158
var inspector = new FileSystemInspector();
159+
var tempDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N")));
160+
var regularDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "regular"));
150161

151-
var result = inspector.IsNoiseEntryName("regular.txt", OSPlatforms.Windows);
162+
try
163+
{
164+
var result = inspector.IsNoiseDirectoryName(regularDirectory, OSPlatforms.Windows);
152165

153-
result.Should().BeFalse();
166+
result.Should().BeFalse();
167+
}
168+
finally
169+
{
170+
Directory.Delete(tempDirectory.FullName, true);
171+
}
154172
}
155173

156174
[Test]

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private static void SetupDefaultClassification(Mock<IFileSystemInspector> inspec
9595
_ => FileSystemEntryKind.Unknown
9696
});
9797
inspector
98-
.Setup(i => i.IsNoiseEntryName(It.IsAny<string>(), It.IsAny<OSPlatforms>()))
98+
.Setup(i => i.IsNoiseDirectoryName(It.IsAny<DirectoryInfo>(), It.IsAny<OSPlatforms>()))
9999
.Returns(false);
100100
}
101101

@@ -246,8 +246,6 @@ public async Task Noise_Child_File_Is_Recorded()
246246
SetupDefaultClassification(insp);
247247
insp.Setup(i => i.IsHidden(It.IsAny<DirectoryInfo>(), It.IsAny<OSPlatforms>())).Returns(false);
248248
insp.Setup(i => i.IsHidden(It.IsAny<FileInfo>(), It.IsAny<OSPlatforms>())).Returns(false);
249-
insp.Setup(i => i.IsNoiseEntryName(It.Is<string>(name => name == "thumbs.db"), It.IsAny<OSPlatforms>()))
250-
.Returns(true);
251249
insp.Setup(i => i.IsNoiseFileName(It.Is<FileInfo>(fi => fi.Name == "thumbs.db"), It.IsAny<OSPlatforms>()))
252250
.Returns(true);
253251
insp.Setup(i => i.IsNoiseFileName(It.Is<FileInfo>(fi => fi.Name != "thumbs.db"), It.IsAny<OSPlatforms>()))
@@ -280,7 +278,7 @@ public async Task Noise_Child_Directory_Is_Recorded_And_Not_Traversed()
280278
SetupDefaultClassification(insp);
281279
insp.Setup(i => i.IsHidden(It.IsAny<DirectoryInfo>(), It.IsAny<OSPlatforms>())).Returns(false);
282280
insp.Setup(i => i.IsHidden(It.IsAny<FileInfo>(), It.IsAny<OSPlatforms>())).Returns(false);
283-
insp.Setup(i => i.IsNoiseEntryName(It.Is<string>(name => name == "$RECYCLE.BIN"), It.IsAny<OSPlatforms>()))
281+
insp.Setup(i => i.IsNoiseDirectoryName(It.Is<DirectoryInfo>(di => di.Name == "$RECYCLE.BIN"), It.IsAny<OSPlatforms>()))
284282
.Returns(true);
285283
insp.Setup(i => i.IsNoiseFileName(It.IsAny<FileInfo>(), It.IsAny<OSPlatforms>())).Returns(false);
286284
insp.Setup(i => i.IsSystemAttribute(It.IsAny<FileInfo>())).Returns(false);

0 commit comments

Comments
 (0)