diff --git a/mypy/test/data.py b/mypy/test/data.py index 940776bf7b19a..4a7933c5a01ab 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 cc1b4ff6eeed5..6593dbc45704e 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