Browse Source
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.pull/5968/head
Thorsten von Eicken
5 years ago
committed by
Damien George
8 changed files with 85 additions and 44 deletions
@ -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) |
@ -0,0 +1,4 @@ |
|||||
|
[Errno 2] ENOENT |
||||
|
(-5379, 'ESP_ERR_OTA_VALIDATE_FAILED') |
||||
|
exc: |
||||
|
-5379 |
Loading…
Reference in new issue