public async Task FileRemoved_DirectoryAdded(string[] deletedFiles, string[] createdDirectories, string[] expectedRemovedFiles, string[] expectedAddedDirectories, string[] expectedAddedFiles) { const string projectDirectorySubtree = @" [a] [def] x.r y.r [z.r] [b] [abc] z.r"; foreach (var path in deletedFiles) { FileInfoStubFactory.Create(_fileSystem, path); } RaiseCreated(_fileWatcher, deletedFiles); await _taskScheduler; using (_taskScheduler.Pause()) { RaiseDeleted(_fileWatcher, deletedFiles); DirectoryInfoStubFactory.FromIndentedString(_fileSystem, ProjectDirectory, projectDirectorySubtree); RaiseCreated(_directoryWatcher, createdDirectories); _taskScheduler.ScheduledTasksCount.Should().Be(1); } await _taskScheduler; _changeset.Should().NotBeNull() .And.HaveAddedFiles(expectedAddedFiles) .And.HaveAddedDirectories(expectedAddedDirectories) .And.HaveRemovedFiles(expectedRemovedFiles) .And.NoOtherChanges(); }
public async Task DirectoryAdded_SymlinkIgnored() { const string projectDirectorySubtree = @" [a] [def] x.r y.r [z.r] "; // a\ var a = (IDirectoryInfo)DirectoryInfoStubFactory.FromIndentedString(_fileSystem, ProjectDirectory, projectDirectorySubtree); // a\def\ var def = (IDirectoryInfo)a.EnumerateFileSystemInfos().Last(); // a\def\z.r\ var z_r = (IDirectoryInfo)def.EnumerateFileSystemInfos().Last(); z_r.Attributes.Returns(FileAttributes.Directory | FileAttributes.ReparsePoint); z_r.EnumerateFileSystemInfos().ThrowsForAnyArgs(new Exception()); using (_taskScheduler.Pause()) { RaiseCreated(_directoryWatcher, @"Z:\abc\a"); } await _taskScheduler; var expectedFiles = new[] { @"a\def\x.r", @"a\def\y.r" }; var expectedDirectories = new[] { @"a\", @"a\def\" }; _changeset.Should().NotBeNull() .And.HaveAddedFiles(expectedFiles) .And.HaveAddedDirectories(expectedDirectories) .And.NoOtherChanges(); }
public async Task DirectoryRemoved_ThenAdded(string[] deletedDirectories, string[] createdDirectories, string[] expectedRemoved, string[] expectedAdded) { await InjectDirectoriesIntoWatcher(_directoryWatcher, _fileSystem, deletedDirectories, _taskScheduler); const string projectDirectorySubtree = @" [a] [def] x.r y.r [z.r] [b] [abc] z.r"; using (_taskScheduler.Pause()) { RaiseDeleted(_directoryWatcher, deletedDirectories); DirectoryInfoStubFactory.FromIndentedString(_fileSystem, ProjectDirectory, projectDirectorySubtree); RaiseCreated(_directoryWatcher, createdDirectories); _taskScheduler.ScheduledTasksCount.Should().Be(1); } await _taskScheduler; _changeset.Should().NotBeNull() .And.HaveAddedDirectories(expectedAdded) .And.HaveRemovedDirectories(expectedRemoved); }
public async Task DirectoryAdded_DirectoryWithContent(string[] addedDirectories, string[] expectedDirectories, string[] expectedFiles) { const string projectDirectorySubtree = @" [a] [def] x.r y.r [z.r] [b] [abc] z.r [c] [ghi] w.r "; DirectoryInfoStubFactory.FromIndentedString(_fileSystem, ProjectDirectory, projectDirectorySubtree); using (_taskScheduler.Pause()) { RaiseCreated(_directoryWatcher, addedDirectories); _taskScheduler.ScheduledTasksCount.Should().Be(1); } await _taskScheduler; _changeset.Should().NotBeNull() .And.HaveAddedFiles(expectedFiles) .And.HaveAddedDirectories(expectedDirectories) .And.NoOtherChanges(); }