diff options
author | Thorsten von Eicken <tve@voneicken.com> | 2020-04-28 10:58:43 -0700 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2020-05-09 16:43:48 +1000 |
commit | ab4e197707cd456499d680091fdc9daeff18c62a (patch) | |
tree | a8af94aeda01b21aa417cd1aa35f37653e79808d /tests/net_inet | |
parent | adb673302238bb1129ad62e7783dc650aaa27277 (diff) | |
download | micropython-ab4e197707cd456499d680091fdc9daeff18c62a.tar.gz micropython-ab4e197707cd456499d680091fdc9daeff18c62a.zip |
esp32/modsocket: Fix getaddrinfo to raise on error.
This commit fixes the behaviour of socket.getaddrinfo on the ESP32 so it
raises an OSError when the name resolution fails instead of returning a []
or a resolution for 0.0.0.0.
Tests are added (generic and ESP32-specific) to verify behaviour consistent
with CPython, modulo the different types of exceptions per MicroPython
documentation.
Diffstat (limited to 'tests/net_inet')
-rw-r--r-- | tests/net_inet/getaddrinfo.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/net_inet/getaddrinfo.py b/tests/net_inet/getaddrinfo.py new file mode 100644 index 0000000000..765723ae73 --- /dev/null +++ b/tests/net_inet/getaddrinfo.py @@ -0,0 +1,52 @@ +try: + import usocket as socket, sys +except: + import socket, sys + + +def test_non_existent(): + try: + res = socket.getaddrinfo("nonexistent.example.com", 80) + print("getaddrinfo returned", res) + except OSError as e: + print("getaddrinfo raised") + + +def test_bogus(): + try: + res = socket.getaddrinfo("hey.!!$$", 80) + print("getaddrinfo returned", res) + except OSError as e: + print("getaddrinfo raised") + except Exception as e: + print("getaddrinfo raised") # CPython raises UnicodeError!? + + +def test_ip_addr(): + try: + res = socket.getaddrinfo("10.10.10.10", 80) + print("getaddrinfo returned resolutions") + except Exception as e: + print("getaddrinfo raised", e) + + +def test_0_0_0_0(): + try: + res = socket.getaddrinfo("0.0.0.0", 80) + print("getaddrinfo returned resolutions") + except Exception as e: + print("getaddrinfo raised", e) + + +def test_valid(): + try: + res = socket.getaddrinfo("micropython.org", 80) + print("getaddrinfo returned resolutions") + except Exception as e: + print("getaddrinfo raised", e) + + +test_funs = [n for n in dir() if n.startswith("test_")] +for f in sorted(test_funs): + print("--", f, end=": ") + eval(f + "()") |