Source: python-webob Version: 1:1.8.6-1 Severity: serious Justification: FTBFS on amd64 Tags: bullseye sid ftbfs Usertags: ftbfs-20201027 ftbfs-bullseye
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > # enable network, tests.test_in_wsgiref.test_request_reading needs it > set -e ; for vers in `py3versions -vr` ; do \ > http_proxy='' PYTHONPATH=.:/<<PKGBUILDDIR>>/src python$vers -m pytest > tests ; \ > done > py3versions: no X-Python3-Version in control file, using supported versions > ============================= test session starts > ============================== > platform linux -- Python 3.9.0+, pytest-4.6.11, py-1.9.0, pluggy-0.13.0 > rootdir: /<<PKGBUILDDIR>>, inifile: setup.cfg > collected 2388 items > > tests/test_acceptparse.py .............................................. [ > 1%] > ........................................................................ [ > 4%] > ........................................................................ [ > 7%] > ........................................................................ [ > 10%] > ........................................................................ [ > 13%] > ........................................................................ [ > 17%] > ........................................................................ [ > 20%] > ........................................................................ [ > 23%] > ........................................................................ [ > 26%] > ........................................................................ [ > 29%] > ........................................................................ [ > 32%] > ........................................................................ [ > 35%] > ........................................................................ [ > 38%] > ........................................................................ [ > 41%] > ........................................................................ [ > 44%] > ........................................................................ [ > 47%] > ........................................................................ [ > 50%] > ........................................................ [ > 52%] > tests/test_byterange.py ............... [ > 53%] > tests/test_cachecontrol.py ............................... [ > 54%] > tests/test_client.py ............. [ > 54%] > tests/test_client_functional.py FFFF [ > 55%] > tests/test_compat.py ........... [ > 55%] > tests/test_cookies.py .............................................s.s.s [ > 57%] > ................................................ [ > 59%] > tests/test_cookies_bw.py . [ > 59%] > tests/test_datetime_utils.py ...... [ > 60%] > tests/test_dec.py ......................... [ > 61%] > tests/test_descriptors.py .............................................. [ > 62%] > ........................................................................ [ > 65%] > ......... [ > 66%] > tests/test_etag.py .......................... [ > 67%] > tests/test_etag_nose.py ....... [ > 67%] > tests/test_exc.py ........................................ [ > 69%] > tests/test_headers.py ................. [ > 70%] > tests/test_in_wsgiref.py FF [ > 70%] > tests/test_misc.py ...s.........s. [ > 70%] > tests/test_multidict.py ................................................ [ > 72%] > ........................................................................ [ > 75%] > [ > 75%] > tests/test_request.py .................................................. [ > 77%] > ........................................................................ [ > 80%] > ........................................................................ [ > 84%] > ...................................................................s.s.s [ > 87%] > ..............................s......................................... [ > 90%] > ............................................... [ > 92%] > tests/test_response.py ................................................. [ > 94%] > ........x............................................................... [ > 97%] > ..................................... [ > 98%] > tests/test_static.py .................... [ > 99%] > tests/test_transcode.py ...... [ > 99%] > tests/test_util.py ....... > [100%] > > =================================== FAILURES > =================================== > _________________________________ test_client > __________________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacfa0d0>, client_app = None > > @pytest.mark.usefixtures("serve") > def test_client(serve, client_app=None): > with serve(simple_app) as server: > req = Request.blank(server.url, method='POST', > content_type='application/json', > json={'test': 1}) > resp = req.send(client_app) > assert resp.status_code == 200, resp.status > assert resp.json['headers']['Content-Type'] == 'application/json' > assert resp.json['method'] == 'POST' > # Test that these values get filled in: > del req.environ['SERVER_NAME'] > del req.environ['SERVER_PORT'] > resp = req.send(client_app) > assert resp.status_code == 200, resp.status > req = Request.blank(server.url) > del req.environ['SERVER_NAME'] > del req.environ['SERVER_PORT'] > assert req.send(client_app).status_code == 200 > req.headers['Host'] = server.url.lstrip('http://') > del req.environ['SERVER_NAME'] > del req.environ['SERVER_PORT'] > resp = req.send(client_app) > assert resp.status_code == 200, resp.status > del req.environ['SERVER_NAME'] > del req.environ['SERVER_PORT'] > del req.headers['Host'] > assert req.environ.get('SERVER_NAME') is None > assert req.environ.get('SERVER_PORT') is None > assert req.environ.get('HTTP_HOST') is None > with pytest.raises(ValueError): > req.send(client_app) > req = Request.blank(server.url) > req.environ['CONTENT_LENGTH'] = 'not a number' > > assert req.send(client_app).status_code == 200 > > tests/test_client_functional.py:51: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <wsgify at 140457700217664 wrapping <function simple_app at > 0x7fbedb32f8b0>> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > ____________________________ test_no_content_length > ____________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacf0700>, client_app = None > > @pytest.mark.usefixtures("serve") > def test_no_content_length(serve, client_app=None): > with serve(no_length_app) as server: > req = Request.blank(server.url) > resp = req.send(client_app) > > assert resp.status_code == 200, resp.status > > tests/test_client_functional.py:64: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <function no_length_app at 0x7fbedb334940> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > _____________________________ test_client_cookies > ______________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacf0550>, client_app = None > > @pytest.mark.usefixtures("serve") > def test_client_cookies(serve, client_app=None): > with serve(cookie_app) as server: > req = Request.blank(server.url + '/?test') > resp = req.send(client_app) > assert resp.headers.getall('Set-Cookie') == ['a=b', 'c=d'] > > assert resp.headers['X-Crazy'] == 'value, continuation', > > repr(resp.headers['X-Crazy']) > > tests/test_client_functional.py:82: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <wsgify at 140457675600944 wrapping <function cookie_app at > 0x7fbedb334a60>> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > _______________________________ test_client_slow > _______________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacf05e0> > client_app = <webob.client.SendRequest object at 0x7fbedb4477c0> > > @pytest.mark.usefixtures("serve") > def test_client_slow(serve, client_app=None): > if client_app is None: > client_app = SendRequest() > if not client_app._timeout_supported(client_app.HTTPConnection): > # timeout isn't supported > return > with serve(slow_app) as server: > req = Request.blank(server.url) > req.environ['webob.client.timeout'] = 0.1 > resp = req.send(client_app) > > assert resp.status_code == 504, resp.status > > tests/test_client_functional.py:102: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <wsgify at 140457701719584 wrapping <function slow_app at > 0x7fbedb334b80>> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > _____________________________ test_request_reading > _____________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacf0af0> > > @pytest.mark.usefixtures("serve") > def test_request_reading(serve): > """ > Test actual request/response cycle in the presence of > Request.copy() > and other methods that can potentially hang. > """ > with serve(_test_app_req_reading) as server: > for key in _test_ops_req_read: > resp = url_open(server.url + key, timeout=3) > > assert resp.read() == b"ok" > > tests/test_in_wsgiref.py:27: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <function _test_app_req_reading at 0x7fbed9e18dc0> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > ___________________________ test_interrupted_request > ___________________________ > > serve = <function serve.<locals>._serve at 0x7fbedacf0dc0> > > @pytest.mark.usefixtures("serve") > def test_interrupted_request(serve): > with serve(_test_app_req_interrupt) as server: > for path in _test_ops_req_interrupt: > _send_interrupted_req(server, path) > try: > res = _global_res.get(timeout=1) > except Empty: > raise AssertionError("Error during test %s", path) > if res is not None: > print("Error during test:", path) > > reraise(res) > > tests/test_in_wsgiref.py:57: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3.9/contextlib.py:124: in __exit__ > next(self.gen) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > app = <function _test_app_req_interrupt at 0x7fbeda5d3160> > > @contextmanager > def _serve(app): > server = _make_test_server(app) > try: > worker = threading.Thread(target=server.serve_forever) > worker.setDaemon(True) > worker.start() > server.url = "http://localhost:%d" % server.server_port > log.debug("server started on %s", server.url) > > yield server > finally: > log.debug("shutting server down") > server.shutdown() > worker.join(1) > > if worker.isAlive(): > E AttributeError: 'Thread' object has no attribute 'isAlive' > > tests/conftest.py:63: AttributeError > =============================== warnings summary > =============================== > tests/test_request.py::TestRequest_functional::test_request_put > /<<PKGBUILDDIR>>/src/webob/acceptparse.py:1262: DeprecationWarning: The > behavior of .__contains__ for the Accept classes is currently being > maintained for backward compatibility, but it will change in the future to > better conform to the RFC. > warnings.warn( > > tests/test_request.py::TestRequest_functional::test_request_put > /<<PKGBUILDDIR>>/src/webob/acceptparse.py:645: DeprecationWarning: The > behavior of AcceptValidHeader.__contains__ is currently being maintained for > backward compatibility, but it will change in the future to better conform to > the RFC. > warnings.warn( > > tests/test_response.py::test_set_cookie_expires_is_datetime_and_max_age_is_None > tests/test_response.py::test_set_cookie_expires_is_timedelta_and_max_age_is_None > tests/test_response.py::test_set_cookie_expires_is_datetime_tz_and_max_age_is_None > /<<PKGBUILDDIR>>/src/webob/response.py:1037: DeprecationWarning: Argument > "expires" will be removed in a future version of WebOb, please use "max_age". > warn_deprecation('Argument "expires" will be removed in a future ' > > -- Docs: https://docs.pytest.org/en/latest/warnings.html > === 6 failed, 2372 passed, 9 skipped, 1 xfailed, 5 warnings in 11.43 seconds > === > make[1]: *** [debian/rules:12: override_dh_auto_test] Error 1 The full build log is available from: http://qa-logs.debian.net/2020/10/27/python-webob_1.8.6-1_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! About the archive rebuild: The rebuild was done on EC2 VM instances from Amazon Web Services, using a clean, minimal and up-to-date chroot. Every failed build was retried once to eliminate random failures.