Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-gevent for openSUSE:Factory checked in at 2024-01-12 23:44:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-gevent (Old) and /work/SRC/openSUSE:Factory/.python-gevent.new.21961 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gevent" Fri Jan 12 23:44:45 2024 rev:49 rq:1138212 version:23.9.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-gevent/python-gevent.changes 2023-11-28 22:19:15.329458821 +0100 +++ /work/SRC/openSUSE:Factory/.python-gevent.new.21961/python-gevent.changes 2024-01-12 23:45:02.845764825 +0100 @@ -1,0 +2,15 @@ +Wed Jan 10 22:40:39 UTC 2024 - Ben Greiner <c...@bnavigator.de> + +- Clean obsolete old python and old distribution directives + * Only 15.5+ with the sle15 python module and Tumbleweed have the + required Python 3.8+ + * Drop fix-no-return-in-nonvoid-function.patch +- Update test suite execution + * Use -u-network flag to disable network tests + * Add gevent-opensuse-nocolor-tests.patch -- Avoid colorization + of test output in obs runners + * Add gevent-fix-unittest-returncode-py312-c1.patch and + gevent-fix-unittest-returncode-py312-c2.patch + gh#gevent/gevent#2012 + +------------------------------------------------------------------- Old: ---- fix-no-return-in-nonvoid-function.patch New: ---- gevent-fix-unittest-returncode-py312-c1.patch gevent-fix-unittest-returncode-py312-c2.patch gevent-opensuse-nocolor-tests.patch BETA DEBUG BEGIN: Old: required Python 3.8+ * Drop fix-no-return-in-nonvoid-function.patch - Update test suite execution BETA DEBUG END: BETA DEBUG BEGIN: New: of test output in obs runners * Add gevent-fix-unittest-returncode-py312-c1.patch and gevent-fix-unittest-returncode-py312-c2.patch New: * Add gevent-fix-unittest-returncode-py312-c1.patch and gevent-fix-unittest-returncode-py312-c2.patch gh#gevent/gevent#2012 New: * Use -u-network flag to disable network tests * Add gevent-opensuse-nocolor-tests.patch -- Avoid colorization of test output in obs runners BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-gevent.spec ++++++ --- /var/tmp/diff_new_pack.OWELjM/_old 2024-01-12 23:45:03.525789714 +0100 +++ /var/tmp/diff_new_pack.OWELjM/_new 2024-01-12 23:45:03.525789714 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-gevent # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,13 +16,14 @@ # -%define modname gevent # on TW, gevent is able to use system libev, Leaps et.al. need the bundled version %if 0%{?suse_version} <= 1500 %define use_bundled_libev 1 %else %define use_bundled_libev 0 %endif +# get colored test output on local osc build +%bcond_with colortest %{?sle15_python_module_pythons} Name: python-gevent Version: 23.9.1 @@ -31,13 +32,14 @@ License: MIT Group: Development/Languages/Python URL: https://www.gevent.org/ -Source0: https://github.com/gevent/%{modname}/archive/%{version}.tar.gz#/%{modname}-%{version}.tar.gz +Source0: https://github.com/gevent/gevent/archive/%{version}.tar.gz#/gevent-%{version}.tar.gz Source100: %{name}-rpmlintrc -# gcc7 for 15.1 produces no-return-in-nonvoid-function, but the same compiler for 15.2 not -# usually, as long as no return value is used, this shouldn't be treated as an error -# let's selectively disable the warning around the offending code -Patch0: fix-no-return-in-nonvoid-function.patch -BuildRequires: %{python_module Cython} +# PATCH-FIX-UPSTREAM gevent-fix-unittest-returncode-py312.patch gh#gevent/gevent#2012 +Patch0: https://github.com/gevent/gevent/commit/86ea07e273ed7938446688cef5492d48034b7ddb.patch#/gevent-fix-unittest-returncode-py312-c1.patch +Patch1: https://github.com/gevent/gevent/commit/f69bc6b872b81a3dbc704c83147822fd7009995d.patch#/gevent-fix-unittest-returncode-py312-c2.patch +# PATCH-FEATURE-OPENSUSE gevent-opensuse-nocolor-tests.patch c...@bnavigator.de -- Avoid colorization of test output in obs runners +Patch2: gevent-opensuse-nocolor-tests.patch +BuildRequires: %{python_module Cython >= 3.0.2} BuildRequires: %{python_module cffi} BuildRequires: %{python_module devel >= 3.8} BuildRequires: %{python_module dnspython} @@ -46,6 +48,7 @@ BuildRequires: %{python_module pip} BuildRequires: %{python_module psutil} BuildRequires: %{python_module requests} +BuildRequires: %{python_module testsuite} BuildRequires: %{python_module wheel} BuildRequires: %{python_module zope.event} BuildRequires: %{python_module zope.interface} @@ -54,13 +57,11 @@ BuildRequires: netcfg BuildRequires: pkgconfig BuildRequires: python-rpm-macros -BuildRequires: python3-testsuite BuildRequires: pkgconfig(libcares) BuildRequires: pkgconfig(libuv) Requires: python-cffi Requires: python-dnspython Requires: python-greenlet >= 3.0.0 -Requires: python-importlib-metadata Requires: python-requests Requires: python-zope.event Requires: python-zope.interface @@ -103,10 +104,7 @@ %endif %prep -%setup -q -n gevent-%{version} -%if 0%{?sle_version} <= 150100 && 0%{?is_opensuse} -%patch0 -p1 -%endif +%autosetup -p1 -n gevent-%{version} sed -i -e '1s!bin/env python!bin/python!' examples/*.py sed -i -e '1{/bin.*python/d}' src/gevent/tests/*.py @@ -128,30 +126,22 @@ %python_expand %fdupes %{buildroot}%{$python_sitearch} %check -%{python_expand # -# create ignore list of tests, e.g. because they reach out to the net +# https://www.gevent.org/development/running_tests.html +# +# create ignore list of tests, e.g. because they reach out to the net despite -u-network cat << EOF > skip_tests.txt test__core_stat.py -%if 0%{?sle_version} <= 150200 && 0%{?is_opensuse} -test__destroy_default_loop.py -test__example_echoserver.py -test_socket.py -%endif -test__examples.py # this one fails occasionally with: Address already in use: ('127.0.0.1', 16000) test__example_portforwarder.py +# no dns resolver in obs test__getaddrinfo_import.py test__resolver_dnspython.py -test__socket_dns.py -test__issue1686.py # Flaky tests in s390x architecture %ifarch s390x test__util.py %endif EOF -if [ %{$python_version_nodots} -lt 37 ]; then - echo "test__threading_2.py" >> skip_tests.txt -fi + export GEVENT_RESOLVER=thread # Setting the TRAVIS environment variable makes some different configuration # for tests that use the network so they don't fail on travis (or obs) @@ -163,10 +153,14 @@ # Relax the crypto policies for the test-suite export OPENSSL_SYSTEM_CIPHERS_OVERRIDE=xyz_nonexistent_file export OPENSSL_CONF='' -# don't bother with python2 tests -if [ "${python_flavor}" != "python2" ]; then - PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m gevent.tests --ignore skip_tests.txt -fi +%{!?_with_colortest:export TEST_NOCOLOR=1} +%{python_expand # +export PYTHONPATH=%{buildroot}%{$python_sitearch} +$python -m gevent.tests \ + --ignore skip_tests.txt \ + -u-network \ + --verbose \ + %{?jobs:--processes %jobs} } %files %{python_files} ++++++ gevent-fix-unittest-returncode-py312-c1.patch ++++++ >From 86ea07e273ed7938446688cef5492d48034b7ddb Mon Sep 17 00:00:00 2001 From: Jason Madden <jamad...@gmail.com> Date: Wed, 13 Dec 2023 14:43:29 -0600 Subject: [PATCH] Compensate for Python 3.12.1 failing unittests of all tests are skipped. --- .github/workflows/ci.yml | 5 ++++- src/gevent/testing/patched_tests_setup.py | 11 +++++++++++ src/gevent/testing/testrunner.py | 17 ++++++++++++++++- src/gevent/testing/util.py | 3 ++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 64088705d..3574ed327 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,10 @@ jobs: - name: Set coverage status # coverage is too slow on PyPy. We can't submit it from macOS (see that action), # so don't bother taking the speed hit there either. - if: ${{ !startsWith(matrix.python-version, 'pypy') && startsWith(runner.os, 'Linux') }} + # Coverage can't run the test_interpreters.py tests because greenlet can't + # run there and that's how coverage is configured. Right now, we only have that + # on Python 3.12, so take the quick way out and nix that version too. + if: ${{ !startsWith(matrix.python-version, 'pypy') && !startsWith(matrix.python-version, "3.12") && startsWith(runner.os, 'Linux') }} run: | echo G_USE_COV=--coverage >> $GITHUB_ENV diff --git a/src/gevent/testing/patched_tests_setup.py b/src/gevent/testing/patched_tests_setup.py index a95f826f9..89970ac36 100644 --- a/src/gevent/testing/patched_tests_setup.py +++ b/src/gevent/testing/patched_tests_setup.py @@ -34,6 +34,7 @@ from .sysinfo import WIN from .sysinfo import OSX +from .sysinfo import LINUX from .sysinfo import LIBUV from .sysinfo import CFFI_BACKEND @@ -1252,6 +1253,16 @@ def test(*args, **kwargs): 'test_socket.BasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailure', ] + if LINUX and RUNNING_ON_CI: + disabled_tests += [ + # These two try to forcibly close a socket, preventing some data + # from reaching its destination. That works OK on some platforms, but + # in this set of circumstances, because of the event loop, gevent is + # able to send that data. + 'test_ssl.TestPreHandshakeClose.test_preauth_data_to_tls_client', + 'test_ssl.TestPreHandshakeClose.test_preauth_data_to_tls_server', + ] + if TRAVIS: disabled_tests += [ # These tests frequently break when we try to use newer Travis CI images, diff --git a/src/gevent/testing/testrunner.py b/src/gevent/testing/testrunner.py index ba6220648..37f5aee49 100644 --- a/src/gevent/testing/testrunner.py +++ b/src/gevent/testing/testrunner.py @@ -128,6 +128,8 @@ class Runner(object): def __init__(self, tests, + *, + allowed_return_codes, configured_failing_tests=(), failfast=False, quiet=False, @@ -135,6 +137,9 @@ def __init__(self, worker_count=DEFAULT_NWORKERS, second_chance=False): """ + :keyword allowed_return_codes: Return codes other than + 0 that are counted as a success. Needed because some versions + of Python give ``unittest`` weird return codes. :keyword quiet: Set to True or False to explicitly choose. Set to `None` to use the default, which may come from the environment variable ``GEVENTTEST_QUIET``. @@ -153,6 +158,7 @@ def __init__(self, self._running_jobs = [] self._worker_count = min(len(tests), worker_count) or 1 + self._allowed_return_codes = allowed_return_codes def _run_one(self, cmd, **kwargs): if self._quiet is not None: @@ -807,7 +813,7 @@ def not_set(key): def main(): - # pylint:disable=too-many-locals,too-many-statements + # pylint:disable=too-many-locals,too-many-statements,too-many-branches import argparse parser = argparse.ArgumentParser() parser.add_argument('--ignore') @@ -952,12 +958,21 @@ def main(): # XXX: Add a way to force these. print("Not running tests on pypy with c-ares; not a supported configuration") return + if options.package: # Put this directory on the path so relative imports work. package_dir = _dir_from_package_name(options.package) os.environ['PYTHONPATH'] = os.environ.get('PYTHONPATH', "") + os.pathsep + package_dir + + allowed_return_codes = () + if sys.version_info[:3] >= (3, 12, 1): + # unittest suddenly started failing with this return code + # if all tests in a module are skipped in 3.12.1. + allowed_return_codes += (5,) + runner = Runner( tests, + allowed_return_codes=allowed_return_codes, configured_failing_tests=FAILING_TESTS, failfast=options.failfast, quiet=options.quiet, diff --git a/src/gevent/testing/util.py b/src/gevent/testing/util.py index 11f5bfcb4..0ccd2035d 100644 --- a/src/gevent/testing/util.py +++ b/src/gevent/testing/util.py @@ -374,6 +374,7 @@ def run(command, **kwargs): # pylint:disable=too-many-locals quiet = kwargs.pop('quiet', QUIET) verbose = not quiet nested = kwargs.pop('nested', False) + allowed_return_codes = kwargs.pop('allowed_return_codes', ()) if buffer_output: assert 'stdout' not in kwargs and 'stderr' not in kwargs, kwargs kwargs['stderr'] = subprocess.STDOUT @@ -394,7 +395,7 @@ def run(command, **kwargs): # pylint:disable=too-many-locals assert popen.timer is None - failed = bool(result) + failed = bool(result) and result not in allowed_return_codes if out: out = out.strip() out = out if isinstance(out, str) else out.decode('utf-8', 'ignore') ++++++ gevent-fix-unittest-returncode-py312-c2.patch ++++++ >From f69bc6b872b81a3dbc704c83147822fd7009995d Mon Sep 17 00:00:00 2001 From: Jason Madden <jamad...@gmail.com> Date: Wed, 13 Dec 2023 15:01:10 -0600 Subject: [PATCH] No, really allow unittest on Py 3.12.1 to have skipped tests. --- src/gevent/testing/testrunner.py | 1 + src/gevent/testing/util.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gevent/testing/testrunner.py b/src/gevent/testing/testrunner.py index 37f5aee49..1704b77a3 100644 --- a/src/gevent/testing/testrunner.py +++ b/src/gevent/testing/testrunner.py @@ -161,6 +161,7 @@ def __init__(self, self._allowed_return_codes = allowed_return_codes def _run_one(self, cmd, **kwargs): + kwargs['allowed_return_codes'] = self._allowed_return_codes if self._quiet is not None: kwargs['quiet'] = self._quiet result = util.run(cmd, **kwargs) diff --git a/src/gevent/testing/util.py b/src/gevent/testing/util.py index 0ccd2035d..fa67f0c39 100644 --- a/src/gevent/testing/util.py +++ b/src/gevent/testing/util.py @@ -260,7 +260,6 @@ class RunResult(object): value of True; otherwise, a boolean value of false. The integer value of this object is the command's exit code. - """ def __init__(self, @@ -394,7 +393,9 @@ def run(command, **kwargs): # pylint:disable=too-many-locals kill(popen) assert popen.timer is None - + # We don't want to treat return codes that are allowed as failures, + # but we do want to log those specially. That's why we retain the distinction + # between ``failed`` and ``result`` (failed takes the allowed codes into account). failed = bool(result) and result not in allowed_return_codes if out: out = out.strip() @@ -406,11 +407,16 @@ def run(command, **kwargs): # pylint:disable=too-many-locals log('| %s\n%s', name, out) status, run_count, skipped_count = _find_test_status(duration, out) if result: - log('! %s [code %s] %s', name, result, status, color='error') + log('! %s [code %s] %s', name, result, status, + color='error' if failed else 'suboptimal-behaviour') elif not nested: log('- %s %s', name, status) + + # For everything outside this function, we need to pretend that + # allowed codes are actually successes. return RunResult( - command, kwargs, result, + command, kwargs, + 0 if result in allowed_return_codes else result, output=out, error=err, name=name, run_count=run_count, ++++++ gevent-opensuse-nocolor-tests.patch ++++++ Avoid colorization of test output in obs runners Index: gevent-23.9.1/src/gevent/testing/util.py =================================================================== --- gevent-23.9.1.orig/src/gevent/testing/util.py +++ gevent-23.9.1/src/gevent/testing/util.py @@ -98,6 +98,8 @@ def _color(what): return _color_code(_colorscheme[what]) def _colorize(what, message, normal='normal'): + if os.environ.get("TEST_NOCOLOR", False): + return message return _color(what) + message + _color(normal) def log(message, *args, **kwargs): ++++++ python-gevent-rpmlintrc ++++++ --- /var/tmp/diff_new_pack.OWELjM/_old 2024-01-12 23:45:03.617793082 +0100 +++ /var/tmp/diff_new_pack.OWELjM/_new 2024-01-12 23:45:03.621793228 +0100 @@ -1,3 +1,3 @@ addFilter("zero-length .*tests/nullcert\.pem") -addFilter("pem-certificate .*tests/.*\.pem") +