1
0
mirror of https://github.com/fedora-python/tox-current-env.git synced 2024-12-24 00:56:16 +01:00

New Python versions in tests

This commit is contained in:
Lumir Balhar 2022-02-09 10:28:06 +01:00 committed by Lumír 'Frenzy' Balhar
parent 0d9beab1db
commit fa84635096
6 changed files with 40 additions and 27 deletions

View File

@ -21,20 +21,22 @@ jobs:
tox_env: tox_env:
# This information is repeated in tox.ini # This information is repeated in tox.ini
# (see https://github.com/fedora-python/tox-github-action/issues/8) # (see https://github.com/fedora-python/tox-github-action/issues/8)
- py36-tox315 # Generate it by: tox -l | sed "s/^/- /"
- py37-tox315
- py38-tox315
- py39-tox315
- py36-toxrelease - py36-toxrelease
- py37-toxrelease
- py38-toxrelease
- py39-toxrelease
- py36-toxmaster - py36-toxmaster
- py36-toxtox315
- py37-toxrelease
- py37-toxmaster - py37-toxmaster
- py37-toxtox315
- py38-toxrelease
- py38-toxmaster - py38-toxmaster
- py38-toxtox315
- py39-toxrelease
- py39-toxmaster - py39-toxmaster
- py39-toxtox315
- py310-toxrelease
- py310-toxmaster
- py310-toxtox315
# Use GitHub's Linux Docker host # Use GitHub's Linux Docker host
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@ -280,8 +280,8 @@ or send Pull Requests.
Tests Tests
~~~~~ ~~~~~
In order to run the tests, you'll need ``tox`` and Python 3.6, 3.7, 3.8 and 3.9 installed. In order to run the tests, you'll need ``tox`` and Python from 3.6 to 3.10 installed.
The integration tests assume all four are available. The integration tests assume all of them are available.
On Fedora, you just need to ``dnf install tox``. On Fedora, you just need to ``dnf install tox``.
Run ``tox`` to invoke the tests. Run ``tox`` to invoke the tests.

View File

@ -34,6 +34,7 @@ setup(
"Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: CPython",
"Topic :: Software Development :: Testing", "Topic :: Software Development :: Testing",
], ],

View File

@ -1,5 +1,5 @@
[tox] [tox]
envlist = py36,py37,py38,py39 envlist = py36,py37,py38,py39,py310
[testenv] [testenv]
deps = deps =

View File

