public Delay50MsNoFiltering() { _fileSystem = Substitute.For<IFileSystem>(); var watchers = GetWatchersFromMsBuildFileSystemWatcher(_fileSystem); _fileSystemFilter = Substitute.For<IMsBuildFileSystemFilter>(); _fileSystemFilter.IsFileAllowed(Arg.Any<string>(), Arg.Any<FileAttributes>()).ReturnsForAnyArgs(true); _fileSystemFilter.IsDirectoryAllowed(Arg.Any<string>(), Arg.Any<FileAttributes>()).ReturnsForAnyArgs(true); _taskScheduler = new ControlledTaskScheduler(SynchronizationContext.Current); _fileSystemWatcher = new MsBuildFileSystemWatcher(ProjectDirectory, "*", 50, 50, _fileSystem, _fileSystemFilter, Substitute.For<IActionLog>(), _taskScheduler); _taskScheduler.Link(_fileSystemWatcher.SourceBlock, c => { _changeset = c; }); _fileSystemWatcher.Start(); _fileWatcher = watchers.FileWatcher; _directoryWatcher = watchers.DirectoryWatcher; _attributesWatcher = watchers.AttributesWatcher; }
public MsBuildFileSystemWatcher.Changeset ProduceChangeset() { var changeset = new MsBuildFileSystemWatcher.Changeset(); foreach (var entry in _entries.Values.ToList()) { switch (entry.State) { case Added: case RenamedThenAdded: if (entry.PreviousRelativePath != null) { switch (entry.Type) { case File: changeset.RenamedFiles.Add(entry.PreviousRelativePath, entry.RelativePath); break; case Directory: changeset.RenamedDirectories.Add(entry.PreviousRelativePath, entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } } else { switch (entry.Type) { case File: changeset.AddedFiles.Add(entry.RelativePath); break; case Directory: changeset.AddedDirectories.Add(entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } } entry.State = Unchanged; break; case Deleted: switch (entry.Type) { case File: changeset.RemovedFiles.Add(entry.RelativePath); break; case Directory: changeset.RemovedDirectories.Add(entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } _entries.Remove(entry.RelativePath); break; case Renamed: _entries.Remove(entry.RelativePath); break; default: entry.State = Unchanged; break; } } return(changeset); }
public async Task InitializeAsync() { await _taskScheduler; _taskScheduler.Link(_fileSystemWatcher.SourceBlock, c => { _changeset = c; }); }
public MsBuildFileSystemWatcher.Changeset ProduceChangeset() { var changeset = new MsBuildFileSystemWatcher.Changeset(); foreach (var entry in _entries.Values.ToList()) { switch (entry.State) { case Added: case RenamedThenAdded: if (entry.PreviousRelativePath != null) { switch (entry.Type) { case File: changeset.RenamedFiles.Add(entry.PreviousRelativePath, entry.RelativePath); break; case Directory: changeset.RenamedDirectories.Add(entry.PreviousRelativePath, entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } } else { switch (entry.Type) { case File: changeset.AddedFiles.Add(entry.RelativePath); break; case Directory: changeset.AddedDirectories.Add(entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } } entry.State = Unchanged; break; case Deleted: switch (entry.Type) { case File: changeset.RemovedFiles.Add(entry.RelativePath); break; case Directory: changeset.RemovedDirectories.Add(entry.RelativePath); break; default: throw new ArgumentOutOfRangeException(); } _entries.Remove(entry.RelativePath); break; case Renamed: _entries.Remove(entry.RelativePath); break; default: entry.State = Unchanged; break; } } return changeset; }
public async Task InitializeAsync() { await _taskScheduler; _changeset = null; }