diff options
author | Thorsten von Eicken <tve@voneicken.com> | 2020-03-31 16:03:01 -0700 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2020-04-23 10:59:07 +1000 |
commit | 1ae7e0e561134c39471e3000eced33da732b4103 (patch) | |
tree | a1d1f7393863cf0fddf8dcae82aabd1e04768971 /tests/esp32/check_err_str.py | |
parent | a177831c46a7e217fed6562510e12183377053f7 (diff) |
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.
Diffstat (limited to 'tests/esp32/check_err_str.py')
-rw-r--r-- | tests/esp32/check_err_str.py | 43 |
1 files changed, 43 insertions, 0 deletions
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) |