Skip to content

Test regressions with Python 3.13.0b2 #848

Closed
@mgorny

Description

@mgorny

Compared to Python 3.12, I'm seeing a few new failing tests:

$ EPYTHON=python3.13 bash runtests.sh --deselect tests/integration/test_urllib2.py::test_multiple_requests --deselect tests/integration/test_urllib2.py::test_random_body tests/integration/test_urllib2.py 
/usr/lib/python3.13/site-packages/httpbin/helpers.py:32: SyntaxWarning: invalid escape sequence '\_'
  ASCII_ART = """
/usr/lib/python3.13/site-packages/httpbin/helpers.py:77: SyntaxWarning: invalid escape sequence '\ '
  ANGRY_ASCII ="""
/usr/lib/python3.13/site-packages/httpbin/helpers.py:444: SyntaxWarning: invalid escape sequence '\s'
  match = re.search('\s*(W/)?\"?([^"]*)\"?\s*', part)
[2024-06-28 20:55:41,591] WARNING in core: Swagger not found, legacy index will be used.
========================================================= test session starts =========================================================
platform linux -- Python 3.13.0b3, pytest-8.2.2, pluggy-1.5.0
rootdir: /tmp/vcrpy
configfile: pyproject.toml
plugins: xdist-3.6.1, subtests-0.12.1, asyncio-0.23.7, xprocess-1.0.2, anyio-4.4.0, pkgcore-0.12.27, hypothesis-6.103.5, timeout-2.3.1, httpbin-2.0.0
asyncio: mode=Mode.STRICT
collected 18 items / 4 deselected / 14 selected                                                                                       

tests/integration/test_urllib2.py ......pytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
Fpytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
Fpytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
Fpytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
Fpytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
Fpytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
F.pytest-httpbin server hit an exception serving request: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] ssl/tls alert certificate unknown (_ssl.c:1024)
attempting to ignore so the rest of the tests can run
F                                                                                [100%]

============================================================== FAILURES ===============================================================
______________________________________________________ test_response_code[https] ______________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_response_code_https_0')

    def test_response_code(httpbin_both, tmpdir):
        """Ensure we can read a response code from a fetch"""
        url = httpbin_both.url
        with vcr.use_cassette(str(tmpdir.join("atts.yaml"))):
>           code = urlopen_with_cafile(url).getcode()

tests/integration/test_urllib2.py:32: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
____________________________________________________ test_response_headers[https] _____________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_response_headers_https_0')

    def test_response_headers(httpbin_both, tmpdir):
        """Ensure we can get information from the response"""
        url = httpbin_both.url
        with vcr.use_cassette(str(tmpdir.join("headers.yaml"))):
>           open1 = urlopen_with_cafile(url).info().items()

tests/integration/test_urllib2.py:52: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
________________________________________________________ test_get_data[https] _________________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_get_data_https_0')

    def test_get_data(httpbin_both, tmpdir):
        """Ensure that it works with query data"""
        data = urlencode({"some": 1, "data": "here"})
        url = httpbin_both.url + "/get?" + data
        with vcr.use_cassette(str(tmpdir.join("get_data.yaml"))):
>           res1 = urlopen_with_cafile(url).read()

tests/integration/test_urllib2.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
________________________________________________________ test_post_data[https] ________________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_post_data_https_0')

    def test_post_data(httpbin_both, tmpdir):
        """Ensure that it works when posting data"""
        data = urlencode({"some": 1, "data": "here"}).encode("utf-8")
        url = httpbin_both.url + "/post"
        with vcr.use_cassette(str(tmpdir.join("post_data.yaml"))):
>           res1 = urlopen_with_cafile(url, data).read()

tests/integration/test_urllib2.py:98: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
____________________________________________________ test_post_unicode_data[https] ____________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_post_unicode_data_https_0')

    def test_post_unicode_data(httpbin_both, tmpdir):
        """Ensure that it works when posting unicode data"""
        data = urlencode({"snowman": "".encode()}).encode("utf-8")
        url = httpbin_both.url + "/post"
        with vcr.use_cassette(str(tmpdir.join("post_data.yaml"))):
