public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/python-exabgp] rawhide: Update to version 5.0.13 (resolves rhbz#2521279)
@ 2026-08-25 16:57 Gary Buhrmaster
  0 siblings, 0 replies; only message in thread
From: Gary Buhrmaster @ 2026-08-25 16:57 UTC (permalink / raw)
  To: git-commits

          A new commit has been pushed.

          Repo   : rpms/python-exabgp
          Branch : rawhide
          Commit : da6529848af5ac5031ba1f13690e32c43ee4f4f3
          Author : Gary Buhrmaster <gary.buhrmaster@gmail.com>
          Date   : 2026-08-25T16:57:14+00:00
          Stats  : +100/-28 in 5 file(s)
          URL    : https://src.fedoraproject.org/rpms/python-exabgp/c/da6529848af5ac5031ba1f13690e32c43ee4f4f3?branch=rawhide

          Log:
          Update to version 5.0.13 (resolves rhbz#2521279)

remove patch for PEP 639 compliance (fixed upstream in commit 9a35bf07)
Add (post release) upstream commit 89ce57d to fix pytest failures
Update pytest invokation as suggested by upstream

---
diff --git a/.gitignore b/.gitignore
index e0e30eb..e3f26bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,4 @@
 /python-exabgp-5.0.10.tar.gz
 /python-exabgp-5.0.11.tar.gz
 /python-exabgp-5.0.12.tar.gz
+/python-exabgp-5.0.13.tar.gz

diff --git a/0001-license.patch b/0001-license.patch
deleted file mode 100644
index 0b7ce57..0000000
--- a/0001-license.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -u exabgp-5.0.12/pyproject.toml exabgp-5.0.12-NEW/pyproject.toml
---- exabgp-5.0.12/pyproject.toml	2026-08-20 16:12:33.000000000 +0000
-+++ exabgp-5.0.12-NEW/pyproject.toml	2026-08-20 18:58:13.823148161 +0000
-@@ -5,9 +5,8 @@
- authors = [
- 	{ name = "Thomas Mangin", email = "thomas.mangin@exa-networks.co.uk" },
- ]
--# the table form, not the PEP 639 SPDX string: this branch supports Python 3.8,
--# where pip can only install setuptools < 77, which rejects the string form
--license = { text = 'BSD-3-Clause' }
-+license = 'BSD-3-Clause'
-+license-files = ['LICENCE.txt']
- requires-python = ">=3.8.1"
- keywords = [
- 	'bgp',
-@@ -27,7 +26,6 @@
- 	'Environment :: Console',
- 	'Intended Audience :: System Administrators',
- 	'Intended Audience :: Telecommunications Industry',
--	'License :: OSI Approved :: BSD License',
- 	'Operating System :: POSIX',
- 	'Operating System :: MacOS :: MacOS X',
- 	'Programming Language :: Python',

diff --git a/0001-pytest-fix.patch b/0001-pytest-fix.patch
new file mode 100644
index 0000000..1fb6a63
--- /dev/null
+++ b/0001-pytest-fix.patch
@@ -0,0 +1,84 @@
+diff --git a/tests/unit/test_gate_exit_codes.py b/tests/unit/test_gate_exit_codes.py
+index 2434d4e68..30a548594 100644
+--- a/tests/unit/test_gate_exit_codes.py
++++ b/tests/unit/test_gate_exit_codes.py
+@@ -33,6 +33,12 @@ its exit code.
+ compat_gate is deliberately not driven here. It needs a git tag and a subprocess
+ per family, so exercising it costs minutes; its cannot-run paths were verified when
+ they were written, and the three below are the ones a change to this tree can break.
++
++The success controls use a planted clean tree rather than this repository. Running
++check_tests_run on the real tree made this unit test collect the fuzz and integration
++suites in a nested pytest process. That made tests/unit require Hypothesis, even though
++no unit test imports it. The 5.0 branch was excluded from the unit workflow, and the
++workflow's full dependency set would have masked the leak even if it had run.
+ """
+ 
+ import shutil
+@@ -50,13 +56,37 @@ CANNOT_RUN = 2
+ # Gates whose cannot-run path is reachable by giving them nothing to look at.
+ GATES = ('check_tiger_style', 'check_tests_run', 'check_sweep_floors')
+ 
++# Gates with a cheap success path which can be proved on a controlled tree.
++CLEAN_GATES = ('check_tiger_style', 'check_tests_run')
++
++
++def copy_gates(tree, gates):
++    (tree / 'qa' / 'bin').mkdir(parents=True)
++    for name in gates:
++        shutil.copy(QA_BIN / name, tree / 'qa' / 'bin' / name)
++
+ 
+ @pytest.fixture
+ def empty_tree(tmp_path):
+     """A tree holding the gates and no source, so every gate is unable to run"""
+-    (tmp_path / 'qa' / 'bin').mkdir(parents=True)
+-    for name in GATES:
+-        shutil.copy(QA_BIN / name, tmp_path / 'qa' / 'bin' / name)
++    copy_gates(tmp_path, GATES)
++    return tmp_path
++
++
++@pytest.fixture
++def clean_tree(tmp_path):
++    """The smallest tree which gives the cheap gates a meaningful clean run."""
++    copy_gates(tmp_path, CLEAN_GATES)
++
++    tests = tmp_path / 'tests'
++    tests.mkdir()
++    (tests / 'test_planted.py').write_text('def test_planted():\n    pass\n')
++
++    source = tmp_path / 'src' / 'exabgp'
++    source.mkdir(parents=True)
++    for number in range(250):
++        (source / f'module_{number}.py').touch()
++
+     return tmp_path
+ 
+ 
+@@ -108,15 +138,19 @@ class TestTheSetupIsRealRatherThanVacuous:
+         assert not (empty_tree / 'src').exists()
+         assert not (empty_tree / 'tests').exists()
+ 
+-    def test_the_same_gates_exit_zero_on_the_real_tree(self) -> None:
+-        """Otherwise exit 2 might be all these gates ever do
++    @pytest.mark.parametrize('gate', CLEAN_GATES)
++    def test_the_same_gates_exit_zero_on_a_clean_tree(self, gate, clean_tree) -> None:
++        """Otherwise exit 2 might be all these gates ever do.
+ 
+         A gate hardcoded to return 2 passes every assertion above. This is the half
+         that says the cannot-run path is a path rather than the destination.
+ 
++        The tree is planted rather than the repository itself. A unit test which asks
++        check_tests_run to collect the whole repository silently makes optional fuzz
++        dependencies mandatory for tests/unit.
++
+         check_sweep_floors is excluded from this one only: it drives pytest once per
+         sweeping file, so a clean run costs about a minute, and CI runs it directly.
+         """
+-        for gate in ('check_tiger_style', 'check_tests_run'):
+-            result = run(gate, ROOT)
+-            assert result.returncode == 0, f'{gate}: {result.stdout}{result.stderr}'
++        result = run(gate, clean_tree)
++        assert result.returncode == 0, f'{gate}: {result.stdout}{result.stderr}'
+

diff --git a/python-exabgp.spec b/python-exabgp.spec
index 921e838..7001895 100644
--- a/python-exabgp.spec
+++ b/python-exabgp.spec
@@ -1,5 +1,5 @@
 Name:           python-exabgp
-Version:        5.0.12
+Version:        5.0.13
 Release:        1%{?dist}
 Summary:        The BGP swiss army knife of networking (Library)
 
@@ -11,8 +11,8 @@ Source2:        exabgp.tmpfiles.exabgp.conf
 Source3:        exabgp.systemd.exabgp.service
 Source4:        exabgp.systemd.exabgp@.service
 
-# Patch for PEP 639 compliance for the exabgp 5.0 branch
-Patch0001:      0001-license.patch
+# Post release fix for test harness
+Patch0001:      0001-pytest-fix.patch
 
 BuildArch:      noarch
 
@@ -31,6 +31,10 @@ BuildRequires:  python3dist(pytest-cov)
 BuildRequires:  python3dist(pytest-asyncio)
 BuildRequires:  python3dist(pygments)
 BuildRequires:  python3dist(psutil)
+BuildRequires:  python3dist(pytest-timeout)
+BuildRequires:  python3dist(pytest-benchmark)
+# Currently a non-required test dependency
+BuildRequires:  python3dist(hypothesis)
 
 %description -n python3-exabgp
 The BGP swiss army knife of networking
@@ -90,7 +94,7 @@ rm -rf %{buildroot}%{_usr}/etc
 
 %check
 %pyproject_check_import -t
-%pytest --cov --cov-reset tests/unit
+exabgp_log_enable=false %pytest --ignore=tests/fuzz --cov --cov-reset ./tests
 
 %pre -n exabgp
 %sysusers_create_package exabgp %{SOURCE1}
@@ -124,6 +128,12 @@ rm -rf %{buildroot}%{_usr}/etc
 %{_tmpfilesdir}/exabgp.conf
 
 %changelog
+* Tue Aug 25 2026 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 5.0.13-1
+- Update to version 5.0.13 (resolves rhbz#2521279)
+  remove patch for PEP 639 compliance (fixed upstream in commit 9a35bf07)
+  Add (post release) upstream commit 89ce57d to fix pytest failures
+  Update pytest invokation as suggested by upstream
+
 * Thu Aug 20 2026 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 5.0.12-1
 - Update to version 5.0.12 (resolves rhbz#2520630)
 - Add patch for PEP 639 compliance

diff --git a/sources b/sources
index 6cff138..2a1a0d8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (python-exabgp-5.0.12.tar.gz) = 94f3f749875fa018333d0b948bfefd21e20acc42352678c356bbb7a7364ef76f2383e1c366c26189d22f57742db7bd7af5c25ecbb05dd0ab4324750ec0a23895
+SHA512 (python-exabgp-5.0.13.tar.gz) = db0e078b89d2f2eaa88c2f517672f8143fe3ec18a4bd6dddaa9d950fff235405ce8ed4c6136866372d86d39374a681c700e02e5aca88e5a5874da7dbf554bcd1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-25 16:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-25 16:57 [rpms/python-exabgp] rawhide: Update to version 5.0.13 (resolves rhbz#2521279) Gary Buhrmaster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox