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);
//Assert
BinFolder.Refresh();
BinFolderCopy.Refresh();
BinFolder.GetFiles("*.*", SearchOption.AllDirectories)
.Should().HaveSameCount(BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories));
VerifyCopy();
}
[Test]
@ -51,16 +47,24 @@ namespace NzbDrone.Common.Test
diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName);
//Delete Random File
BinFolderCopy.GetFiles().First().Delete();
BinFolderCopy.Refresh();
BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories).First().Delete();
diskProvider.CopyDirectory(BinFolder.FullName, BinFolderCopy.FullName);
//Assert
VerifyCopy();
}
private void VerifyCopy()
{
BinFolder.Refresh();
BinFolderCopy.Refresh();
BinFolder.GetFiles("*.*", SearchOption.AllDirectories)
.Should().HaveSameCount(BinFolderCopy.GetFiles("*.*", SearchOption.AllDirectories));
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();
}
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);
file.CopyTo(destFile, true);