From 1ae7e0e561134c39471e3000eced33da732b4103 Mon Sep 17 00:00:00 2001 From: Thorsten von Eicken Date: Tue, 31 Mar 2020 16:03:01 -0700 Subject: esp32: Consolidate check_esp_err functions and add IDF error string. This commit consolidates a number of check_esp_err functions that check whether an ESP-IDF return code is OK and raises an exception if not. The exception raised is an OSError with the error code as the first argument (negative if it's ESP-IDF specific) and the ESP-IDF error string as the second argument. This commit also fixes esp32.Partition.set_boot to use check_esp_err, and uses that function for a unit test. --- tests/esp32/check_err_str.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/esp32/check_err_str.py (limited to 'tests/esp32/check_err_str.py') diff --git a/tests/esp32/check_err_str.py b/tests/esp32/check_err_str.py new file mode 100644 index 000000000..055eecf74 --- /dev/null +++ b/tests/esp32/check_err_str.py @@ -0,0 +1,43 @@ +try: + from esp32 import Partition as p + import micropython +except ImportError: + print("SKIP") + raise SystemExit + +# try some vanilla OSError to get std error code +try: + open("this filedoesnotexist", "r") + print("FAILED TO RAISE") +except OSError as e: + print(e) + +# try to make nvs partition bootable, which ain't gonna work +part = p.find(type=p.TYPE_DATA)[0] +fun = p.set_boot +try: + fun(part) + print("FAILED TO RAISE") +except OSError as e: + print(e) + +# same but with out of memory condition by locking the heap +exc = "FAILED TO RAISE" +micropython.heap_lock() +try: + fun(part) +except OSError as e: + exc = e +micropython.heap_unlock() +print("exc:", exc) # exc empty due to no memory + +# same again but having an emergency buffer +micropython.alloc_emergency_exception_buf(256) +exc = "FAILED TO RAISE" +micropython.heap_lock() +try: + fun(part) +except Exception as e: + exc = e +micropython.heap_unlock() +print(exc) -- cgit v1.2.3