@ -16,6 +16,7 @@ import pytest
NATIVE_TOXENV = f"py{sys.version_info[0]}{sys.version_info[1]}" NATIVE_TOXENV = f"py{sys.version_info[0]}{sys.version_info[1]}"
NATIVE_SITE_PACKAGES = f"lib/python{sys.version_info[0]}.{sys.version_info[1]}/site-packages"
NATIVE_EXECUTABLE = str(pathlib.Path(sys.executable).resolve()) NATIVE_EXECUTABLE = str(pathlib.Path(sys.executable).resolve())
FIXTURES_DIR = pathlib.Path(__file__).parent / "fixtures" FIXTURES_DIR = pathlib.Path(__file__).parent / "fixtures"
DOT_TOX = pathlib.Path("./.tox") DOT_TOX = pathlib.Path("./.tox")
@ -100,9 +101,9 @@ def is_available(python):
return True return True
needs_py36789 = pytest.mark.skipif( needs_py3678910 = pytest.mark.skipif(
not all((is_available(f"python3.{x}") for x in range(6, 10))), not all((is_available(f"python3.{x}") for x in range(6, 12))),
reason="This test needs python3.6, 3.7, 3.8 and 3.9 available in $PATH", reason="This test needs python3.6, 3.7, 3.8, 3.9 and 3.10 available in $PATH",
) )
@ -113,7 +114,7 @@ def test_native_toxenv_current_env():
assert not (DOT_TOX / NATIVE_TOXENV / "lib").is_dir() assert not (DOT_TOX / NATIVE_TOXENV / "lib").is_dir()
@needs_py36789 @needs_py3678910
def test_all_toxenv_current_env(): def test_all_toxenv_current_env():
result = tox("--current-env", check=False) result = tox("--current-env", check=False)
assert NATIVE_EXEC_PREFIX_MSG in result.stdout.splitlines() assert NATIVE_EXEC_PREFIX_MSG in result.stdout.splitlines()
@ -132,7 +133,7 @@ def test_missing_toxenv_current_env(python):
assert result.returncode > 0 assert result.returncode > 0
@needs_py36789 @needs_py3678910
def test_all_toxenv_current_env_skip_missing(): def test_all_toxenv_current_env_skip_missing():
result = tox("--current-env", "--skip-missing-interpreters", check=False) result = tox("--current-env", "--skip-missing-interpreters", check=False)
assert "InterpreterMismatch:" in result.stdout assert "InterpreterMismatch:" in result.stdout
@ -255,11 +256,14 @@ def test_allenvs_print_deps(print_deps_stdout_arg):
py py
six six
py py
six
py
___________________________________ summary ____________________________________ ___________________________________ summary ____________________________________
py36: commands succeeded py36: commands succeeded
py37: commands succeeded py37: commands succeeded
py38: commands succeeded py38: commands succeeded
py39: commands succeeded py39: commands succeeded
py310: commands succeeded
congratulations :) congratulations :)
""" """
).lstrip() ).lstrip()
@ -278,18 +282,21 @@ def test_allenvs_print_extras(print_extras_stdout_arg):
full full
dev dev
full full
dev
full
___________________________________ summary ____________________________________ ___________________________________ summary ____________________________________
py36: commands succeeded py36: commands succeeded
py37: commands succeeded py37: commands succeeded
py38: commands succeeded py38: commands succeeded
py39: commands succeeded py39: commands succeeded
py310: commands succeeded
congratulations :) congratulations :)
""" """
).lstrip() ).lstrip()
assert result.stdout == expected assert result.stdout == expected
@pytest.mark.parametrize("toxenv", ["py36", "py37", "py38", "py39"]) @pytest.mark.parametrize("toxenv", ["py36", "py37", "py38", "py39", "py310"])
def test_print_deps_to_file(toxenv, tmp_path): def test_print_deps_to_file(toxenv, tmp_path):
depspath = tmp_path / "deps" depspath = tmp_path / "deps"
result = tox("-e", toxenv, "--print-deps-to", str(depspath)) result = tox("-e", toxenv, "--print-deps-to", str(depspath))
@ -304,7 +311,7 @@ def test_print_deps_to_file(toxenv, tmp_path):
assert result.stdout == expected assert result.stdout == expected
@pytest.mark.parametrize("toxenv", ["py36", "py37", "py38", "py39"]) @pytest.mark.parametrize("toxenv", ["py36", "py37", "py38", "py39", "py310"])
def test_print_extras_to_file(toxenv, tmp_path): def test_print_extras_to_file(toxenv, tmp_path):
extraspath = tmp_path / "extras" extraspath = tmp_path / "extras"
result = tox("-e", toxenv, "--print-extras-to", str(extraspath)) result = tox("-e", toxenv, "--print-extras-to", str(extraspath))
@ -323,7 +330,7 @@ def test_print_extras_to_file(toxenv, tmp_path):
def test_allenvs_print_deps_to_file(tmp_path, option): def test_allenvs_print_deps_to_file(tmp_path, option):
depspath = tmp_path / "deps" depspath = tmp_path / "deps"
result = tox(option, str(depspath)) result = tox(option, str(depspath))
assert depspath.read_text().splitlines() == ["six", "py"] * 4 assert depspath.read_text().splitlines() == ["six", "py"] * 5
expected = textwrap.dedent( expected = textwrap.dedent(
""" """
___________________________________ summary ____________________________________ ___________________________________ summary ____________________________________
@ -331,6 +338,7 @@ def test_allenvs_print_deps_to_file(tmp_path, option):
py37: commands succeeded py37: commands succeeded
py38: commands succeeded py38: commands succeeded
py39: commands succeeded py39: commands succeeded
py310: commands succeeded
congratulations :) congratulations :)
""" """
).lstrip() ).lstrip()
@ -341,7 +349,7 @@ def test_allenvs_print_deps_to_file(tmp_path, option):
def test_allenvs_print_extras_to_file(tmp_path, option): def test_allenvs_print_extras_to_file(tmp_path, option):
extraspath = tmp_path / "extras" extraspath = tmp_path / "extras"
result = tox(option, str(extraspath)) result = tox(option, str(extraspath))
assert extraspath.read_text().splitlines() == ["dev", "full"] * 4 assert extraspath.read_text().splitlines() == ["dev", "full"] * 5
expected = textwrap.dedent( expected = textwrap.dedent(
""" """
___________________________________ summary ____________________________________ ___________________________________ summary ____________________________________
@ -349,6 +357,7 @@ def test_allenvs_print_extras_to_file(tmp_path, option):
py37: commands succeeded py37: commands succeeded
py38: commands succeeded py38: commands succeeded
py39: commands succeeded py39: commands succeeded
py310: commands succeeded
congratulations :) congratulations :)
""" """
).lstrip() ).lstrip()
@ -447,16 +456,17 @@ def test_print_deps_only_print_deps_to_file_are_mutually_exclusive():
assert "cannot be used together" in result.stderr assert "cannot be used together" in result.stderr
@needs_py36789 @needs_py3678910
def test_regular_run(): def test_regular_run():
result = tox() result = tox()
lines = sorted(result.stdout.splitlines()[:4]) lines = result.stdout.splitlines()[:5]
assert "/.tox/py36 is the exec_prefix" in lines[0] assert "/.tox/py36 is the exec_prefix" in lines[0]
assert "/.tox/py37 is the exec_prefix" in lines[1] assert "/.tox/py37 is the exec_prefix" in lines[1]
assert "/.tox/py38 is the exec_prefix" in lines[2] assert "/.tox/py38 is the exec_prefix" in lines[2]
assert "/.tox/py39 is the exec_prefix" in lines[3] assert "/.tox/py39 is the exec_prefix" in lines[3]
assert "/.tox/py310 is the exec_prefix" in lines[4]
assert "congratulations" in result.stdout assert "congratulations" in result.stdout
for y in 6, 7, 8, 9: for y in 6, 7, 8, 9, 10:
for pkg in "py", "six", "test": for pkg in "py", "six", "test":
sitelib = DOT_TOX / f"py3{y}/lib/python3.{y}/site-packages" sitelib = DOT_TOX / f"py3{y}/lib/python3.{y}/site-packages"
assert sitelib.is_dir() assert sitelib.is_dir()
@ -470,7 +480,7 @@ def test_regular_run_native_toxenv():
assert "congratulations" in result.stdout assert "congratulations" in result.stdout
for pkg in "py", "six", "test": for pkg in "py", "six", "test":
sitelib = ( sitelib = (
DOT_TOX / f"{NATIVE_TOXENV}/lib/python3.{NATIVE_TOXENV[-1]}/site-packages" DOT_TOX / f"{NATIVE_TOXENV}/{NATIVE_SITE_PACKAGES}"
) )
assert sitelib.is_dir() assert sitelib.is_dir()
assert len(list(sitelib.glob(f"{pkg}-*.dist-info"))) == 1 assert len(list(sitelib.glob(f"{pkg}-*.dist-info"))) == 1
@ -565,7 +575,7 @@ def test_regular_recreate_after_print_deps(print_deps_stdout_arg):
result = tox("-re", NATIVE_TOXENV) result = tox("-re", NATIVE_TOXENV)
assert result.stdout.splitlines()[0] != NATIVE_EXEC_PREFIX_MSG assert result.stdout.splitlines()[0] != NATIVE_EXEC_PREFIX_MSG
sitelib = DOT_TOX / f"{NATIVE_TOXENV}/lib/python3.{NATIVE_TOXENV[-1]}/site-packages" sitelib = DOT_TOX / f"{NATIVE_TOXENV}/{NATIVE_SITE_PACKAGES}"
assert sitelib.is_dir() assert sitelib.is_dir()
assert len(list(sitelib.glob("test-*.dist-info"))) == 1 assert len(list(sitelib.glob("test-*.dist-info"))) == 1

View File

@ -2,7 +2,7 @@
# This information is repeated in .github/workflows/main.yaml # This information is repeated in .github/workflows/main.yaml
# (see https://github.com/fedora-python/tox-github-action/issues/8) # (see https://github.com/fedora-python/tox-github-action/issues/8)
envlist = {py36,py37,py38,py39}-tox{release,master,tox315} envlist = {py36,py37,py38,py39,py310}-tox{release,master,tox315}
[testenv] [testenv]
deps= deps=