public async Task TokenFiredForGlobbingPatternsPointingToSubDirectory() { using (var root = new DisposableFileSystem()) { using (var fileSystemWatcher = new MockFileSystemWatcher(root.RootPath)) { using (var physicalFilesWatcher = new PhysicalFilesWatcher(root.RootPath + Path.DirectorySeparatorChar, fileSystemWatcher, pollForChanges: false)) { using (var provider = new PhysicalFileProvider(root.RootPath, physicalFilesWatcher)) { var subDirectoryName = Guid.NewGuid().ToString(); var subSubDirectoryName = Guid.NewGuid().ToString(); var fileName = Guid.NewGuid().ToString() + ".cshtml"; root.CreateFolder(subDirectoryName) .CreateFolder(Path.Combine(subDirectoryName, subSubDirectoryName)) .CreateFile(Path.Combine(subDirectoryName, subSubDirectoryName, fileName)); var pattern = string.Format(Path.Combine(subDirectoryName, "**", "*.cshtml")); var token = provider.Watch(pattern); fileSystemWatcher.CallOnChanged(new FileSystemEventArgs(WatcherChangeTypes.Changed, Path.Combine(root.RootPath, subDirectoryName, subSubDirectoryName), fileName)); await Task.Delay(WaitTimeForTokenToFire); Assert.True(token.HasChanged); } } } } }
public async Task TokenFiredForFilesUnderPathEndingWithSlash() { using (var root = new DisposableFileSystem()) { using (var fileSystemWatcher = new MockFileSystemWatcher(root.RootPath)) { using (var physicalFilesWatcher = new PhysicalFilesWatcher(root.RootPath + Path.DirectorySeparatorChar, fileSystemWatcher, pollForChanges: false)) { using (var provider = new PhysicalFileProvider(root.RootPath, physicalFilesWatcher)) { var directoryName = Guid.NewGuid().ToString(); root.CreateFolder(directoryName) .CreateFile(Path.Combine(directoryName, "some-file")); var newDirectory = Path.GetRandomFileName(); var token = provider.Watch(directoryName + Path.DirectorySeparatorChar); Directory.Move( Path.Combine(root.RootPath, directoryName), Path.Combine(root.RootPath, newDirectory)); fileSystemWatcher.CallOnRenamed(new RenamedEventArgs( WatcherChangeTypes.Renamed, root.RootPath, newDirectory, directoryName)); await Task.Delay(WaitTimeForTokenToFire); Assert.True(token.HasChanged); } } } } }