Merge pull request #8761 from nicoddemus/version-tuple

This commit is contained in:
Bruno Oliveira 2021-06-14 09:27:22 -03:00 committed by GitHub
commit ced125ad15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 3 deletions

View File

@ -0,0 +1 @@
New :ref:`version-tuple` attribute, which makes it simpler for users to do something depending on the pytest version (such as declaring hooks which are introduced in later versions).

View File

@ -226,6 +226,37 @@ Marks a test function as *expected to fail*.
a new release of a library fixes a known bug). a new release of a library fixes a known bug).
pytest.__version__
~~~~~~~~~~~~~~~~~~
The current pytest version, as a string::
>>> import pytest
>>> pytest.__version__
'7.0.0'
.. _`version-tuple`:
pytest.version_tuple
~~~~~~~~~~~~~~~~~~~~
.. versionadded:: 7.0
The current pytest version, as a tuple::
>>> import pytest
>>> pytest.version_tuple
(7, 0, 0)
For pre-releases, the last component will be a string with the prerelease version::
>>> import pytest
>>> pytest.version_tuple
(7, 0, '0rc1')
Custom marks Custom marks
~~~~~~~~~~~~ ~~~~~~~~~~~~

View File

@ -1,8 +1,9 @@
__all__ = ["__version__"] __all__ = ["__version__", "version_tuple"]
try: try:
from ._version import version as __version__ from ._version import version as __version__, version_tuple
except ImportError: except ImportError: # pragma: no cover
# broken installation, we don't even try # broken installation, we don't even try
# unknown only works because we do poor mans version compare # unknown only works because we do poor mans version compare
__version__ = "unknown" __version__ = "unknown"
version_tuple = (0, 0, "unknown") # type:ignore[assignment]

View File

@ -2,6 +2,7 @@
"""pytest: unit and functional testing with Python.""" """pytest: unit and functional testing with Python."""
from . import collect from . import collect
from _pytest import __version__ from _pytest import __version__
from _pytest import version_tuple
from _pytest._code import ExceptionInfo from _pytest._code import ExceptionInfo
from _pytest.assertion import register_assert_rewrite from _pytest.assertion import register_assert_rewrite
from _pytest.cacheprovider import Cache from _pytest.cacheprovider import Cache
@ -130,6 +131,7 @@ __all__ = [
"Session", "Session",
"set_trace", "set_trace",
"skip", "skip",
"version_tuple",
"TempPathFactory", "TempPathFactory",
"Testdir", "Testdir",
"TempdirFactory", "TempdirFactory",

View File

@ -19,6 +19,12 @@ def test_version_less_verbose(pytester: Pytester, pytestconfig, monkeypatch) ->
result.stderr.fnmatch_lines([f"pytest {pytest.__version__}"]) result.stderr.fnmatch_lines([f"pytest {pytest.__version__}"])
def test_versions():
"""Regression check for the public version attributes in pytest."""
assert isinstance(pytest.__version__, str)
assert isinstance(pytest.version_tuple, tuple)
def test_help(pytester: Pytester) -> None: def test_help(pytester: Pytester) -> None:
result = pytester.runpytest("--help") result = pytester.runpytest("--help")
assert result.ret == 0 assert result.ret == 0