>           res1 = urlopen_with_cafile(url, data).read()

tests/integration/test_urllib2.py:113: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
________________________________________________________ test_decorator[https] ________________________________________________________

httpbin_both = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_decorator_https_0')

    def test_decorator(httpbin_both, tmpdir):
        """Test the decorator version of VCR.py"""
        url = httpbin_both.url
    
        @vcr.use_cassette(str(tmpdir.join("atts.yaml")))
        def inner1():
            return urlopen_with_cafile(url).getcode()
    
        @vcr.use_cassette(str(tmpdir.join("atts.yaml")))
        def inner2():
            return urlopen_with_cafile(url).getcode()
    
>       assert inner1() == inner2()

tests/integration/test_urllib2.py:147: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
vcr/cassette.py:107: in __call__
    return type(self)(self.cls, args_getter)._execute_function(function, args, kwargs)
vcr/cassette.py:121: in _execute_function
    return self._handle_function(fn=handle_function)
vcr/cassette.py:132: in _handle_function
    return fn(cassette)
vcr/cassette.py:114: in handle_function
    return function(*args, **kwargs)
tests/integration/test_urllib2.py:141: in inner1
    return urlopen_with_cafile(url).getcode()
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
__________________________________________________________ test_cross_scheme __________________________________________________________

tmpdir = local('/tmp/pytest-of-mgorny/pytest-5/test_cross_scheme0')
httpbin_secure = <pytest_httpbin.serve.SecureServer object at 0x7f073b7ef0e0>
httpbin = <pytest_httpbin.serve.Server object at 0x7f073b7ef230>

    def test_cross_scheme(tmpdir, httpbin_secure, httpbin):
        """Ensure that requests between schemes are treated separately"""
        # First fetch a url under https, and then again under https and then
        # ensure that we haven't served anything out of cache, and we have two
        # requests / response pairs in the cassette
        with vcr.use_cassette(str(tmpdir.join("cross_scheme.yaml"))) as cass:
>           urlopen_with_cafile(httpbin_secure.url)

tests/integration/test_urllib2.py:129: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/integration/test_urllib2.py:21: in urlopen_with_cafile
    return urlopen(*args, **kwargs)
/usr/lib/python3.13/urllib/request.py:189: in urlopen
    return opener.open(url, data, timeout)
/usr/lib/python3.13/urllib/request.py:489: in open
    response = self._open(req, data)
/usr/lib/python3.13/urllib/request.py:506: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
/usr/lib/python3.13/urllib/request.py:466: in _call_chain
    result = func(*args)
/usr/lib/python3.13/urllib/request.py:1367: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
/usr/lib/python3.13/urllib/request.py:1323: in do_open
    r = h.getresponse()
vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.13/http/client.py:1336: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.13/http/client.py:1382: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1331: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.13/http/client.py:1091: in _send_output
    self.send(msg)
/usr/lib/python3.13/http/client.py:1035: in send
    self.connect()
/usr/lib/python3.13/http/client.py:1477: in connect
    self.sock = self._context.wrap_socket(self.sock,
/usr/lib/python3.13/ssl.py:455: in wrap_socket
    return self.sslsocket_class._create(
/usr/lib/python3.13/ssl.py:1077: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=6>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1024)

/usr/lib/python3.13/ssl.py:1363: SSLCertVerificationError
======================================================= short test summary info =======================================================
FAILED tests/integration/test_urllib2.py::test_response_code[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_response_headers[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_get_data[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_post_data[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_post_unicode_data[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_decorator[https] - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
FAILED tests/integration/test_urllib2.py::test_cross_scheme - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c...
============================================== 7 failed, 7 passed, 4 deselected in 3.50s ==============================================

I wonder if it's a problem with pytest-httpbin perhaps.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions