diff --git a/src/NzbDrone.Common.Test/DiskTests/DiskTransferServiceFixture.cs b/src/NzbDrone.Common.Test/DiskTests/DiskTransferServiceFixture.cs index 7a9a89bff..d830311c7 100644 --- a/src/NzbDrone.Common.Test/DiskTests/DiskTransferServiceFixture.cs +++ b/src/NzbDrone.Common.Test/DiskTests/DiskTransferServiceFixture.cs @@ -662,6 +662,23 @@ namespace NzbDrone.Common.Test.DiskTests VerifyCopyFolder(original.FullName, destination.FullName); } + [Test] + public void MirrorFolder_should_handle_trailing_slash() + { + WithRealDiskProvider(); + + var original = GetFilledTempFolder(); + var source = new DirectoryInfo(GetTempFilePath()); + var destination = new DirectoryInfo(GetTempFilePath()); + + Subject.TransferFolder(original.FullName, source.FullName, TransferMode.Copy); + + var count = Subject.MirrorFolder(source.FullName + Path.DirectorySeparatorChar, destination.FullName); + + count.Should().Equals(3); + VerifyCopyFolder(original.FullName, destination.FullName); + } + [Test] public void TransferFolder_should_use_movefolder_if_on_same_mount() { diff --git a/src/NzbDrone.Common/Disk/DiskTransferService.cs b/src/NzbDrone.Common/Disk/DiskTransferService.cs index 3a274ecfd..3a3a7771e 100644 --- a/src/NzbDrone.Common/Disk/DiskTransferService.cs +++ b/src/NzbDrone.Common/Disk/DiskTransferService.cs @@ -30,13 +30,16 @@ namespace NzbDrone.Common.Disk private string ResolveRealParentPath(string path) { var parentPath = path.GetParentPath(); - if (!_diskProvider.FolderExists(path)) + if (!_diskProvider.FolderExists(parentPath)) { return path; } - parentPath = parentPath.GetActualCasing(); - return parentPath + Path.DirectorySeparatorChar + Path.GetFileName(path); + var realParentPath = parentPath.GetActualCasing(); + + var partialChildPath = path.Substring(parentPath.Length); + + return realParentPath + partialChildPath; } public TransferMode TransferFolder(string sourcePath, string targetPath, TransferMode mode) diff --git a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs index 3b87d9d03..37908823f 100644 --- a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs +++ b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using NLog; using NzbDrone.Common.Disk; @@ -90,6 +90,12 @@ namespace NzbDrone.Update.UpdateEngine Verify(installationFolder, processId); + if (installationFolder.EndsWith(@"\bin\Lidarr") || installationFolder.EndsWith(@"/bin/Lidarr")) + { + installationFolder = installationFolder.GetParentPath(); + _logger.Info("Fixed Installation Folder: {0}", installationFolder); + } + var appType = _detectApplicationType.GetAppType(); _processProvider.FindProcessByName(ProcessProvider.READARR_CONSOLE_PROCESS_NAME);