specter-desktop/tests/test_util_version.py
k9ert ef364ce1bc
Chore: refurbish release infrastructure (#2198)
* change release infra

* syntax error

* fix buildscript (hopefully)

* fix pip generation too

* fix build (hopefully)

* fix bloated sdid (mainly MANIFEST.in)

* adjust tests, remove importlib_meta

* fix dependency issue in release jobs

* fix tests and remove pytest.ini entirely

* fix install_noded script

* fix test

* fix tests

* stupid versioin parsing does not work!

* try to fix version guessing

* and again
2023-02-15 14:58:33 +01:00

130 lines
3.6 KiB
Python

from unittest.mock import MagicMock
import pytest
from cryptoadvance.specter.specter_error import SpecterError
from cryptoadvance.specter.util.version import _parse_version, compare
from cryptoadvance.specter.util.version import VersionChecker
from mock import Mock, patch, PropertyMock
@patch(
"cryptoadvance.specter.util.version.VersionChecker._get_latest_version_from_github"
)
@patch(
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
new_callable=PropertyMock,
)
@patch("cryptoadvance.specter.util.version.VersionChecker._get_current_version")
def test_VersionChecker(
mock_get_current_version,
mock_installation_type,
mock_latest,
caplog,
):
mock_latest.return_value = "v9.10.21"
mock_installation_type.return_value = "pip"
mock_get_current_version.return_value = "1.2.3"
# We're mocking cryptoadvance by another package because that package is installed but not cryptoadvance.specter
vc = VersionChecker(name="joke")
assert vc.installation_type == "pip"
asssert = vc._get_current_version() == "1.2.3"
assert vc.current == "1.2.3"
assert vc._get_binary_version() == (
"1.2.3",
"v9.10.21",
)
# Same tests with "app"
mock_installation_type.return_value = "app"
vc = VersionChecker(name="joke")
assert vc.installation_type == "app"
assert vc._get_current_version() == "1.2.3"
assert vc.current == "1.2.3"
assert vc._get_binary_version() == (
"1.2.3",
"v9.10.21",
)
@patch("cryptoadvance.specter.util.version.requests")
@patch(
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
new_callable=PropertyMock,
)
def test_VersionChecker_get_binary_version(
mock_installation_type,
mock_requests_session: MagicMock,
caplog,
):
mock_requests_session.Session().get().json.return_value = {
"releases": {
"1.9.0rc5": None,
"0.10.0": None,
"1.14.0": None,
"1.14.1": None,
"1.2.0": None,
}
}
vc = VersionChecker(name="joke")
assert compare(vc._get_latest_version_from_github(), "1.14.0") == -1
def test_parse_version():
assert _parse_version("v1.5.9") == {
"major": 1,
"minor": 5,
"patch": 9,
"postfix": "",
}
assert _parse_version("1.5.9") == {
"major": 1,
"minor": 5,
"patch": 9,
"postfix": "",
}
assert _parse_version("v3.4.5-pre12") == {
"major": 3,
"minor": 4,
"patch": 5,
"postfix": "pre12",
}
assert _parse_version("3.4.5rc12") == {
"major": 3,
"minor": 4,
"patch": 5,
"postfix": "pre12",
}
assert _parse_version("2.0.0rc20.dev0+ga99ede2a.d20230215") == {
"major": 2,
"minor": 0,
"patch": 0,
"postfix": "pre20",
}
assert _parse_version("2.0.0.dev1897+gcccf4a9") == {
"major": 2,
"minor": 0,
"patch": 0,
"postfix": "",
}
def test_compare():
assert compare("v1.2.3", "v2.2.3") == 1
assert compare("v2.2.3", "v1.2.3") == -1
assert compare("v2.1.3", "v2.2.3") == 1
assert compare("v2.2.3", "v1.1.3") == -1
assert compare("v2.2.3", "v2.2.5") == 1
assert compare("v2.2.5", "v2.2.2") == -1
assert compare("v2.2.5", "v2.2.5") == 0
assert compare("v2.2.5-pre5", "v2.2.5-pre5") == 0
assert compare("v2.2.3-pre2", "v1.2.3") == -1
assert compare("v2.2.3", "v1.2.3-pre2") == -1
assert compare("v2.2.5-pre6", "v2.2.5-pre5") == -1
assert compare("v2.2.5-pre5", "v2.2.5-pre6") == 1