119 lines
4.1 KiB
Python
119 lines
4.1 KiB
Python
"""
|
|
We are checking the python version for the plugin.
|
|
"""
|
|
import sys
|
|
|
|
import pytest
|
|
from attr.exceptions import PythonTooOldError
|
|
|
|
from _ptcsvp.version import check_pytest_version, check_python_version
|
|
|
|
|
|
def build_version(p_version):
|
|
"""
|
|
Build a Version
|
|
"""
|
|
elements = []
|
|
for v_part in p_version.split("."):
|
|
try:
|
|
elements.append(int(v_part))
|
|
except ValueError:
|
|
elements.append(v_part)
|
|
return tuple(elements)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
["p_version", "expect_error"],
|
|
[
|
|
("3.8", None),
|
|
("3.8.1", None),
|
|
("3.8.10", None),
|
|
("3.8.10.ray.x", None),
|
|
("3.9", None),
|
|
("3.9.2", None),
|
|
("3.9.21", None),
|
|
("3.9.21.pre.7", None),
|
|
("3.10", None),
|
|
("3.10.31", None),
|
|
("3.10.31.beta.7", None),
|
|
("3.11", None),
|
|
("3.11.12", None),
|
|
("3.11.12.alpha.4", None),
|
|
("3.12", None),
|
|
("3.12.22", None),
|
|
("3.12.22.final", None),
|
|
("3.12.22.final.0", None),
|
|
("2.7", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("2.7.1", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("2.7.9", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("2.7.9.final", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("2.7.9.final.6", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.1", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.final", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.final.6", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.final.6.777", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.3.final.6.777", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3.7.3.7.final.6.777", (PythonTooOldError, "At least Python 3.8 required")),
|
|
("3", (PythonTooOldError, "At least Python 3.8 required")),
|
|
],
|
|
)
|
|
def test_python_version(mocker, p_version, expect_error):
|
|
"""
|
|
Test python versions
|
|
"""
|
|
mocker.patch.object(sys, "version_info", build_version(p_version))
|
|
if expect_error is not None:
|
|
with pytest.raises(expect_error[0]) as raised_exc:
|
|
check_python_version()
|
|
assert raised_exc.value.args[0] == expect_error[1]
|
|
else:
|
|
check_python_version()
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
["p_version", "expect_error"],
|
|
[
|
|
("7.1", None),
|
|
("7.1.1", None),
|
|
("7.1.1.2", None),
|
|
("7.1.1.2.3", None),
|
|
("7.1.1.455555", None),
|
|
("7.1.1.2-145", None),
|
|
("7.1.1.090909090990", None),
|
|
("7.2", None),
|
|
("7.2.5", None),
|
|
("7.2.5.6", None),
|
|
("7.2.5.6.3333333", None),
|
|
("7.2.5.6.333333333.4", None),
|
|
("8.0", None),
|
|
("8.0.1", None),
|
|
("8.0.beta", None),
|
|
("8.0.beta.3", None),
|
|
("8.0.2.3", None),
|
|
("7.0", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("7.0.1", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("7.0.111111", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("7.0.111111.extra", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("7.0.111111.extra.git-22", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("7", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("6", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("6.1", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("6.1.2", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("6.1.2.final", (RuntimeError, "At least Pytest 7.1 required")),
|
|
("6.1.2.final.3", (RuntimeError, "At least Pytest 7.1 required")),
|
|
],
|
|
)
|
|
def test_pytest_version(mocker, p_version, expect_error):
|
|
"""
|
|
Test pytest versions
|
|
"""
|
|
mocker.patch.object(pytest, "__version__", p_version)
|
|
assert pytest.__version__ == p_version
|
|
if expect_error is not None:
|
|
with pytest.raises(expect_error[0]) as raised_exc:
|
|
check_pytest_version()
|
|
assert raised_exc.value.args[0] == expect_error[1]
|
|
else:
|
|
check_pytest_version()
|