From 60f6ed030b9f018dc57f8c6a8d2e549c4b55846b Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 3 Aug 2023 20:12:33 -0700 Subject: [PATCH] Fix GetBestRootFolderPath tests (cherry picked from commit 63a911a9a549749b5460c2b9fea48a25e78c52a4) --- .../GetBestRootFolderPathFixture.cs | 41 +++++++++++++------ .../RootFolders/RootFolderService.cs | 2 +- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/NzbDrone.Core.Test/RootFolderTests/GetBestRootFolderPathFixture.cs b/src/NzbDrone.Core.Test/RootFolderTests/GetBestRootFolderPathFixture.cs index 49a013703..c84a52a2a 100644 --- a/src/NzbDrone.Core.Test/RootFolderTests/GetBestRootFolderPathFixture.cs +++ b/src/NzbDrone.Core.Test/RootFolderTests/GetBestRootFolderPathFixture.cs @@ -1,8 +1,6 @@ using System.Linq; using FluentAssertions; -using Moq; using NUnit.Framework; -using NzbDrone.Common.Disk; using NzbDrone.Core.RootFolders; using NzbDrone.Core.Test.Framework; using NzbDrone.Test.Common; @@ -22,27 +20,46 @@ namespace NzbDrone.Core.Test.RootFolderTests [Test] public void should_return_root_folder_that_is_parent_path() { - GivenRootFolders(@"C:\Test\Music".AsOsAgnostic(), @"D:\Test\Music".AsOsAgnostic()); - Subject.GetBestRootFolderPath(@"C:\Test\Music\Series Title".AsOsAgnostic()).Should().Be(@"C:\Test\Music".AsOsAgnostic()); + GivenRootFolders(@"C:\Test\Books".AsOsAgnostic(), @"D:\Test\Books".AsOsAgnostic()); + Subject.GetBestRootFolderPath(@"C:\Test\Books\Author Title".AsOsAgnostic()).Should().Be(@"C:\Test\Books".AsOsAgnostic()); } [Test] public void should_return_root_folder_that_is_grandparent_path() { - GivenRootFolders(@"C:\Test\Music".AsOsAgnostic(), @"D:\Test\Music".AsOsAgnostic()); - Subject.GetBestRootFolderPath(@"C:\Test\Music\S\Series Title".AsOsAgnostic()).Should().Be(@"C:\Test\Music".AsOsAgnostic()); + GivenRootFolders(@"C:\Test\Books".AsOsAgnostic(), @"D:\Test\Books".AsOsAgnostic()); + Subject.GetBestRootFolderPath(@"C:\Test\Books\S\Author Title".AsOsAgnostic()).Should().Be(@"C:\Test\Books".AsOsAgnostic()); } [Test] - public void should_get_parent_path_from_diskProvider_if_matching_root_folder_is_not_found() + public void should_get_parent_path_from_os_path_if_matching_root_folder_is_not_found() { - var seriesPath = @"T:\Test\Music\Series Title".AsOsAgnostic(); + var artistPath = @"T:\Test\Books\Author Title".AsOsAgnostic(); - GivenRootFolders(@"C:\Test\Music".AsOsAgnostic(), @"D:\Test\Music".AsOsAgnostic()); - Subject.GetBestRootFolderPath(seriesPath); + GivenRootFolders(@"C:\Test\Books".AsOsAgnostic(), @"D:\Test\Books".AsOsAgnostic()); + Subject.GetBestRootFolderPath(artistPath).Should().Be(@"T:\Test\Books".AsOsAgnostic()); + } + + [Test] + public void should_get_parent_path_from_os_path_if_matching_root_folder_is_not_found_for_posix_path() + { + WindowsOnly(); + + var artistPath = "/mnt/books/Author Title"; + + GivenRootFolders(@"C:\Test\Books".AsOsAgnostic(), @"D:\Test\Books".AsOsAgnostic()); + Subject.GetBestRootFolderPath(artistPath).Should().Be(@"/mnt/books"); + } + + [Test] + public void should_get_parent_path_from_os_path_if_matching_root_folder_is_not_found_for_windows_path() + { + PosixOnly(); + + var artistPath = @"T:\Test\Books\Author Title"; - Mocker.GetMock() - .Verify(v => v.GetParentFolder(seriesPath), Times.Once); + GivenRootFolders(@"C:\Test\Books".AsOsAgnostic(), @"D:\Test\Books".AsOsAgnostic()); + Subject.GetBestRootFolderPath(artistPath).Should().Be(@"T:\Test\Books"); } } } diff --git a/src/NzbDrone.Core/RootFolders/RootFolderService.cs b/src/NzbDrone.Core/RootFolders/RootFolderService.cs index fbad0cc53..991201576 100644 --- a/src/NzbDrone.Core/RootFolders/RootFolderService.cs +++ b/src/NzbDrone.Core/RootFolders/RootFolderService.cs @@ -170,7 +170,7 @@ namespace NzbDrone.Core.RootFolders { var osPath = new OsPath(path); - return osPath.Directory.ToString(); + return osPath.Directory.ToString().TrimEnd(osPath.IsUnixPath ? '/' : '\\'); } return possibleRootFolder?.Path;