circuitpython/tests/net_inet/tls_num_errors.py
Damien George af745a5982 tests/net_inet/tls_num_errors.py: Make alloc of emg-exc-buf optional.
The unix port doesn't have `micropython.alloc_emergency_exception_buf()`
but it's still possible to run and pass this test.  So make that call
optional.

Signed-off-by: Damien George <damien@micropython.org>
2025-08-28 23:19:20 +10:00

48 lines
1.2 KiB
Python

# test that modtls produces a numerical error message when out of heap
import socket, ssl, sys
try:
from micropython import heap_lock, heap_unlock
except:
print("SKIP")
raise SystemExit
try:
from micropython import alloc_emergency_exception_buf
alloc_emergency_exception_buf(256)
except:
pass
# test with heap locked to see it switch to number-only error message
def test(addr):
s = socket.socket()
s.connect(addr)
try:
s.setblocking(False)
s = ssl.wrap_socket(s, do_handshake=False)
heap_lock()
print("heap is locked")
while True:
ret = s.write("foo")
if ret:
break
heap_unlock()
print("wrap: no exception")
except OSError as e:
heap_unlock()
# mbedtls produces "-29184"
# axtls produces "RECORD_OVERFLOW"
ok = "-29184" in str(e) or "RECORD_OVERFLOW" in str(e)
print("wrap:", ok)
if not ok:
print("got exception:", e)
s.close()
if __name__ == "__main__":
# connect to plain HTTP port, oops!
addr = socket.getaddrinfo("micropython.org", 80)[0][-1]
test(addr)