From d6fde0934ea38f0037f0ebd36ce8a20ce96c199c Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 8 Sep 2023 03:12:46 +0300 Subject: [PATCH] Fixed: macOS version detection (cherry picked from commit 060be6177a5477c94823e6a423c42064dedc1afb) Closes #4106 --- .../VersionAdapters/MacOsVersionAdapterFixture.cs | 3 +++ .../EnvironmentInfo/VersionAdapters/MacOsVersionAdapter.cs | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Mono.Test/EnvironmentInfo/VersionAdapters/MacOsVersionAdapterFixture.cs b/src/NzbDrone.Mono.Test/EnvironmentInfo/VersionAdapters/MacOsVersionAdapterFixture.cs index b4df1027a..8bc8c9668 100644 --- a/src/NzbDrone.Mono.Test/EnvironmentInfo/VersionAdapters/MacOsVersionAdapterFixture.cs +++ b/src/NzbDrone.Mono.Test/EnvironmentInfo/VersionAdapters/MacOsVersionAdapterFixture.cs @@ -15,6 +15,9 @@ namespace NzbDrone.Mono.Test.EnvironmentInfo.VersionAdapters [TestCase("10.8")] [TestCase("10.8.1")] [TestCase("10.11.20")] + [TestCase("11.7.9")] + [TestCase("12.6.8")] + [TestCase("13.5.1")] public void should_get_version_info(string versionString) { var fileContent = File.ReadAllText(GetTestPath("Files/macOS/SystemVersion.plist")).Replace("10.0.0", versionString); diff --git a/src/NzbDrone.Mono/EnvironmentInfo/VersionAdapters/MacOsVersionAdapter.cs b/src/NzbDrone.Mono/EnvironmentInfo/VersionAdapters/MacOsVersionAdapter.cs index 867d46f2e..55542809e 100644 --- a/src/NzbDrone.Mono/EnvironmentInfo/VersionAdapters/MacOsVersionAdapter.cs +++ b/src/NzbDrone.Mono/EnvironmentInfo/VersionAdapters/MacOsVersionAdapter.cs @@ -10,9 +10,8 @@ namespace NzbDrone.Mono.EnvironmentInfo.VersionAdapters { private const string PLIST_DIR = "/System/Library/CoreServices/"; - private static readonly Regex DarwinVersionRegex = new Regex("(?10\\.\\d{1,2}\\.?\\d{0,2}?)<\\/string>", - RegexOptions.Compiled | - RegexOptions.IgnoreCase); + private static readonly Regex DarwinVersionRegex = new ("ProductVersion<\\/key>\\s*(?1\\d\\.\\d{1,2}\\.?\\d{0,2}?)<\\/string>", + RegexOptions.Compiled | RegexOptions.IgnoreCase); private readonly IDiskProvider _diskProvider; private readonly Logger _logger;