From d944e9f6e2da9e7c710db7d1fe356074a08f6891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20L=C3=A4tt?= Date: Wed, 16 Oct 2024 11:16:42 +0300 Subject: [PATCH] Do not cache is legacy check return value --- src/codemagic/models/xctests/xcresulttool.py | 6 +++++- tests/models/xctests/test_xcresulttool.py | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/codemagic/models/xctests/xcresulttool.py b/src/codemagic/models/xctests/xcresulttool.py index 57823ac0..91397f02 100644 --- a/src/codemagic/models/xctests/xcresulttool.py +++ b/src/codemagic/models/xctests/xcresulttool.py @@ -35,12 +35,16 @@ def __init__(self, message: str, stderr: str): class XcResultTool(RunningCliAppMixin, StringConverterMixin): @classmethod @lru_cache(1) + def _get_selected_xcode(cls): + return Xcode.get_selected() + + @classmethod def is_legacy(cls) -> bool: """ With Xcode 16.0 `xcresulttool get` API was changed. Check if activated xcresulttool is from Xcode 16.0+ (not legacy) or otherwise (is legacy). """ - xcode = Xcode.get_selected() + xcode = cls._get_selected_xcode() return Version("16") > xcode.version @classmethod diff --git a/tests/models/xctests/test_xcresulttool.py b/tests/models/xctests/test_xcresulttool.py index c7cbd68f..c55765a6 100644 --- a/tests/models/xctests/test_xcresulttool.py +++ b/tests/models/xctests/test_xcresulttool.py @@ -2,7 +2,6 @@ import pytest from codemagic.models.xctests import XcResultTool -from codemagic.models.xctests.xcresulttool import Xcode from packaging.version import Version @@ -12,8 +11,8 @@ ) def test_is_legacy(xcode_version: str): mock_xcode = mock.MagicMock(version=Version(xcode_version)) - with mock.patch.object(Xcode, "get_selected", new=mock.MagicMock(return_value=mock_xcode)): - assert XcResultTool.is_legacy() + with mock.patch.object(XcResultTool, "_get_selected_xcode", new=mock.MagicMock(return_value=mock_xcode)): + assert XcResultTool.is_legacy() is True @pytest.mark.parametrize( @@ -22,5 +21,5 @@ def test_is_legacy(xcode_version: str): ) def test_is_not_legacy(xcode_version: str): mock_xcode = mock.MagicMock(version=Version(xcode_version)) - with mock.patch.object(Xcode, "get_selected", new=mock.MagicMock(return_value=mock_xcode)): - assert not XcResultTool.is_legacy() + with mock.patch.object(XcResultTool, "_get_selected_xcode", new=mock.MagicMock(return_value=mock_xcode)): + assert XcResultTool.is_legacy() is False