Compare commits

..

No commits in common. "rawhide" and "epel10.3" have entirely different histories.

7 changed files with 200 additions and 193 deletions

View file

@ -1 +0,0 @@
1

View file

@ -1,4 +1,4 @@
From 49a830fa59f9cbc58920b5052f47089cff2685e7 Mon Sep 17 00:00:00 2001 From 924b03e0446561bbfca9679a44642a1a96dd8f10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <thrnciar@redhat.com> From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <thrnciar@redhat.com>
Date: Fri, 28 Mar 2025 09:44:24 +0100 Date: Fri, 28 Mar 2025 09:44:24 +0100
Subject: [PATCH] Fix tests Subject: [PATCH] Fix tests
@ -9,31 +9,55 @@ Content-Transfer-Encoding: 8bit
Co-Authored-By: Lumir Balhar <lbalhar@redhat.com> Co-Authored-By: Lumir Balhar <lbalhar@redhat.com>
Co-Authored-By: Miro Hrončok <miro@hroncok.cz> Co-Authored-By: Miro Hrončok <miro@hroncok.cz>
--- ---
pyproject.toml | 3 --- pyproject.toml | 11 +----------
src/tox/pytest.py | 14 ++------------ src/tox/pytest.py | 16 +++-------------
tests/test_provision.py | 11 ++++------- tests/test_provision.py | 18 ++----------------
.../package/test_python_package_util.py | 10 ++++++++-- .../package/test_python_package_util.py | 10 ++++++++--
4 files changed, 14 insertions(+), 24 deletions(-) 4 files changed, 14 insertions(+), 41 deletions(-)
diff --git a/pyproject.toml b/pyproject.toml diff --git a/pyproject.toml b/pyproject.toml
index c9ca99c..3a74d6f 100644 index 9b52c2f..335012b 100644
--- a/pyproject.toml --- a/pyproject.toml
+++ b/pyproject.toml +++ b/pyproject.toml
@@ -239,9 +239,6 @@ ini_options.timeout = 30 @@ -82,22 +82,16 @@ dev = [
]
[tool.coverage] test = [
"build[virtualenv]>=1.2.2.post1",
- "covdefaults>=2.3",
- "detect-test-pollution>=1.2",
- "devpi-process>=1.0.2",
- "diff-cover>=9.2",
"distlib>=0.3.9",
"flaky>=3.8.1",
"hatch-vcs>=0.4",
"hatchling>=1.27",
"psutil>=6.1.1",
"pytest>=8.3.4",
- "pytest-cov>=5",
"pytest-mock>=3.14",
"pytest-xdist>=3.6.1",
"re-assert>=1.1",
- "setuptools>=75.3; python_version<='3.8'",
- "setuptools>=75.8; python_version>'3.8'",
+ "setuptools>=75.1",
"time-machine>=2.15; implementation_name!='pypy'",
"wheel>=0.45.1",
]
@@ -223,9 +217,6 @@ report.omit = [
"tests/type_check/*",
]
run.parallel = true run.parallel = true
-run.plugins = [ -run.plugins = [
- "covdefaults", - "covdefaults",
-] -]
paths.source = [
"src", [tool.towncrier]
".tox*/*/lib/python*/site-packages", name = "tox"
diff --git a/src/tox/pytest.py b/src/tox/pytest.py diff --git a/src/tox/pytest.py b/src/tox/pytest.py
index 36aa2f6..7693523 100644 index bca2ad8..973e714 100644
--- a/src/tox/pytest.py --- a/src/tox/pytest.py
+++ b/src/tox/pytest.py +++ b/src/tox/pytest.py
@@ -17,7 +17,6 @@ from typing import TYPE_CHECKING, Any, Protocol, cast @@ -17,7 +17,6 @@ from typing import TYPE_CHECKING, Any, Callable, Iterator, Protocol, Sequence, c
import pytest import pytest
from _pytest.fixtures import SubRequest # noqa: PLC2701 from _pytest.fixtures import SubRequest # noqa: PLC2701
@ -41,18 +65,21 @@ index 36aa2f6..7693523 100644
from virtualenv.info import fs_supports_symlink from virtualenv.info import fs_supports_symlink
import tox.run import tox.run
@@ -285,8 +284,8 @@ class ToxProject: @@ -280,10 +279,10 @@ class ToxProject:
m.setattr(sys, "argv", [sys.executable, "-m", "tox", *list(args)]) m.setattr(sys, "argv", [sys.executable, "-m", "tox", *list(args)])
m.setenv("VIRTUALENV_SYMLINK_APP_DATA", "1") m.setenv("VIRTUALENV_SYMLINK_APP_DATA", "1")
m.setenv("VIRTUALENV_SYMLINKS", "1") m.setenv("VIRTUALENV_SYMLINKS", "1")
- m.setenv("VIRTUALENV_PIP", "embed") - m.setenv("VIRTUALENV_PIP", "embed")
- m.setenv("VIRTUALENV_SETUPTOOLS", "embed")
+ m.setenv("VIRTUALENV_PIP", "bundle") + m.setenv("VIRTUALENV_PIP", "bundle")
if sys.version_info[:2] < (3, 9):
- m.setenv("VIRTUALENV_WHEEL", "embed")
- m.setenv("VIRTUALENV_SETUPTOOLS", "embed")
+ m.setenv("VIRTUALENV_WHEEL", "bundle")
+ m.setenv("VIRTUALENV_SETUPTOOLS", "bundle") + m.setenv("VIRTUALENV_SETUPTOOLS", "bundle")
try: try:
tox_run(args) tox_run(args)
except SystemExit as exception: except SystemExit as exception:
@@ -480,15 +479,6 @@ def enable_pypi_server(monkeypatch: pytest.MonkeyPatch, url: str | None) -> None @@ -476,15 +475,6 @@ def enable_pypi_server(monkeypatch: pytest.MonkeyPatch, url: str | None) -> None
monkeypatch.setenv("PIP_TIMEOUT", str(2)) monkeypatch.setenv("PIP_TIMEOUT", str(2))
@ -69,30 +96,35 @@ index 36aa2f6..7693523 100644
def _invalid_index_fake_port() -> int: def _invalid_index_fake_port() -> int:
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as socket_handler: with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as socket_handler:
diff --git a/tests/test_provision.py b/tests/test_provision.py diff --git a/tests/test_provision.py b/tests/test_provision.py
index 74c27b9..12c99be 100644 index 2030cb9..f706d6c 100644
--- a/tests/test_provision.py --- a/tests/test_provision.py
+++ b/tests/test_provision.py +++ b/tests/test_provision.py
@@ -127,15 +127,13 @@ def _use_pypi_index(pypi_index: Index, monkeypatch: MonkeyPatch) -> None: @@ -98,22 +98,9 @@ def tox_wheels(tox_wheel: Path, tmp_path_factory: TempPathFactory) -> list[Path]
return result
-@pytest.fixture(scope="session")
-def pypi_index_self(pypi_server: IndexServer, tox_wheels: list[Path], demo_pkg_inline_wheel: Path) -> Index:
- with elapsed("start devpi and create index"): # takes around 1s
- self_index = pypi_server.create_index("self", "volatile=False")
- with elapsed("upload tox and its wheels to devpi"): # takes around 3.2s on build
- self_index.upload(*tox_wheels, demo_pkg_inline_wheel)
- return self_index
-
-
@pytest.fixture @pytest.fixture
-def _pypi_index_mirrored(local_pypi_indexes: tuple[Index, Index], monkeypatch: MonkeyPatch) -> None: -def _pypi_index_self(pypi_index_self: Index, monkeypatch: MonkeyPatch) -> None:
- pypi_index_mirrored, _ = local_pypi_indexes - pypi_index_self.use()
- _use_pypi_index(pypi_index_mirrored, monkeypatch) - monkeypatch.setenv("PIP_INDEX_URL", pypi_index_self.url)
+def _pypi_index_mirrored() -> None: - monkeypatch.setenv("PIP_RETRIES", str(2))
- monkeypatch.setenv("PIP_TIMEOUT", str(5))
-
+def _pypi_index_self():
+ pytest.skip("needs devpi-process") + pytest.skip("needs devpi-process")
@pytest.fixture
-def _pypi_index_self(local_pypi_indexes: tuple[Index, Index], monkeypatch: MonkeyPatch) -> None:
- _, pypi_index_self = local_pypi_indexes
- _use_pypi_index(pypi_index_self, monkeypatch)
+def _pypi_index_self() -> None:
+ pytest.skip("needs devpi-process")
def test_provision_requires_nok(tox_project: ToxProjectCreator) -> None: def test_provision_requires_nok(tox_project: ToxProjectCreator) -> None:
@@ -213,7 +211,6 @@ def test_provision_requires_ok(tox_project: ToxProjectCreator, tmp_path: Path) - ini = "[tox]\nrequires = pkg-does-not-exist\n setuptools==1\nskipsdist=true\n"
@@ -161,7 +148,6 @@ def test_provision_requires_ok(tox_project: ToxProjectCreator, tmp_path: Path) -
@pytest.mark.integration @pytest.mark.integration
@ -101,10 +133,10 @@ index 74c27b9..12c99be 100644
ini = "[tox]\nrequires=demo-pkg-inline\n[testenv]\npackage=skip\n[testenv:.tox]\nplatform=wrong_platform" ini = "[tox]\nrequires=demo-pkg-inline\n[testenv]\npackage=skip\n[testenv:.tox]\nplatform=wrong_platform"
proj = tox_project({"tox.ini": ini}) proj = tox_project({"tox.ini": ini})
diff --git a/tests/tox_env/python/virtual_env/package/test_python_package_util.py b/tests/tox_env/python/virtual_env/package/test_python_package_util.py diff --git a/tests/tox_env/python/virtual_env/package/test_python_package_util.py b/tests/tox_env/python/virtual_env/package/test_python_package_util.py
index 4c834ce..74b04f5 100644 index efb5b12..8a57426 100644
--- a/tests/tox_env/python/virtual_env/package/test_python_package_util.py --- a/tests/tox_env/python/virtual_env/package/test_python_package_util.py
+++ b/tests/tox_env/python/virtual_env/package/test_python_package_util.py +++ b/tests/tox_env/python/virtual_env/package/test_python_package_util.py
@@ -16,6 +16,12 @@ if TYPE_CHECKING: @@ -15,6 +15,12 @@ if TYPE_CHECKING:
from importlib.metadata import Distribution, PathDistribution from importlib.metadata import Distribution, PathDistribution
@ -117,10 +149,10 @@ index 4c834ce..74b04f5 100644
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
def pkg_with_extras(pkg_with_extras_project: Path) -> PathDistribution: def pkg_with_extras(pkg_with_extras_project: Path) -> PathDistribution:
@@ -44,10 +50,10 @@ def test_load_dependency_many_extra(pkg_with_extras: PathDistribution) -> None: @@ -43,10 +49,10 @@ def test_load_dependency_many_extra(pkg_with_extras: PathDistribution) -> None:
exp = [ exp = [
Requirement("platformdirs>=4.3.8"), Requirement("platformdirs>=2.1"),
Requirement("colorama>=0.4.6"), Requirement("colorama>=0.4.3"),
- *(sphinx if sys.version_info[0:2] <= (3, 8) else []), - *(sphinx if sys.version_info[0:2] <= (3, 8) else []),
+ *(sphinx if not SETUPTOOLS_75_6 else []), + *(sphinx if not SETUPTOOLS_75_6 else []),
Requirement(f'covdefaults>=1.2; python_version == "2.7" or python_version == "{py_ver}"'), Requirement(f'covdefaults>=1.2; python_version == "2.7" or python_version == "{py_ver}"'),
@ -131,5 +163,5 @@ index 4c834ce..74b04f5 100644
for left, right in zip_longest(result, exp): for left, right in zip_longest(result, exp):
assert isinstance(right, Requirement) assert isinstance(right, Requirement)
-- --
2.54.0 2.49.0

View file

@ -1,99 +0,0 @@
execute:
how: tmt
discover:
- name: rpms_pyproject-rpm-macros
how: shell
url: https://src.fedoraproject.org/rpms/pyproject-rpm-macros.git
tests:
- name: pyproject_pytest
path: /tests
test: ./mocktest.sh python-pytest
- name: pyproject_pluggy
path: /tests
test: ./mocktest.sh python-pluggy
- name: pyproject_openqa_client
path: /tests
test: ./mocktest.sh python-openqa_client
- name: same_repo
how: shell
dist-git-source: true
dist-git-download-only: true
tests:
- name: all_supplementing_pythons
test: ./tests/all_supplementing_pythons.py
- name: mock_with_tests
# Needs cwd to contain downloaded sources, path to mocktes.sh depends on tmt tree structure
test: |
cd $TMT_SOURCE_DIR &&
$TMT_TREE/../discover/rpms_pyproject-rpm-macros/tests/tests/mocktest.sh python-tox --enable-network --with ci_tests
- name: tests_python
how: shell
url: https://src.fedoraproject.org/tests/python.git
tests:
- name: smoke36
path: /smoke
test: VERSION=3.6 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke39
path: /smoke
test: VERSION=3.9 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke310
path: /smoke
test: VERSION=3.10 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke311
path: /smoke
test: VERSION=3.11 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke312
path: /smoke
test: VERSION=3.12 ./venv.sh
- name: smoke313
path: /smoke
test: VERSION=3.13 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke313t
path: /smoke
test: VERSION=3.13t INSTALL_OR_SKIP=true ./venv.sh
- name: smoke314
path: /smoke
test: VERSION=3.14 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke314t
path: /smoke
test: VERSION=3.14t INSTALL_OR_SKIP=true ./venv.sh
- name: smoke315
path: /smoke
test: VERSION=3.15 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke315t
path: /smoke
test: VERSION=3.15t INSTALL_OR_SKIP=true ./venv.sh
- name: smoke_pypy39
path: /smoke
test: PYTHON=pypy3.9 VERSION=3.9 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke_pypy310
path: /smoke
test: PYTHON=pypy3.10 VERSION=3.10 INSTALL_OR_SKIP=true ./venv.sh
- name: smoke_pypy311
path: /smoke
test: PYTHON=pypy3.11 VERSION=3.11 INSTALL_OR_SKIP=true ./venv.sh
prepare:
- name: Install dependencies
how: install
package:
- gcc
- virtualenv
- python3-devel
- python3.12-devel
- python3-tox
- python3-dnf
- mock
- rpmdevtools
- rpm-build
- python3-pyyaml
- rpm
- dnf
- name: Update packages
how: shell
script: dnf upgrade -y
- name: rpm_qa
order: 100
how: shell
script: rpm -qa | sort | tee $TMT_PLAN_DATA/rpmqa.txt

View file

@ -20,7 +20,7 @@
%undefine _py3_shebang_s %undefine _py3_shebang_s
Name: python-tox Name: python-tox
Version: 4.53.1 Version: 4.26.0
Release: %autorelease Release: %autorelease
Summary: Virtualenv-based automation of test activities Summary: Virtualenv-based automation of test activities
@ -28,8 +28,9 @@ License: MIT
URL: https://tox.readthedocs.io/ URL: https://tox.readthedocs.io/
Source: %{pypi_source tox} Source: %{pypi_source tox}
# Remove usage of devpi-process. # Remove dependency on devpi-process.
# Remove coverage options. # Remove dependency on detect-test-pollution.
# Remove coverage-related dependencies.
# Adjust virtualenv environment variables to make it work with our patched virtualenv. # Adjust virtualenv environment variables to make it work with our patched virtualenv.
# Adjust setuptools-version specific ifs to check for setuptools version rather than Python version. # Adjust setuptools-version specific ifs to check for setuptools version rather than Python version.
Patch: fix-tests.patch Patch: fix-tests.patch
@ -43,7 +44,6 @@ BuildRequires: pyproject-rpm-macros >= 1.16
%if %{with tests} %if %{with tests}
BuildRequires: /usr/bin/gcc BuildRequires: /usr/bin/gcc
BuildRequires: /usr/bin/git BuildRequires: /usr/bin/git
BuildRequires: /usr/bin/man
BuildRequires: /usr/bin/pip BuildRequires: /usr/bin/pip
BuildRequires: /usr/bin/pytest BuildRequires: /usr/bin/pytest
BuildRequires: /usr/bin/python BuildRequires: /usr/bin/python
@ -84,13 +84,13 @@ Summary: %{summary}
# the rule that Fedora packages may not require the alternative interpreters.) # the rule that Fedora packages may not require the alternative interpreters.)
%if 0%{?fedora} %if 0%{?fedora}
Recommends: python3.9 Recommends: python3.9
Recommends: python3.10
Recommends: pypy3-devel
%endif %endif
Recommends: python3-devel
# Instead of adding new Pythons here, add `Supplements: tox` to them, see: # Instead of adding new Pythons here, add `Supplements: tox` to them, see:
# https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/thread/NVVUXSVSPFQOWIGBE2JNI67HEO7R63ZQ/ # https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/thread/NVVUXSVSPFQOWIGBE2JNI67HEO7R63ZQ/
# Enable completions by default
Recommends: (tox+completion if (bash-completion or fish or zsh))
%py_provides python3-tox %py_provides python3-tox
%description -n tox %_description %description -n tox %_description
@ -101,19 +101,15 @@ Recommends: (tox+completion if (bash-completion or fish or zsh))
# Upstream updates dependencies too aggressively # Upstream updates dependencies too aggressively
# see https://github.com/tox-dev/tox/pull/2843#discussion_r1065028356 # see https://github.com/tox-dev/tox/pull/2843#discussion_r1065028356
# First, carefully adjust the pins of build and runtime dependencies, sed -ri -e 's/"(packaging|filelock|platformdirs|psutil|pyproject-api|pytest|pytest-mock|pytest-xdist|wheel|pluggy|distlib|cachetools|build\[virtualenv\]|setuptools|flaky)>=.*/"\1",/g' \
# then remove all the >= specifiers from tests deps, whatever they are, -e 's/"(time-machine)>=[^;"]+/"\1/' \
# finally, remove undesired test dependencies. -e 's/"(virtualenv)>=.*/"\1>=20.29",/g' \
sed -ri -e 's/"(filelock|platformdirs|pyproject-api|cachetools|hatch-vcs)>=.*/"\1",/g' \
-e 's/"(hatchling)>=.*/"\1>=1.13",/g' \ -e 's/"(hatchling)>=.*/"\1>=1.13",/g' \
-e 's/"(pluggy)>=.*/"\1>=1.5",/g' \
-e '/^test = \[/,/^\]/ { s/>=[^;"]+// }' \
-e '/^test = \[/,/^\]/ { /"(covdefaults|coverage|detect-test-pollution|devpi-process|diff-cover|pytest-cov)[;"]/d }' \
pyproject.toml pyproject.toml
%generate_buildrequires %generate_buildrequires
export SETUPTOOLS_SCM_PRETEND_VERSION="%{version}" export SETUPTOOLS_SCM_PRETEND_VERSION="%{version}"
%pyproject_buildrequires -r %{?with_tests:-g test} -x completion %pyproject_buildrequires -r %{?with_tests:-g test}
%build %build
@ -125,20 +121,14 @@ export SETUPTOOLS_SCM_PRETEND_VERSION="%{version}"
%pyproject_install %pyproject_install
%pyproject_save_files tox %pyproject_save_files tox
for shell in bash fish zsh; do
register-python-argcomplete --shell $shell tox > tox.$shell
done
# The bash-completion package has tox already, we use the .bash suffix,
# see https://github.com/scop/bash-completion/issues/1628#issuecomment-4380971779
install -Dpm 0644 tox.bash %{buildroot}%{bash_completions_dir}/tox.bash
install -Dpm 0644 tox.fish %{buildroot}%{fish_completions_dir}/tox.fish
install -Dpm 0644 tox.zsh %{buildroot}%{zsh_completions_dir}/_tox
%if %{with tests} %if %{with tests}
%check %check
# A macro that returns a version of the installed Python package, as an RPM v-string, defaults to v"0" # Upstream requires virtualenv >= 20.31 for tests, and no longer sets VIRTUALENV_WHEEL.
%define pyversion() v"%(%{python3} -c 'import importlib.metadata as im; print(im.version("%{1}"))' 2>/dev/null || echo 0)" # To support environments with older virtualenv, we set it manually:
%if v"%(%{python3} -c 'import importlib.metadata as im; print(im.version("virtualenv"))' 2>/dev/null || echo 0)" < v"20.31"
export VIRTUALENV_WHEEL=bundle
%endif
# Skipped tests use internal virtualenv functionality to # Skipped tests use internal virtualenv functionality to
# download wheels which does not work with "bundled" version of wheel in # download wheels which does not work with "bundled" version of wheel in
@ -147,13 +137,21 @@ k="${k-}${k+ and }not test_virtualenv_flipped_settings"
k="${k-}${k+ and }not test_virtualenv_env_ignored_if_set" k="${k-}${k+ and }not test_virtualenv_env_ignored_if_set"
k="${k-}${k+ and }not test_virtualenv_env_used_if_not_set" k="${k-}${k+ and }not test_virtualenv_env_used_if_not_set"
# https://github.com/tox-dev/tox/issues/3290
%if v"0%{?python3_version}" >= v"3.13"
k="${k-}${k+ and }not test_str_convert_ok_py39"
%endif
# https://github.com/tox-dev/tox/commit/698f1dd663 # https://github.com/tox-dev/tox/commit/698f1dd663
# The tests fail with setuptools < 70.1 # The tests fail with setuptools < 70.1
%if %{pyversion setuptools} < v"70.1" %if v"%(%{python3} -c 'import importlib.metadata as im; print(im.version("setuptools"))' 2>/dev/null || echo 0)" < v"70.1"
k="${k-}${k+ and }not test_result_json_sequential" k="${k-}${k+ and }not test_result_json_sequential"
k="${k-}${k+ and }not test_setuptools_package" k="${k-}${k+ and }not test_setuptools_package"
k="${k-}${k+ and }not test_skip_develop_mode" k="${k-}${k+ and }not test_skip_develop_mode"
k="${k-}${k+ and }not test_tox_install_pkg_sdist" k="${k-}${k+ and }not test_tox_install_pkg_sdist"
%else
# this test fails with virtualenv < 20.31 with bundled wheel
test -z $VIRTUALENV_WHEEL || k="${k-}${k+ and }not test_result_json_sequential"
%endif %endif
# The following tests either need internet connection or installed tox # The following tests either need internet connection or installed tox
@ -164,10 +162,7 @@ k="${k-}${k+ and }not keyboard_interrupt"
k="${k-}${k+ and }not test_call_as_module" k="${k-}${k+ and }not test_call_as_module"
k="${k-}${k+ and }not test_call_as_exe" k="${k-}${k+ and }not test_call_as_exe"
k="${k-}${k+ and }not test_run_installpkg_targz" k="${k-}${k+ and }not test_run_installpkg_targz"
k="${k-}${k+ and }not test_pyproject_installpkg_pep517_envs" test -z $VIRTUALENV_WHEEL && k="${k-}${k+ and }not test_result_json_sequential"
k="${k-}${k+ and }not test_pylock_install_integration"
k="${k-}${k+ and }not test_interrupt_post_commands"
k="${k-}${k+ and }not test_second_interrupt_stops_post_commands"
%endif %endif
%pytest -v -n auto -k "${k-}" --run-integration %pytest -v -n auto -k "${k-}" --run-integration
@ -176,12 +171,6 @@ k="${k-}${k+ and }not test_second_interrupt_stops_post_commands"
%files -n tox -f %{pyproject_files} %files -n tox -f %{pyproject_files}
%{_bindir}/tox %{_bindir}/tox
%{_mandir}/man1/tox.1*
%pyproject_extras_subpkg -n tox completion
%{bash_completions_dir}/tox.bash
%{fish_completions_dir}/tox.fish
%{zsh_completions_dir}/_tox
%changelog %changelog

View file

@ -1 +1 @@
SHA512 (tox-4.53.1.tar.gz) = b11df73e47c5c63124b9e7e11c44a8c3c39b40d177b411bcbd4218a9875fd658a32712083102ef2a1cae6e75939cd32f7caa00551de753f30f58f7f52ab4e5dd SHA512 (tox-4.26.0.tar.gz) = ad2e311cd63c45a079b8c230a2feb364270b7a8bcf44b626385f8e442c6683ae841b3f34417b504f927608685a254fef3767d832fb5cfcc324c9cbf6ff7ea997

View file

@ -8,7 +8,7 @@ See https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproje
This script: This script:
1) figures out all packages in the enabled repositories supplementing tox 1) figures out all packages in the enabled repositories supplementing tox
2) ensures there is a venv.sh test for each of them in plan.fmf 2) ensures there is a venv.sh test for each of them in tests.yml
That way, when we change tox (update, patch, etc.), That way, when we change tox (update, patch, etc.),
we will always test it with all Pythons that supplement it. we will always test it with all Pythons that supplement it.
@ -34,18 +34,16 @@ def parse_python_test_arg(command):
# First, construct a set of various Pythons we test, e.g. {python3.10, python3.7, pypy3.6, ...} # First, construct a set of various Pythons we test, e.g. {python3.10, python3.7, pypy3.6, ...}
tested_pythons = set() tested_pythons = set()
with open('plan.fmf') as f: with open('tests.yml') as f:
plan_fmf = yaml.safe_load(f) tests_yml = yaml.safe_load(f)
# this nested structure access is quite fragile, # this nested structure access is quite fragile,
# but at least it should fail the test if we reach to a wrong place # but at least it should fail the test if we reach to a wrong place
for discover_section in plan_fmf['discover']: for test in tests_yml[-1]['roles'][0]['tests']:
if discover_section['name'] != 'tests_python': for value in test.values():
continue run = value['run']
for test in discover_section['tests']: if run.endswith('./venv.sh'):
test_cmd = test['test'] tested_pythons.add(parse_python_test_arg(run))
if test_cmd.endswith('./venv.sh'): print('Tested Pythons found in tests.yml:', file=sys.stderr)
tested_pythons.add(parse_python_test_arg(test_cmd))
print('Tested Pythons found in plan.fmf:', file=sys.stderr)
for python in sorted(tested_pythons): for python in sorted(tested_pythons):
print(' ', python, file=sys.stderr) print(' ', python, file=sys.stderr)
@ -66,13 +64,10 @@ for nvra in supplementing_pkgs:
# We use this hack to treat -devel and -libs packages as if they were not such # We use this hack to treat -devel and -libs packages as if they were not such
# We also convert the freethreading packages to the exectuable name
def normalize_name(pkgname): def normalize_name(pkgname):
for suffix in '-devel', '-libs': for suffix in '-devel', '-libs':
if pkgname.endswith(suffix): if pkgname.endswith(suffix):
pkgname = pkgname.removesuffix(suffix) return pkgname.removesuffix(suffix)
if pkgname.endswith('-freethreading'):
pkgname = pkgname.removesuffix('-freethreading') + 't'
return pkgname return pkgname

