[Python-modules-team] Bug#973134: python-webob: FTBFS: tests failed
Lucas Nussbaum
lucas at debian.org
Tue Oct 27 17:11:42 GMT 2020
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.
More information about the Python-modules-team
mailing list