Skip to content

Commit 65de5f1

Browse files
authored
feat: add IFileSystemWatcher.Filters (#680)
1 parent e15174b commit 65de5f1

11 files changed

Lines changed: 100 additions & 1 deletion

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0' OR '$(TargetFramework)' == 'netcoreapp3.1' OR '$(TargetFramework)' == 'netstandard2.1'">$(DefineConstants);FEATURE_ASYNC_FILE;FEATURE_ENUMERATION_OPTIONS;FEATURE_ADVANCED_PATH_OPERATIONSFEATURE_PATH_JOIN_WITH_SPAN</DefineConstants>
1515
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0'">$(DefineConstants);FEATURE_FILE_MOVE_WITH_OVERWRITE</DefineConstants>
1616
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0'">$(DefineConstants);FEATURE_SUPPORTED_OS_ATTRIBUTE</DefineConstants>
17+
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0'">$(DefineConstants);FEATURE_FILE_SYSTEM_WATCHER_FILTERS</DefineConstants>
1718
</PropertyGroup>
1819
<ItemGroup>
1920
<PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37">

src/System.IO.Abstractions/FileSystemWatcherBase.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ public abstract class FileSystemWatcherBase : IFileSystemWatcher
1515
/// <inheritdoc cref="FileSystemWatcher.Filter"/>
1616
public abstract string Filter { get; set; }
1717

18+
#if FEATURE_FILE_SYSTEM_WATCHER_FILTERS
19+
/// <inheritdoc cref="FileSystemWatcher.Filters"/>
20+
public abstract System.Collections.ObjectModel.Collection<string> Filters { get; }
21+
#endif
22+
1823
/// <inheritdoc cref="FileSystemWatcher.InternalBufferSize"/>
1924
public abstract int InternalBufferSize { get; set; }
2025

src/System.IO.Abstractions/FileSystemWatcherWrapper.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ public override string Filter
5454
set { watcher.Filter = value; }
5555
}
5656

57+
#if FEATURE_FILE_SYSTEM_WATCHER_FILTERS
58+
public override System.Collections.ObjectModel.Collection<string> Filters
59+
{
60+
get { return watcher.Filters; }
61+
}
62+
#endif
63+
5764
public override int InternalBufferSize
5865
{
5966
get { return watcher.InternalBufferSize; }

src/System.IO.Abstractions/IFileSystemWatcher.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public interface IFileSystemWatcher : IDisposable
1010
bool EnableRaisingEvents { get; set; }
1111
/// <inheritdoc cref="FileSystemWatcher.Filter"/>
1212
string Filter { get; set; }
13+
#if FEATURE_FILE_SYSTEM_WATCHER_FILTERS
14+
/// <inheritdoc cref="FileSystemWatcher.Filters"/>
15+
System.Collections.ObjectModel.Collection<string> Filters { get; }
16+
#endif
1317
/// <inheritdoc cref="FileSystemWatcher.InternalBufferSize"/>
1418
int InternalBufferSize { get; set; }
1519
/// <inheritdoc cref="FileSystemWatcher.NotifyFilter"/>

tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.Collections.ObjectModel;
23
using System.ComponentModel;
34
using System.Linq;
45
using System.Reflection;
@@ -408,6 +409,9 @@ public TestFileSystemWatcher(string path, string filter)
408409
public override NotifyFilters NotifyFilter { get; set; }
409410
public override ISite Site { get; set; }
410411
public override ISynchronizeInvoke SynchronizingObject { get; set; }
412+
#if FEATURE_FILE_SYSTEM_WATCHER_FILTERS
413+
public override Collection<string> Filters { get; }
414+
#endif
411415
public override void BeginInit() { }
412416
public override void EndInit() { }
413417
public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType) => default(WaitForChangedResult);

tests/System.IO.Abstractions.Tests/ApiParityTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ public void Path() =>
5252
typeof(System.IO.Abstractions.PathBase)
5353
);
5454

55+
[Test]
56+
public void FileSystemWatcher() =>
57+
AssertParity(
58+
typeof(System.IO.FileSystemWatcher),
59+
typeof(System.IO.Abstractions.FileSystemWatcherBase)
60+
);
61+
5562
private void AssertParity(Type referenceType, Type abstractionType)
5663
{
5764
static IEnumerable<string> GetMembers(Type type) => type
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"ExtraMembers": [
3+
"Void Dispose(Boolean)"
4+
],
5+
"MissingMembers": [
6+
"System.ComponentModel.IContainer Container",
7+
"System.ComponentModel.IContainer get_Container()",
8+
"System.EventHandler Disposed",
9+
"System.Object GetLifetimeService()",
10+
"System.Object InitializeLifetimeService()",
11+
"Void .ctor()",
12+
"Void .ctor(System.String)",
13+
"Void .ctor(System.String, System.String)",
14+
"Void add_Disposed(System.EventHandler)",
15+
"Void remove_Disposed(System.EventHandler)"
16+
]
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"ExtraMembers": [
3+
"Void Dispose(Boolean)"
4+
],
5+
"MissingMembers": [
6+
"System.ComponentModel.IContainer Container",
7+
"System.ComponentModel.IContainer get_Container()",
8+
"System.EventHandler Disposed",
9+
"System.Object GetLifetimeService()",
10+
"System.Object InitializeLifetimeService()",
11+
"Void .ctor()",
12+
"Void .ctor(System.String)",
13+
"Void .ctor(System.String, System.String)",
14+
"Void add_Disposed(System.EventHandler)",
15+
"Void remove_Disposed(System.EventHandler)"
16+
]
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"ExtraMembers": [
3+
"Void Dispose(Boolean)"
4+
],
5+
"MissingMembers": [
6+
"System.Collections.ObjectModel.Collection`1[System.String] Filters",
7+
"System.Collections.ObjectModel.Collection`1[System.String] get_Filters()",
8+
"System.ComponentModel.IContainer Container",
9+
"System.ComponentModel.IContainer get_Container()",
10+
"System.EventHandler Disposed",
11+
"System.Object GetLifetimeService()",
12+
"System.Object InitializeLifetimeService()",
13+
"Void .ctor()",
14+
"Void .ctor(System.String)",
15+
"Void .ctor(System.String, System.String)",
16+
"Void add_Disposed(System.EventHandler)",
17+
"Void remove_Disposed(System.EventHandler)"
18+
]
19+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"ExtraMembers": [
3+
"Void Dispose(Boolean)"
4+
],
5+
"MissingMembers": [
6+
"System.ComponentModel.IContainer Container",
7+
"System.ComponentModel.IContainer get_Container()",
8+
"System.EventHandler Disposed",
9+
"System.Object GetLifetimeService()",
10+
"System.Object InitializeLifetimeService()",
11+
"System.Runtime.Remoting.ObjRef CreateObjRef(System.Type)",
12+
"Void .ctor()",
13+
"Void .ctor(System.String)",
14+
"Void .ctor(System.String, System.String)",
15+
"Void add_Disposed(System.EventHandler)",
16+
"Void remove_Disposed(System.EventHandler)"
17+
]
18+
}

0 commit comments

Comments
 (0)