From 7288cbeae09df1333e4c9abd6a2b177b7bd9495a Mon Sep 17 00:00:00 2001 From: Ilya Priven Date: Mon, 10 Jul 2023 10:06:44 -0700 Subject: [PATCH] test-version-check --- mypy/test/data.py | 12 +++++++---- mypy/test/meta/test_parse_data.py | 34 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/mypy/test/data.py b/mypy/test/data.py index 940776bf7b19..4a7933c5a01a 100644 --- a/mypy/test/data.py +++ b/mypy/test/data.py @@ -167,13 +167,17 @@ def _item_fail(msg: str) -> NoReturn: version = tuple(int(x) for x in version_str.split(".")) except ValueError: _item_fail(f"{version_str!r} is not a valid python version") - if version < defaults.PYTHON3_VERSION: - _item_fail( - f"Version check against {version}; must be >= {defaults.PYTHON3_VERSION}" - ) if compare_op == ">=": + if version <= defaults.PYTHON3_VERSION: + _item_fail( + f"{arg} always true since minimum runtime version is {defaults.PYTHON3_VERSION}" + ) version_check = sys.version_info >= version elif compare_op == "==": + if version < defaults.PYTHON3_VERSION: + _item_fail( + f"{arg} always false since minimum runtime version is {defaults.PYTHON3_VERSION}" + ) if not 1 < len(version) < 4: _item_fail( f'Only minor or patch version checks are currently supported with "==": {version_str!r}' diff --git a/mypy/test/meta/test_parse_data.py b/mypy/test/meta/test_parse_data.py index cc1b4ff6eeed..6593dbc45704 100644 --- a/mypy/test/meta/test_parse_data.py +++ b/mypy/test/meta/test_parse_data.py @@ -67,3 +67,37 @@ def test_parse_invalid_section(self) -> None: f".test:{expected_lineno}: Invalid section header [unknownsection] in case 'abc'" ) assert expected in actual + + def test_bad_ge_version_check(self) -> None: + # Arrange + data = self._dedent( + """ + [case abc] + s: str + [out version>=3.8] + abc + """ + ) + + # Act + actual = self._run_pytest(data) + + # Assert + assert "version>=3.8 always true since minimum runtime version is (3, 8)" in actual + + def test_bad_eq_version_check(self) -> None: + # Arrange + data = self._dedent( + """ + [case abc] + s: str + [out version==3.7] + abc + """ + ) + + # Act + actual = self._run_pytest(data) + + # Assert + assert "version==3.7 always false since minimum runtime version is (3, 8)" in actual