diff --git a/backend/test_version_checker.py b/backend/test_version_checker.py index c2af8a4d..38648f61 100644 --- a/backend/test_version_checker.py +++ b/backend/test_version_checker.py @@ -1,5 +1,5 @@ import pytest -from version_checker import VersionChecker +from version_checker import VersionChecker, is_semver_greater from unittest.mock import MagicMock, mock_open @@ -53,3 +53,32 @@ def test_get_latest_version_with_bad_api_response_returns_file_version( def test_get_latest_version_with_api_url(mock_api_response): vc = VersionChecker(api_url="http://api.url") assert vc.get_latest_version() == "2.0.0" + + +def test_versions_higher(): + assert is_semver_greater("1.0.0", "0.0.0") == True + assert is_semver_greater("0.1.0", "0.0.0") == True + assert is_semver_greater("0.0.1", "0.0.0") == True + assert is_semver_greater("0.2.0", "0.0.9") == True + assert is_semver_greater("0.0.10", "0.0.9") == True + assert is_semver_greater("1.0.0", "0.99.99") == True + assert is_semver_greater("1.12.0", "1.11.9") == True + + +def test_versions_lower(): + assert is_semver_greater("0.2.0", "1.0.0") == False + assert is_semver_greater("0.0.9", "0.1.0") == False + assert is_semver_greater("0.0.9", "0.0.10") == False + assert is_semver_greater("1.11.9", "1.12.0") == False + assert is_semver_greater("1.11.9", "1.11.10") == False + assert is_semver_greater("0.99.99", "1.0.0") == False + + +def test_versions_equal(): + assert is_semver_greater("0.0.0", "0.0.0") == False + assert is_semver_greater("1.0.0", "1.0.0") == False + assert is_semver_greater("0.1.0", "0.1.0") == False + assert is_semver_greater("0.0.1", "0.0.1") == False + assert is_semver_greater("0.2.0", "0.2.0") == False + assert is_semver_greater("0.0.10", "0.0.10") == False + assert is_semver_greater("1.12.3", "1.12.3") == False diff --git a/backend/version_checker.py b/backend/version_checker.py index 85c9c0f5..004ffa66 100644 --- a/backend/version_checker.py +++ b/backend/version_checker.py @@ -16,3 +16,8 @@ def read_version(self): def get_latest_version(self): response = requests.get(self.api_url).json() return response.get("tag_name", self.read_version()).strip("v") + +def is_semver_greater(v1, v2): + v1 = list(map(int, v1.split("."))) + v2 = list(map(int, v2.split("."))) + return v1 > v2 \ No newline at end of file