summaryrefslogtreecommitdiffstatshomepage
path: root/tests/net_inet
diff options
context:
space:
mode:
authorThorsten von Eicken <tve@voneicken.com>2020-04-28 10:58:43 -0700
committerDamien George <damien.p.george@gmail.com>2020-05-09 16:43:48 +1000
commitab4e197707cd456499d680091fdc9daeff18c62a (patch)
treea8af94aeda01b21aa417cd1aa35f37653e79808d /tests/net_inet
parentadb673302238bb1129ad62e7783dc650aaa27277 (diff)
downloadmicropython-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.py52
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 + "()")