91
tests/tests.yml Normal file
View file

@ -0,0 +1,91 @@
---
- hosts: localhost
tags:
- classic
tasks:
- dnf:
name: "*"
state: latest
- hosts: localhost
tags:
- classic
pre_tasks:
- import_role:
name: standard-test-source
vars:
fetch_only: True
roles:
- role: standard-test-basic
repositories:
- repo: "https://src.fedoraproject.org/tests/python.git"
dest: "python"
- repo: "https://src.fedoraproject.org/rpms/pyproject-rpm-macros.git"
dest: "pyproject-rpm-macros"
tests:
- mock_with_tests:
dir: .
run: pyproject-rpm-macros/tests/mocktest.sh python-tox --enable-network --with ci_tests
- all_supplementing_pythons:
dir: tests
run: ./all_supplementing_pythons.py
- smoke27:
dir: python/smoke
run: VERSION=2.7 INSTALL_OR_SKIP=true METHOD=virtualenv TOX_REQUIRES="virtualenv<20.22.0" ./venv.sh
- smoke36:
dir: python/smoke
run: VERSION=3.6 INSTALL_OR_SKIP=true TOX_REQUIRES="virtualenv<20.22.0" ./venv.sh
- smoke39:
dir: python/smoke
run: VERSION=3.9 INSTALL_OR_SKIP=true ./venv.sh
- smoke310:
dir: python/smoke
run: VERSION=3.10 INSTALL_OR_SKIP=true ./venv.sh
- smoke311:
dir: python/smoke
run: VERSION=3.11 INSTALL_OR_SKIP=true ./venv.sh
- smoke312:
dir: python/smoke
run: VERSION=3.12 ./venv.sh
- smoke313:
dir: python/smoke
run: VERSION=3.13 INSTALL_OR_SKIP=true ./venv.sh
- smoke313t:
dir: python/smoke
run: VERSION=3.13t INSTALL_OR_SKIP=true ./venv.sh
- smoke314:
dir: python/smoke
run: VERSION=3.14 INSTALL_OR_SKIP=true ./venv.sh
- smoke314t:
dir: python/smoke
run: VERSION=3.14t INSTALL_OR_SKIP=true ./venv.sh
- smoke_pypy39:
dir: python/smoke
run: PYTHON=pypy3.9 VERSION=3.9 INSTALL_OR_SKIP=true ./venv.sh
- smoke_pypy310:
dir: python/smoke
run: PYTHON=pypy3.10 VERSION=3.10 INSTALL_OR_SKIP=true ./venv.sh
- smoke_pypy311:
dir: python/smoke
run: PYTHON=pypy3.11 VERSION=3.11 INSTALL_OR_SKIP=true ./venv.sh
- pyproject_pytest:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-pytest
- pyproject_pluggy:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-pluggy
- pyproject_openqa_client:
dir: pyproject-rpm-macros/tests
run: ./mocktest.sh python-openqa_client
required_packages:
- gcc
- virtualenv
- python3-devel
- python3.12-devel
- python3-tox
- python3-dnf
- mock
- rpmdevtools
- rpm-build
- python3-pyyaml