From bf8d68a87343fe2858652b8ba412c4737441b27d Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 20 Sep 2016 20:40:15 -0700 Subject: [PATCH] Fixed: Version check for SABnzbd develop --- .../SabnzbdTests/SabnzbdFixture.cs | 14 ++++++++ .../Download/Clients/Sabnzbd/Sabnzbd.cs | 35 ++++++++++++++++--- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs index bf8faf979..a308e68aa 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabnzbdTests/SabnzbdFixture.cs @@ -12,6 +12,7 @@ using NzbDrone.Core.Tv; using NzbDrone.Test.Common; using NzbDrone.Core.RemotePathMappings; using NzbDrone.Common.Disk; +using NzbDrone.Core.Validation; namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests { @@ -436,5 +437,18 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests error.IsValid.Should().Be(expected); } + + [Test] + public void should_test_develop_version_successfully() + { + Mocker.GetMock() + .Setup(v => v.GetVersion(It.IsAny())) + .Returns("develop"); + + var result = new NzbDroneValidationResult(Subject.Test()); + + result.IsValid.Should().BeTrue(); + result.HasWarnings.Should().BeTrue(); + } } } diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs index 659d9d36b..933ff2d31 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs @@ -280,15 +280,31 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd var version = _proxy.GetVersion(Settings); var parsed = VersionRegex.Match(version); + int actualMajor; + int actualMinor; + int actualPatch; + string actualCandidate; + if (!parsed.Success) { - return false; + if (!version.Equals("develop", StringComparison.InvariantCultureIgnoreCase)) + { + return false; + } + + actualMajor = 1; + actualMinor = 1; + actualPatch = 0; + actualCandidate = null; } - var actualMajor = Convert.ToInt32(parsed.Groups["major"].Value); - var actualMinor = Convert.ToInt32(parsed.Groups["minor"].Value); - var actualPatch = Convert.ToInt32(parsed.Groups["patch"].Value.Replace("x", "")); - var actualCandidate = parsed.Groups["candidate"].Value.ToUpper(); + else + { + actualMajor = Convert.ToInt32(parsed.Groups["major"].Value); + actualMinor = Convert.ToInt32(parsed.Groups["minor"].Value); + actualPatch = Convert.ToInt32(parsed.Groups["patch"].Value.Replace("x", "")); + actualCandidate = parsed.Groups["candidate"].Value.ToUpper(); + } if (actualMajor > major) { @@ -340,6 +356,15 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd if (!parsed.Success) { + if (version.Equals("develop", StringComparison.InvariantCultureIgnoreCase)) + { + return new NzbDroneValidationFailure("Version", "Sabnzbd develop version, assuming version 1.1.0 or higher.") + { + IsWarning = true, + DetailedDescription = "Sonarr may not be able to support new features added to SABnzbd when running develop versions." + }; + } + return new ValidationFailure("Version", "Unknown Version: " + version); }