mirror of
https://github.com/fedora-python/tox-current-env.git
synced 2024-12-24 17:16:13 +01:00
New Python versions in tests
This commit is contained in:
parent
0d9beab1db
commit
fa84635096
20
.github/workflows/main.yaml
vendored
20
.github/workflows/main.yaml
vendored
@ -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
|
||||||
|
@ -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.
|
||||||
|
1
setup.py
1
setup.py
@ -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",
|
||||||
],
|
],
|
||||||
|
2
tests/fixtures/tox.ini
vendored
2
tests/fixtures/tox.ini
vendored
@ -1,5 +1,5 @@
|
|||||||
[tox]
|
[tox]
|
||||||
envlist = py36,py37,py38,py39
|
envlist = py36,py37,py38,py39,py310
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
deps =
|
deps =
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
2
tox.ini
2
tox.ini
@ -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=
|
||||||
|
Loading…
Reference in New Issue
Block a user