Thank you, merged your patch :) Regards, Tim
On 9/10/26 07:15, Nigko Yerden wrote:
Hello,I found [1] the following 11 tests from `testenv` directory||fails when run on GNU Hurd:1. Test-hsts.py 2. Test-https-k.py 3. Test--https.py 4. Test--https-crl.py 5. Test-pinnedpubkey-der-https.py 6. Test-pinnedpubkey-der-no-check-https.py 7. Test-pinnedpubkey-hash-https.py 8. Test-pinnedpubkey-hash-no-check-fail-https.py 9. Test-pinnedpubkey-pem-fail-https.py 10. Test-pinnedpubkey-pem-https.py 11. Test-k.py Here is what happens when I run 'Test--https.py' in Python debugger: ```sh env SSL_TESTS=1 python3 -m pdb ./Test--https.py> /tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/Test-- https.py(2)<module>()-> from sys import exit (Pdb) cont Running Test Test--https.py Traceback (most recent call last):File "/gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/pdb.py", line 1960, in mainpdb._run(target)File "/gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/pdb.py", line 1754, in _runself.run(target.code)File "/gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/bdb.py", line 627, in runexec(cmd, globals, locals) File "<string>", line 1, in <module>File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/Test-- https.py", line 54, in <module>).begin () ^^^^^^^^File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/test/ http_test.py", line 35, in beginself.setup()File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/test/ http_test.py", line 28, in setupself.server_setup()File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/test/ base_test.py", line 88, in server_setupinstance = self.instantiate_server_by(protocol) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/test/ http_test.py", line 48, in instantiate_server_byserver = {HTTP: HTTPd, ^^^^^^^^^^^^^File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/server/ http/http_server.py", line 478, in __init__self.server_inst = self.server_class(addr, self.handler) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/tmp/guix-build-wget-1.25.0.drv-0/wget-1.25.0/testenv/server/ http/http_server.py", line 56, in __init__self.server_bind()File "/gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/http/server.py", line 136, in server_bindsocketserver.TCPServer.server_bind(self)File "/gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/socketserver.py", line 478, in server_bindself.socket.bind(self.server_address) OSError: [Errno 1073741846] Invalid argument Uncaught exception. Entering post mortem debugging Running 'cont' or 'step' will restart the program> /gnu/store/gsv7f12nhzvq6dchdw5hyg603y92b8di-python-3.12.12/lib/ python3.12/socketserver.py(478)server_bind()-> self.socket.bind(self.server_address) (Pdb) ``` Tests 1-10 have very similar behavior: all their backtraces lead to this piece of code in testenv/server/http/http_server.py: ```Python class HTTPSServer(StoppableHTTPServer): """ The HTTPSServer class extends the StoppableHTTPServer class with additional support for secure connections through SSL. """ def __init__(self, address, handler): import ssl BaseServer.__init__(self, address, handler)# step one up because test suite change directory away from $srcdir# (don't do that !!!) CERTFILE = os.path.abspath(os.path.join('..', os.getenv('srcdir', '.'), 'certs', 'server-cert.pem')) KEYFILE = os.path.abspath(os.path.join('..', os.getenv('srcdir', '.'), 'certs', 'server-key.pem')) ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_SERVER) ctx.load_cert_chain(CERTFILE, KEYFILE) self.socket = ctx.wrap_socket( sock=socket.socket(self.address_family, self.socket_type), server_side=True ) --> self.server_bind() self.server_activate() ```According to Python documentation on "TLS/SSL wrapper for socket objects' [2],a socket.socket object that is wrapped with wrap_socket is assumed to be an already listening socket (i.e binded and activated), but here it is not:instead self.server_bind() and self.server_activate() bind and activate an alreadywrapped socket (self.socket). I rewrote this piece of code as follows: ```Python class HTTPSServer(StoppableHTTPServer): """ The HTTPSServer class extends the StoppableHTTPServer class with additional support for secure connections through SSL. """ def __init__(self, address, handler): import ssl # This also calls self.server_bind() and self.server_activate() # due to bind_and_activate=True default argument so that # self.socket becomes a listening socket: TCPServer.__init__(self, address, handler)# step one up because test suite change directory away from $srcdir# (don't do that !!!) CERTFILE = os.path.abspath(os.path.join('..', os.getenv('srcdir', '.'), 'certs', 'server-cert.pem')) KEYFILE = os.path.abspath(os.path.join('..', os.getenv('srcdir', '.'), 'certs', 'server-key.pem')) ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_SERVER) ctx.load_cert_chain(CERTFILE, KEYFILE) self.socket = ctx.wrap_socket(self.socket, server_side=True) ``` and it fixed tests 1-10.Test 11 fails simply because `Test-k.py` is not aware that 'GNU' platform is also 'unix'.It was easy to fix.See also PR [3] that was submitted to the GNU Guix repo to fix these failing tests.[1] https://codeberg.org/guix/guix/issues/11124 [2] https://docs.python.org/3.7/library/ssl.html#ssl.SSLContext.wrap_socket [3] https://codeberg.org/guix/guix/pulls/11127
OpenPGP_signature.asc
Description: OpenPGP digital signature
