/// <summary> /// remove the files that are not specified in the list of files to keep /// </summary> /// <param name="filesToKeep">the files to be kept</param> /// <param name="folderToRemoveFrom">folder to remove files from</param> /// <param name="pattern">file patter to look for eg. *.mp3</param> /// <param name="whatIf">true to emit all the status updates but not actually perform the deletes, false to do the delete</param> public void RemoveUnwantedFiles(IEnumerable <IFileInfo> filesToKeep, string folderToRemoveFrom, string pattern, bool whatIf) { var removeDirectory = DirectoryInfoProvider.GetDirectoryInfo(folderToRemoveFrom); if (!removeDirectory.Exists) { return; } var filesInDirectory = removeDirectory.GetFiles(pattern); foreach (var file in filesInDirectory) { var thisFile = file; if (!filesToKeep.Any(f => f.Name == thisFile.Name)) { //we cannot find the file that is in the destination in the source OnStatusUpdate(string.Format(CultureInfo.InvariantCulture, "Removing: {0}", thisFile.FullName)); if (!whatIf) { FileUtilities.FileDelete(thisFile.FullName); } } } }
protected override void GivenThat() { base.GivenThat(); FileUtilities = GenerateMock <IFileUtilities>(); DirectoryInfoProvider = GenerateMock <IDirectoryInfoProvider>(); DirectoryInfo = GenerateMock <IDirectoryInfo>(); FilesInDirectory = new IFileInfo[] { GenerateMock <IFileInfo>() }; FilesInDirectory[0].Stub(f => f.FullName).Return(@"c:\a\b\c\1.mp3"); FilesInDirectory[0].Stub(f => f.Name).Return(@"1.mp3"); FoldersInDirectory = new IDirectoryInfo[] { GenerateMock <IDirectoryInfo>() }; FoldersInDirectory[0].Stub(f => f.FullName).Return(@"c:\a\b\c\d"); DirectoryInfo.Stub(di => di.Exists).Return(true); DirectoryInfoProvider.Stub(d => d.GetDirectoryInfo(null)) .IgnoreArguments() .Return(DirectoryInfo); StatusUpdates = new List <StatusUpdateEventArgs>(); FolderRemover = new UnwantedFolderRemover(DirectoryInfoProvider, FileUtilities); FolderRemover.StatusUpdate += FileRemoverStatusUpdate; }
protected override void GivenThat() { base.GivenThat(); FileSorter = GenerateMock <ISorter>(); DirectoryInfoProvider = GenerateMock <IDirectoryInfoProvider>(); DirectoryInfo = GenerateMock <IDirectoryInfo>(); FilesInDirectory = new IFileInfo[] { GenerateMock <IFileInfo>(), GenerateMock <IFileInfo>(), GenerateMock <IFileInfo>() }; DirectoryInfo.Stub(d => d.GetFiles(null)) .IgnoreArguments() .Return(FilesInDirectory); DirectoryInfoProvider.Stub(d => d.GetDirectoryInfo(null)) .IgnoreArguments() .Return(DirectoryInfo); FileSorter.Stub(finder => finder.Sort(FilesInDirectory, PodcastFileSortField.FileName, true)).Return(FilesInDirectory); FileFinder = new Finder(FileSorter, DirectoryInfoProvider); }
protected override void When() { try { DirectoryInfoProvider.GetDirectoryInfo(@"mtp:\test device\a\b\c"); } catch (Exception exception) { ThrownException = exception; } }
public void ItShouldGetTheDirectoryInfoFromTheProvider() { DirectoryInfoProvider.AssertWasCalled(d => d.GetDirectoryInfo(@"c:\blah")); }
protected override void When() { DirectoryInfo = DirectoryInfoProvider.GetDirectoryInfo(@"mtp:\test device\a\b\c"); }