Skip to content

Test failures with Python 3.13 #45

Description

@mgorny

As of 30fa396, a number of tests fail when run against Python 3.13. Details below.

Details
$ uv venv -p 3.13
Using CPython 3.13.2 interpreter at: /usr/bin/python3.13
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv pip install -e . pytest
Resolved 5 packages in 522ms
      Built ioflo @ file:///tmp/ioflo
Prepared 1 package in 604ms
░░░░░░░░░░░░░░░░░░░░ [0/5] Installing wheels...                                                                                        warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
         If the cache and target directories are on different filesystems, hardlinking may not be supported.
         If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Installed 5 packages in 4ms
 + iniconfig==2.0.0
 + ioflo==2.0.3 (from file:///tmp/ioflo)
 + packaging==24.2
 + pluggy==1.5.0
 + pytest==8.3.5
$ uv run pytest --ignore ioflo/aio/tcp/test/test_tcping.py
========================================================= test session starts =========================================================
platform linux -- Python 3.13.2, pytest-8.3.5, pluggy-1.5.0
rootdir: /tmp/ioflo
collected 117 items                                                                                                                   

ioflo/aid/test/test_aiding.py .                                                                                                 [  0%]
ioflo/aid/test/test_blending.py .                                                                                               [  1%]
ioflo/aid/test/test_byting.py .....                                                                                             [  5%]
ioflo/aid/test/test_classing.py .....                                                                                           [ 10%]
ioflo/aid/test/test_eventing.py ...                                                                                             [ 12%]
ioflo/aid/test/test_odicting.py ...                                                                                             [ 15%]
ioflo/aid/test/test_osetting.py .                                                                                               [ 16%]
ioflo/aid/test/test_quating.py ....                                                                                             [ 19%]
ioflo/aid/test/test_sixing.py .                                                                                                 [ 20%]
ioflo/aid/test/test_timing.py ....                                                                                              [ 23%]
ioflo/aid/test/test_vectoring.py .........                                                                                      [ 31%]
ioflo/aio/http/test/test_clienting.py ..FFFFFFFFF....FFFFFFFF.                                                                  [ 52%]
ioflo/aio/http/test/test_serving.py .F.F......                                                                                  [ 60%]
ioflo/aio/proto/test/test_devicing.py ..                                                                                        [ 62%]
ioflo/aio/proto/test/test_exchanging.py .                                                                                       [ 63%]
ioflo/aio/proto/test/test_packeting.py .....                                                                                    [ 67%]
ioflo/aio/proto/test/test_stacking.py ......                                                                                    [ 72%]
ioflo/aio/serial/test/test_serialing.py .                                                                                       [ 73%]
ioflo/aio/test/test_aioing.py .                                                                                                 [ 74%]
ioflo/aio/test/test_wiring.py ..                                                                                                [ 76%]
ioflo/aio/udp/test/test_udping.py ..                                                                                            [ 77%]
ioflo/aio/uxd/test/test_uxding.py .                                                                                             [ 78%]
ioflo/aio/win/test/test_wining.py .                                                                                             [ 79%]
ioflo/base/test/test_acting.py FFF                                                                                              [ 82%]
ioflo/base/test/test_globaling.py .                                                                                             [ 82%]
ioflo/base/test/test_logging.py ...............                                                                                 [ 95%]
ioflo/base/test/test_storing.py .....                                                                                           [100%]

============================================================== FAILURES ===============================================================
_____________________________________________ BasicTestCase.testNonBlockingRequestEchoTLS _____________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestEchoTLS>

    def testNonBlockingRequestEchoTLS(self):
        """
        Test NonBlocking HTTPS (TLS/SSL) client
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestEchoTLS.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()
    
        #serverKeypath = '/etc/pki/tls/certs/server_key.pem'  # local server private key
        #serverCertpath = '/etc/pki/tls/certs/server_cert.pem'  # local server public cert
        #clientCafilepath = '/etc/pki/tls/certs/client.pem' # remote client public cert
    
        #clientKeypath = '/etc/pki/tls/certs/client_key.pem'  # local client private key
        #clientCertpath = '/etc/pki/tls/certs/client_cert.pem'  # local client public cert
        #serverCafilepath = '/etc/pki/tls/certs/server.pem' # remote server public cert
    
        serverKeypath = self.certdirpath + '/server_key.pem'  # local server private key
        serverCertpath = self.certdirpath + '/server_cert.pem'  # local server public cert
        clientCafilepath = self.certdirpath + '/client.pem' # remote client public cert
    
        clientKeypath = self.certdirpath + '/client_key.pem'  # local client private key
        clientCertpath = self.certdirpath + '/client_cert.pem'  # local client public cert
        serverCafilepath = self.certdirpath + '/server.pem' # remote server public cert
    
        alpha = tcp.ServerTls(host='localhost',
                                      port = 6101,
                                      bufsize=131072,
                                      wlog=wireLogAlpha,
                                      context=None,
                                      version=None,
                                      certify=None,
                                      keypath=serverKeypath,
                                      certpath=serverCertpath,
                                      cafilepath=clientCafilepath,
                                      )
        self.assertIs(alpha.reopen(), True)
        self.assertEqual(alpha.ha, ('127.0.0.1', 6101))
        self.assertEqual(alpha.eha, ('127.0.0.1', 6101))
    
        serverCertCommonName = 'localhost' # match hostname uses servers's cert commonname
    
        beta = tcp.ClientTls(ha=alpha.ha,
                                      bufsize=131072,
                                      wlog=wireLogBeta,
                                      context=None,
                                      version=None,
                                      certify=None,
                                      hostify=None,
                                      certedhost=serverCertCommonName,
                                      keypath=clientKeypath,
                                      certpath=clientCertpath,
                                      cafilepath=serverCafilepath,
                                      )
        self.assertIs(beta.reopen(), True)
        self.assertIs(beta.accepted, False)
        self.assertIs(beta.connected, False)
        self.assertIs(beta.cutoff, False)
    
        console.terse("Connecting  and Handshaking beta to alpha\n")
        while True:
>           beta.serviceConnect()

ioflo/aio/http/test/test_clienting.py:1198: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ioflo/aio/tcp/clienting.py:307: in serviceConnect
    self.connect()
ioflo/aio/tcp/clienting.py:640: in connect
    self.handshake()
ioflo/aio/tcp/clienting.py:602: in handshake
    self.cs.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>, 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: invalid CA certificate (_ssl.c:1032)

/usr/lib/python3.13/ssl.py:1372: SSLCertVerificationError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking HTTPS (TLS/SSL) client

      Added node .meta to Store3
      Added share time to store Store3
      Added share realtime to store Store3
      Added share datetime to store Store3
      Added node .meta to Store4
      Added share time to store Store4
      Added share realtime to store Store4
      Added share datetime to store Store4
Connecting  and Handshaking beta to alpha
_____________________________________________ BasicTestCase.testNonBlockingRequestStream ______________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStream>

    def testNonBlockingRequestStream(self):
        """
        Test NonBlocking Http client with SSE streaming server
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStream.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:206: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client with SSE streaming server

      Added node .meta to Store5
      Added share time to store Store5
      Added share realtime to store Store5
      Added share datetime to store Store5
socket.error = [Errno 98] Address already in use
__________________________________________ BasicTestCase.testNonBlockingRequestStreamChunked __________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStreamChunked>

    def testNonBlockingRequestStreamChunked(self):
        """
        Test NonBlocking Http client with SSE streaming server with transfer encoding (chunked)
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStreamChunked.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:359: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client with SSE streaming server with transfer encoding (chunked)

      Added node .meta to Store6
      Added share time to store Store6
      Added share realtime to store Store6
      Added share datetime to store Store6
socket.error = [Errno 98] Address already in use
___________________________________________ BasicTestCase.testNonBlockingRequestStreamFancy ___________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStreamFancy>

    def testNonBlockingRequestStreamFancy(self):
        """
        Test NonBlocking Http client to SSE server
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStreamFancy.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:512: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client to SSE server

      Added node .meta to Store7
      Added share time to store Store7
      Added share realtime to store Store7
      Added share datetime to store Store7
socket.error = [Errno 98] Address already in use
_______________________________________ BasicTestCase.testNonBlockingRequestStreamFancyChunked ________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStreamFancyChunked>

    def testNonBlockingRequestStreamFancyChunked(self):
        """
        Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStreamFancyChunked.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:666: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding

      Added node .meta to Store8
      Added share time to store Store8
      Added share realtime to store Store8
      Added share datetime to store Store8
socket.error = [Errno 98] Address already in use
_________________________________________ BasicTestCase.testNonBlockingRequestStreamFancyJson _________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStreamFancyJson>

    def testNonBlockingRequestStreamFancyJson(self):
        """
        Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStreamFancyJson.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:832: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding

      Added node .meta to Store9
      Added share time to store Store9
      Added share realtime to store Store9
      Added share datetime to store Store9
socket.error = [Errno 98] Address already in use
_____________________________________ BasicTestCase.testNonBlockingRequestStreamFancyJsonChunked ______________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testNonBlockingRequestStreamFancyJsonChunked>

    def testNonBlockingRequestStreamFancyJsonChunked(self):
        """
        Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding
        """
        console.terse("{0}\n".format(self.testNonBlockingRequestStreamFancyJsonChunked.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        wireLogBeta = wiring.WireLog(buffify=True, same=True)
        result = wireLogBeta.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:988: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test NonBlocking Http client to server Fancy SSE with chunked transfer encoding

      Added node .meta to Store10
      Added share time to store Store10
      Added share realtime to store Store10
      Added share datetime to store Store10
socket.error = [Errno 98] Address already in use
_______________________________________________ BasicTestCase.testPatronEchoSimpleFirst _______________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronEchoSimpleFirst>

    def testPatronEchoSimpleFirst(self):
        """
        Test Patron Simple First time request pattern
        """
        console.terse("{0}\n".format(self.testPatronEchoSimpleFirst.__doc__))
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:1974: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron Simple First time request pattern

      Added node .meta to Store11
      Added share time to store Store11
      Added share realtime to store Store11
      Added share datetime to store Store11
socket.error = [Errno 98] Address already in use
________________________________________________ BasicTestCase.testPatronPipelineEcho _________________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronPipelineEcho>

    def testPatronPipelineEcho(self):
        """
        Test Patron pipeline servicing
        """
        console.terse("{0}\n".format(self.testPatronPipelineEcho.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:1570: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron pipeline servicing

      Added node .meta to Store12
      Added share time to store Store12
      Added share realtime to store Store12
      Added share datetime to store Store12
socket.error = [Errno 98] Address already in use
__________________________________________ BasicTestCase.testPatronPipelineEchoSimpleSecure ___________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronPipelineEchoSimpleSecure>

    def testPatronPipelineEchoSimpleSecure(self):
        """
        Test Patron pipeline servicing
        """
        console.terse("{0}\n".format(self.testPatronPipelineEchoSimpleSecure.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        #serverKeypath = '/etc/pki/tls/certs/server_key.pem'  # local server private key
        #serverCertpath = '/etc/pki/tls/certs/server_cert.pem'  # local server public cert
        #clientCafilepath = '/etc/pki/tls/certs/client.pem' # remote client public cert
    
        #clientKeypath = '/etc/pki/tls/certs/client_key.pem'  # local client private key
        #clientCertpath = '/etc/pki/tls/certs/client_cert.pem'  # local client public cert
        #serverCafilepath = '/etc/pki/tls/certs/server.pem' # remote server public cert
    
        serverKeypath = self.certdirpath + '/server_key.pem'  # local server private key
        serverCertpath = self.certdirpath + '/server_cert.pem'  # local server public cert
        clientCafilepath = self.certdirpath + '/client.pem' # remote client public cert
    
        clientKeypath = self.certdirpath + '/client_key.pem'  # local client private key
        clientCertpath = self.certdirpath + '/client_cert.pem'  # local client public cert
        serverCafilepath = self.certdirpath + '/server.pem' # remote server public cert
    
        serverCertCommonName = 'localhost' # match hostname uses servers's cert commonname
    
        alpha = tcp.ServerTls(host=serverCertCommonName,
                                      port = 6101,
                                      bufsize=131072,
                                      wlog=wireLogAlpha,
                                      context=None,
                                      version=None,
                                      certify=None,
                                      keypath=serverKeypath,
                                      certpath=serverCertpath,
                                      cafilepath=clientCafilepath,
                                      )
        self.assertIs(alpha.reopen(), True)
        self.assertEqual(alpha.ha, ('127.0.0.1', 6101))
        self.assertEqual(alpha.eha, ('127.0.0.1', 6101))
    
        console.terse("{0}\n".format("Building Patron ...\n"))
    
        wireLogBeta = wiring.WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()
        host = alpha.eha[0]
        port = alpha.eha[1]
    
        beta = clienting.Patron(hostname=serverCertCommonName,
                              port=alpha.eha[1],
                              bufsize=131072,
                              wlog=wireLogBeta,
                              scheme='https',
                              reconnectable=True,
                              certedhost=serverCertCommonName,
                              keypath=clientKeypath,
                              certpath=clientCertpath,
                              cafilepath=serverCafilepath,
                            )
    
        self.assertIs(beta.connector.reopen(), True)
        self.assertIs(beta.connector.accepted, False)
        self.assertIs(beta.connector.connected, False)
        self.assertIs(beta.connector.cutoff, False)
    
        request = odict([('method', u'GET'),
                         ('path', u'/echo?name=fame'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json')])),
                         ('body', None),
                        ])
    
        beta.requests.append(request)
    
        while (not alpha.ixes or beta.requests or
               beta.connector.txes or not beta.respondent.ended):
            self.mockEchoServiceSecure(alpha)
            time.sleep(0.05)
>           beta.serviceAll()

ioflo/aio/http/test/test_clienting.py:2967: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ioflo/aio/http/clienting.py:1129: in serviceAll
    self.connector.serviceConnect()
ioflo/aio/tcp/clienting.py:307: in serviceConnect
    self.connect()
ioflo/aio/tcp/clienting.py:640: in connect
    self.handshake()
ioflo/aio/tcp/clienting.py:602: in handshake
    self.cs.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>, 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: invalid CA certificate (_ssl.c:1032)

/usr/lib/python3.13/ssl.py:1372: SSLCertVerificationError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron pipeline servicing

      Added node .meta to Store21
      Added share time to store Store21
      Added share realtime to store Store21
      Added share datetime to store Store21
Building Patron ...

      Added node .meta to Store22
      Added share time to store Store22
      Added share realtime to store Store22
      Added share datetime to store Store22
________________________________________ BasicTestCase.testPatronPipelineEchoSimpleSecurePath _________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronPipelineEchoSimpleSecurePath>

    def testPatronPipelineEchoSimpleSecurePath(self):
        """
        Test Patron pipeline servicing
        """
        console.terse("{0}\n".format(self.testPatronPipelineEchoSimpleSecurePath.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        #serverKeypath = '/etc/pki/tls/certs/server_key.pem'  # local server private key
        #serverCertpath = '/etc/pki/tls/certs/server_cert.pem'  # local server public cert
        #clientCafilepath = '/etc/pki/tls/certs/client.pem' # remote client public cert
    
        #clientKeypath = '/etc/pki/tls/certs/client_key.pem'  # local client private key
        #clientCertpath = '/etc/pki/tls/certs/client_cert.pem'  # local client public cert
        #serverCafilepath = '/etc/pki/tls/certs/server.pem' # remote server public cert
    
        serverKeypath = self.certdirpath + '/server_key.pem'  # local server private key
        serverCertpath = self.certdirpath + '/server_cert.pem'  # local server public cert
        clientCafilepath = self.certdirpath + '/client.pem' # remote client public cert
    
        clientKeypath = self.certdirpath + '/client_key.pem'  # local client private key
        clientCertpath = self.certdirpath + '/client_cert.pem'  # local client public cert
        serverCafilepath = self.certdirpath + '/server.pem' # remote server public cert
    
        serverCertCommonName = 'localhost' # match hostname uses servers's cert commonname
    
        alpha = tcp.ServerTls(host=serverCertCommonName,
                                      port = 6101,
                                      bufsize=131072,
                                      wlog=wireLogAlpha,
                                      context=None,
                                      version=None,
                                      certify=None,
                                      keypath=serverKeypath,
                                      certpath=serverCertpath,
                                      cafilepath=clientCafilepath,
                                      )
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:3106: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron pipeline servicing

      Added node .meta to Store23
      Added share time to store Store23
      Added share realtime to store Store23
      Added share datetime to store Store23
socket.error = [Errno 98] Address already in use
_______________________________________________ BasicTestCase.testPatronPipelineStream ________________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronPipelineStream>

    def testPatronPipelineStream(self):
        """
        Test Patron pipeline stream
        """
        console.terse("{0}\n".format(self.testPatronPipelineStream.__doc__))
    
    
    
        store = storing.Store(stamp=0.0)
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101,
                                   bufsize=131072,
                                   wlog=wireLogAlpha,
                                   store=store)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:2641: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron pipeline stream

      Added node .meta to Store24
      Added share time to store Store24
      Added share realtime to store Store24
      Added share datetime to store Store24
socket.error = [Errno 98] Address already in use
_______________________________________________ BasicTestCase.testPatronRedirectComplex _______________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronRedirectComplex>

    def testPatronRedirectComplex(self):
        """
        Test Patron redirect
        """
        console.terse("{0}\n".format(self.testPatronRedirectComplex.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:3447: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron redirect

      Added node .meta to Store25
      Added share time to store Store25
      Added share realtime to store Store25
      Added share datetime to store Store25
socket.error = [Errno 98] Address already in use
____________________________________________ BasicTestCase.testPatronRedirectComplexSecure ____________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronRedirectComplexSecure>

    def testPatronRedirectComplexSecure(self):
        """
        Test Patron redirect
        """
        console.terse("{0}\n".format(self.testPatronRedirectComplexSecure.__doc__))
    
    
    
        serverCertCommonName = 'localhost' # match hostname uses servers's cert commonname
        #serverKeypath = '/etc/pki/tls/certs/server_key.pem'  # local server private key
        #serverCertpath = '/etc/pki/tls/certs/server_cert.pem'  # local server public cert
        #clientCafilepath = '/etc/pki/tls/certs/client.pem' # remote client public cert
    
        serverKeypath = self.certdirpath + '/server_key.pem'  # local server private key
        serverCertpath = self.certdirpath + '/server_cert.pem'  # local server public cert
        clientCafilepath = self.certdirpath + '/client.pem' # remote client public cert
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.ServerTls(host=serverCertCommonName,
                                   port = 6101,
                                   bufsize=131072,
                                   wlog=wireLogAlpha,
                                   context=None,
                                   version=None,
                                   certify=None,
                                   keypath=serverKeypath,
                                   certpath=serverCertpath,
                                   cafilepath=clientCafilepath,)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:3637: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron redirect

      Added node .meta to Store26
      Added share time to store Store26
      Added share realtime to store Store26
      Added share datetime to store Store26
socket.error = [Errno 98] Address already in use
_______________________________________________ BasicTestCase.testPatronRedirectSimple ________________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronRedirectSimple>

    def testPatronRedirectSimple(self):
        """
        Test Patron redirect
        """
        console.terse("{0}\n".format(self.testPatronRedirectSimple.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:3283: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron redirect

      Added node .meta to Store27
      Added share time to store Store27
      Added share realtime to store Store27
      Added share datetime to store Store27
socket.error = [Errno 98] Address already in use
_________________________________________________ BasicTestCase.testPatronRequestEcho _________________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronRequestEcho>

    def testPatronRequestEcho(self):
        """
        Test Patron request echo non blocking
        """
        console.terse("{0}\n".format(self.testPatronRequestEcho.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:1309: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron request echo non blocking

      Added node .meta to Store28
      Added share time to store Store28
      Added share realtime to store Store28
      Added share datetime to store Store28
socket.error = [Errno 98] Address already in use
_________________________________________________ BasicTestCase.testPatronServiceEcho _________________________________________________

self = <ioflo.aio.http.test.test_clienting.BasicTestCase testMethod=testPatronServiceEcho>

    def testPatronServiceEcho(self):
        """
        Test Patron service request response of echo non blocking
        """
        console.terse("{0}\n".format(self.testPatronServiceEcho.__doc__))
    
    
    
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = tcp.Server(port = 6101, bufsize=131072, wlog=wireLogAlpha)
>       self.assertIs(alpha.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_clienting.py:1440: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Patron service request response of echo non blocking

      Added node .meta to Store29
      Added share time to store Store29
      Added share realtime to store Store29
      Added share datetime to store Store29
socket.error = [Errno 98] Address already in use
_________________________________________________ BasicTestCase.testPorterServiceEcho _________________________________________________

self = <ioflo.aio.http.test.test_serving.BasicTestCase testMethod=testPorterServiceEcho>

    def testPorterServiceEcho(self):
        """
        Test Porter service request response of echo non blocking
        """
        console.terse("{0}\n".format(self.testPorterServiceEcho.__doc__))
    
    
    
        store = storing.Store(stamp=0.0)
    
        console.terse("{0}\n".format("Building Valet ...\n"))
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        alpha = serving.Porter(port = 6101,
                              bufsize=131072,
                              wlog=wireLogAlpha,
                              store=store)
>       self.assertIs(alpha.servant.reopen(), True)
E       AssertionError: False is not True

ioflo/aio/http/test/test_serving.py:129: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Porter service request response of echo non blocking

      Added node .meta to Store30
      Added share time to store Store30
      Added share realtime to store Store30
      Added share datetime to store Store30
Building Valet ...

socket.error = [Errno 98] Address already in use
______________________________________________ BasicTestCase.testValetServiceBasicSecure ______________________________________________

self = <ioflo.aio.http.test.test_serving.BasicTestCase testMethod=testValetServiceBasicSecure>

    def testValetServiceBasicSecure(self):
        """
        Test Valet WSGI service with secure TLS request response
        """
        console.terse("{0}\n".format(self.testValetServiceBasicSecure.__doc__))
    
        store = storing.Store(stamp=0.0)
    
        def wsgiApp(environ, start_response):
            start_response('200 OK', [('Content-type','text/plain'),
                                      ('Content-length', '12')])
            return [b"Hello World!"]
    
        console.terse("{0}\n".format("Building Valet ...\n"))
        wireLogAlpha = wiring.WireLog(buffify=True, same=True)
        result = wireLogAlpha.reopen()
    
        serverCertCommonName = 'localhost' # match hostname uses servers's cert commonname
        #serverKeypath = '/etc/pki/tls/certs/server_key.pem'  # local server private key
        #serverCertpath = '/etc/pki/tls/certs/server_cert.pem'  # local server public cert
        #clientCafilepath = '/etc/pki/tls/certs/client.pem' # remote client public cert
    
        serverKeypath = self.certdirpath + '/server_key.pem'  # local server private key
        serverCertpath = self.certdirpath + '/server_cert.pem'  # local server public cert
        clientCafilepath = self.certdirpath + '/client.pem' # remote client public cert
    
        alpha = serving.Valet(port = 6101,
                              bufsize=131072,
                              wlog=wireLogAlpha,
                              store=store,
                              app=wsgiApp,
                              scheme='https',
                              keypath=serverKeypath,
                              certpath=serverCertpath,
                              cafilepath=clientCafilepath,)
    
        self.assertIs(alpha.servant.reopen(), True)
        self.assertEqual(alpha.servant.ha, ('0.0.0.0', 6101))
        self.assertEqual(alpha.servant.eha, ('127.0.0.1', 6101))
    
        console.terse("{0}\n".format("Building Patron ...\n"))
        wireLogBeta = wiring.WireLog(buffify=True,  same=True)
        result = wireLogBeta.reopen()
    
        #clientKeypath = '/etc/pki/tls/certs/client_key.pem'  # local client private key
        #clientCertpath = '/etc/pki/tls/certs/client_cert.pem'  # local client public cert
        #serverCafilepath = '/etc/pki/tls/certs/server.pem' # remote server public cert
    
        clientKeypath = self.certdirpath + '/client_key.pem'  # local client private key
        clientCertpath = self.certdirpath + '/client_cert.pem'  # local client public cert
        serverCafilepath = self.certdirpath + '/server.pem' # remote server public cert
    
        path = "https://{0}:{1}/".format('localhost', alpha.servant.eha[1])
    
        beta = clienting.Patron(bufsize=131072,
                                     wlog=wireLogBeta,
                                     store=store,
                                     path=path,
                                     reconnectable=True,
                                     scheme='https',
                                     certedhost=serverCertCommonName,
                                     keypath=clientKeypath,
                                     certpath=clientCertpath,
                                     cafilepath=serverCafilepath
                                     )
    
        self.assertIs(beta.connector.reopen(), True)
        self.assertIs(beta.connector.accepted, False)
        self.assertIs(beta.connector.connected, False)
        self.assertIs(beta.connector.cutoff, False)
    
        request = odict([('method', u'GET'),
                         ('path', u'/echo?name=fame'),
                         ('qargs', odict()),
                         ('fragment', u''),
                         ('headers', odict([('Accept', 'application/json'),
                                            ('Content-Length', 0)])),
                        ])
    
        beta.requests.append(request)
    
        while (beta.requests or beta.connector.txes or not beta.responses or
               not alpha.idle()):
            alpha.serviceAll()
            time.sleep(0.05)
>           beta.serviceAll()

ioflo/aio/http/test/test_serving.py:907: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ioflo/aio/http/clienting.py:1129: in serviceAll
    self.connector.serviceConnect()
ioflo/aio/tcp/clienting.py:307: in serviceConnect
    self.connect()
ioflo/aio/tcp/clienting.py:640: in connect
    self.handshake()
ioflo/aio/tcp/clienting.py:602: in handshake
    self.cs.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>, 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: invalid CA certificate (_ssl.c:1032)

/usr/lib/python3.13/ssl.py:1372: SSLCertVerificationError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------

Test Valet WSGI service with secure TLS request response

      Added node .meta to Store32
      Added share time to store Store32
      Added share realtime to store Store32
      Added share datetime to store Store32
Building Valet ...

Building Patron ...

______________________________________________________ BasicTestCase.testActify _______________________________________________________

self = <ioflo.base.test.test_acting.BasicTestCase testMethod=testActify>

    def testActify(self):
        """
        Test the actify decorator
        """
        console.terse("{0}\n".format(self.testActify.__doc__))
        @acting.actify("BlueBeard")
        def bearded(self, x=1, y=2):
            """
            Actor action method
            """
            z = x +  y
            return (self, z)
    
        self.assertIn("BlueBeard", acting.Actor.Registry)
        actor, inits, ioinits, parms = acting.Actor.__fetch__("BlueBeard")
        self.assertIs(actor._Parametric, True)
        self.assertDictEqual(actor.Inits, {})
        self.assertDictEqual(actor.Ioinits, {})
        self.assertDictEqual(actor.Parms, {})
        self.assertDictEqual(inits, {})
        self.assertDictEqual(ioinits, {})
        self.assertDictEqual(parms, {})
    
        actor = actor()  # create instance
        self.assertIsInstance(actor, acting.Actor )
        self.assertEqual(actor.__class__.__name__, "BlueBeard")
    
        self.assertEqual(actor.action.__self__.__class__.__name__, "BlueBeard")
        self.assertIs(actor.action.__func__, bearded)
        self.assertIs(actor.action.__self__, actor)
    
>       self.assertEqual(actor.action.__doc__, '\n            Actor action method\n            ')
E       AssertionError: '\nActor action method\n' != '\n            Actor action method\n            '
E         
E       - Actor action method
E       +             Actor action method
E       ? ++++++++++++
E       - 
E       +

ioflo/base/test/test_acting.py:76: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
   Ordering taskable taskers for House 'HouseTest' ...

Test the actify decorator

_______________________________________________________ BasicTestCase.testDoify _______________________________________________________

self = <ioflo.base.test.test_acting.BasicTestCase testMethod=testDoify>

    def testDoify(self):
        """
        Test the doify decorator
        """
        console.terse("{0}\n".format(self.testDoify.__doc__))
        @doing.doify("BlackSmith")
        def blackened(self, x=3, y=2):
            """
            Doer action method
            """
            z = x + y
            return (self, z)
    
        self.assertIn("BlackSmith", doing.Doer.Registry)
        actor, inits, ioinits, parms = doing.Doer.__fetch__("BlackSmith")
        self.assertIs(actor._Parametric, False)
        self.assertDictEqual(actor.Inits, {})
        self.assertDictEqual(actor.Ioinits, {})
        self.assertDictEqual(actor.Parms, {})
        self.assertDictEqual(inits, {})
        self.assertDictEqual(ioinits, {})
        self.assertDictEqual(parms, {})
    
        actor = actor()  # create instance
        self.assertIsInstance(actor, doing.Doer )
        self.assertEqual(actor.__class__.__name__, "BlackSmith")
    
        self.assertEqual(actor.action.__self__.__class__.__name__, "BlackSmith")
        self.assertIs(actor.action.__func__, blackened)
        self.assertIs(actor.action.__self__, actor)
    
>       self.assertEqual(actor.action.__doc__, '\n            Doer action method\n            ')
E       AssertionError: '\nDoer action method\n' != '\n            Doer action method\n            '
E         
E       - Doer action method
E       +             Doer action method
E       ? ++++++++++++
E       - 
E       +

ioflo/base/test/test_acting.py:115: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
   Ordering taskable taskers for House 'HouseTest' ...

Test the doify decorator

_____________________________________________________ BasicTestCase.testFrameDoer _____________________________________________________

self = <ioflo.base.test.test_acting.BasicTestCase testMethod=testFrameDoer>

    def testFrameDoer(self):
        """
        Test adding a Doer to a frame and running it
        """
        console.terse("{0}\n".format(self.testFrameDoer.__doc__))
        @doing.doify("TestDoer")
        def action(self, a="Felgercarb", **kwa):
            """
            Doer action method
            """
            share = self.store.create(".test.a").update(value=a)
    
        self.assertIn("TestDoer", doing.Doer.Registry)
        act = self.addDoer("TestDoer")
        self.assertIsInstance(act, acting.Act)
        self.assertIn(act, self.frame.reacts)
        self.assertEqual(act.actor, "TestDoer")
        self.assertEqual(act.frame, self.frame.name)
    
        self.resolve()  # resolve House
        self.assertIs(act.frame, self.frame)
        self.assertIs(act.frame.framer, self.framer)
        self.assertIs(act.actor.store, self.store)
        self.assertIn(act.actor.name, doing.Doer.Registry)
        self.assertEqual(act.actor.name, "TestDoer")
        self.assertIsInstance(act.actor, doing.Doer)
        self.assertEqual(act.actor.__class__.__name__, "TestDoer")
    
        self.assertEqual(act.actor.action.__self__.__class__.__name__, "TestDoer")
        self.assertIs(act.actor.action.__func__, action)
        self.assertIs(act.actor.action.__self__, act.actor)
    
>       self.assertEqual(act.actor.action.__doc__, '\n            Doer action method\n            ')
E       AssertionError: '\nDoer action method\n' != '\n            Doer action method\n            '
E         
E       - Doer action method
E       +             Doer action method
E       ? ++++++++++++
E       - 
E       +

ioflo/base/test/test_acting.py:154: AssertionError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
   Ordering taskable taskers for House 'HouseTest' ...

Test adding a Doer to a frame and running it

   Resolving House 'HouseTest' ...
     Presolving Framer FramerTest
       Resolving original moots for named clones ...
       Presolving frames for framer FramerTest
        Presolving Frame FrameTest
     Resolving Framer FramerTest
       Resolving frames for framer FramerTest
        Resolving Frame FrameTest
         Resolved act's Frame 'FrameTest' in Act for TestDoer
       Tracing outlines for framer FramerTest
========================================================== warnings summary ===========================================================
ioflo/aid/aiding.py:138
  /tmp/ioflo/ioflo/aid/aiding.py:138: SyntaxWarning: invalid escape sequence '\w'
    """Returns True if string s is valid Store path name

ioflo/aid/aiding.py:204
  /tmp/ioflo/ioflo/aid/aiding.py:204: SyntaxWarning: invalid escape sequence '\w'
    """Returns True if string s is valid python identifier (variable, attribute etc)

ioflo/aid/test/test_eventing.py::BasicTestCase::testEventify
  /tmp/ioflo/ioflo/aid/test/test_eventing.py:92: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    dt = datetime.datetime.utcnow()

ioflo/aid/test/test_eventing.py::BasicTestCase::testEventify
ioflo/aid/test/test_eventing.py::BasicTestCase::testEventize
ioflo/aid/test/test_eventing.py::BasicTestCase::testEventize
ioflo/aid/test/test_timing.py::BasicTestCase::testIso8601
  /tmp/ioflo/ioflo/aid/timing.py:59: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    dt = datetime.datetime.utcnow()  # naive

ioflo/aio/http/test/test_serving.py::BasicTestCase::testValetServiceBasic
  /tmp/ioflo/ioflo/aio/http/serving.py:369: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    self.headers[u'date'] = httping.httpDate1123(datetime.datetime.utcnow())

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================= short test summary info =======================================================
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestEchoTLS - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: invalid CA certificate (_ssl.c:1032)
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStream - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStreamChunked - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStreamFancy - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStreamFancyChunked - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStreamFancyJson - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testNonBlockingRequestStreamFancyJsonChunked - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronEchoSimpleFirst - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronPipelineEcho - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronPipelineEchoSimpleSecure - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: invalid CA certificate (_ssl.c:1032)
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronPipelineEchoSimpleSecurePath - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronPipelineStream - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronRedirectComplex - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronRedirectComplexSecure - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronRedirectSimple - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronRequestEcho - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_clienting.py::BasicTestCase::testPatronServiceEcho - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_serving.py::BasicTestCase::testPorterServiceEcho - AssertionError: False is not True
FAILED ioflo/aio/http/test/test_serving.py::BasicTestCase::testValetServiceBasicSecure - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: invalid CA certificate (_ssl.c:1032)
FAILED ioflo/base/test/test_acting.py::BasicTestCase::testActify - AssertionError: '\nActor action method\n' != '\n            Actor action method\n            '
FAILED ioflo/base/test/test_acting.py::BasicTestCase::testDoify - AssertionError: '\nDoer action method\n' != '\n            Doer action method\n            '
FAILED ioflo/base/test/test_acting.py::BasicTestCase::testFrameDoer - AssertionError: '\nDoer action method\n' != '\n            Doer action method\n            '
============================================== 22 failed, 95 passed, 8 warnings in 5.38s ==============================================

Some of them look to be due to docstring processing changes in Python 3.13, see e.g. https://projects.gentoo.org/python/guide/porting.html#docstring-dedenting

Not sure about the SSL errors — it's possible that SSL module uses stricter defaults.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions