Fixed a bug in DiskProvider where it wouldn't copy subfolders properly.

This commit is contained in:
kay.one 2011-11-13 20:05:33 -08:00
parent bc5307a4d3
commit ecbf127321
2 changed files with 18 additions and 9 deletions

View File

@ -35,11 +35,7 @@ namespace NzbDrone.Common.Test
diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName); diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName);
//Assert //Assert
BinFolder.Refresh(); VerifyCopy();
BinFolderCopy.Refresh();
BinFolder.GetFiles("*.*", SearchOption.AllDirectories)
.Should().HaveSameCount(BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories));
} }
[Test] [Test]
@ -51,16 +47,24 @@ namespace NzbDrone.Common.Test
diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName); diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName);
//Delete Random File //Delete Random File
BinFolderCopy.GetFiles().First().Delete(); BinFolderCopy.Refresh();
BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories).First().Delete();
diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName); diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName);
//Assert //Assert
VerifyCopy();
}
private void VerifyCopy()
{
BinFolder.Refresh(); BinFolder.Refresh();
BinFolderCopy.Refresh(); BinFolderCopy.Refresh();
BinFolder.GetFiles("*.*", SearchOption.AllDirectories) BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories)
.Should().HaveSameCount(BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories)); .Should().HaveSameCount(BinFolder.GetFiles("*.*", SearchOption.AllDirectories));
BinFolderCopy.GetDirectories().Should().HaveSameCount(BinFolder.GetDirectories());
} }
} }
} }

View File

@ -67,7 +67,12 @@ namespace NzbDrone.Common
targetFolder.Create(); targetFolder.Create();
} }
foreach (var file in sourceFolder.GetFiles("*.*", SearchOption.AllDirectories)) foreach (var subDir in sourceFolder.GetDirectories())
{
CopyDirectory(subDir.FullName, Path.Combine(target, subDir.Name));
}
foreach (var file in sourceFolder.GetFiles("*.*", SearchOption.TopDirectoryOnly))
{ {
var destFile = Path.Combine(target, file.Name); var destFile = Path.Combine(target, file.Name);
file.CopyTo(destFile, true); file.CopyTo(destFile, true);