Files
qdrant-client/tests/test_common.py
Alex Ermolaev 3b4a657d74 fix: use the same name for check_compatibility flag in args, warnings and tests (#898)
* Replace `check_version` with `check_compatibility` in warnings and tests to fit flag name

* refactoring: refactor warnings

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2025-02-17 22:38:59 +01:00

67 lines
2.5 KiB
Python

import pytest
from qdrant_client.common.version_check import is_compatible, parse_version
@pytest.mark.parametrize(
"client_version, server_version, expected_result",
[
("1.9.3.dev0", "2.8.1.dev12-something", False),
("1.9", "2.8", False),
("1", "2", False),
("1.9.0", "2.9.0", False),
("1.1.0", "1.2.9", True),
("1.2.7", "1.1.8.dev0", True),
("1.2.1", "1.2.29", True),
("1.2.0", "1.2.0", True),
("1.2.0", "1.4.0", False),
("1.4.0", "1.2.0", False),
("1.9.0", "3.7.0", False),
("3.0.0", "1.0.0", False),
(None, "1.0.0", False),
("1.0.0", None, False),
(None, None, False),
],
ids=[
"Diff between major versions = 1, negative",
"Diff between major versions = 1, only major and minor, negative",
"Diff between major versions = 1, only major, negative",
"Diff between major versions = 1, minor versions are the same, negative",
"Diff between major versions == 0, diff between minor versions == 1 (server > client), positive",
"Diff between major versions == 0, diff between minor versions == 1 (client > server), positive",
"Diff between major versions == 0, diff between minor versions == 0, positive",
"Same versions, positive",
"Diff between major versions == 0, diff between minor versions > 1 (server > client), negative",
"Diff between major versions == 0, diff between minor versions > 1 (client > server), negative",
"Diff between major versions > 1 (server > client), negative",
"Diff between major versions > 1 (client > server), negative",
"Client version is None, negative",
"Server version is None, negative",
"Both versions are None, negative",
],
)
def test_check_compatibility(client_version, server_version, expected_result):
assert (
is_compatible(client_version=client_version, server_version=server_version)
is expected_result
)
@pytest.mark.parametrize(
"input_version",
["1", "1.", ".1", ".1.", "1.None.1", "None.0.1", None, ""],
ids=[
"Only major part",
"Only major part with dot",
"Only minor part",
"Only minor part with dot",
"Minor part is not a number",
"Major part is not a number",
"Version is None",
"Version is empty",
],
)
def test_parse_versions_value_error(input_version):
with pytest.raises(ValueError):
parse_version(input_version)