summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2023-06-05 16:52:29 +1000
committerJim Mussared <jim.mussared@gmail.com>2023-06-08 17:54:24 +1000
commit5e50975a6dd9466afafbcd012c00078093fe1f57 (patch)
tree92e29c7c944b69ed94c3f161c6c8519d5e7bed15 /shared
parent7d2ee8aed0cc5ba1a0041ac4cc7631898aaf252f (diff)
py/modsys: Allow sys.path to be assigned to.
Previously sys.path could be modified by append/pop or slice assignment. This allows `sys.path = [...]`, which can be simpler in many cases, but also improves CPython compatibility. It also allows sys.path to be set to a tuple which means that you can clear sys.path (e.g. temporarily) with no allocations. This also makes sys.path (and sys.argv for consistency) able to be disabled via mpconfig. The unix port (and upytesthelper) require them, so they explicitly verify that they're enabled. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'shared')
-rw-r--r--shared/upytesthelper/upytesthelper.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/shared/upytesthelper/upytesthelper.c b/shared/upytesthelper/upytesthelper.c
index 12fa8276b..ba20037f7 100644
--- a/shared/upytesthelper/upytesthelper.c
+++ b/shared/upytesthelper/upytesthelper.c
@@ -31,6 +31,14 @@
#include "py/compile.h"
#include "upytesthelper.h"
+#if !MICROPY_PY_SYS_PATH
+#error "upytesthelper requires MICROPY_PY_SYS_PATH=1"
+#endif
+
+#if !MICROPY_PY_SYS_ARGV
+#error "upytesthelper requires MICROPY_PY_SYS_ARGV=1"
+#endif
+
static const char *test_exp_output;
static int test_exp_output_len, test_rem_output_len;
static int test_failed;
@@ -93,7 +101,7 @@ void upytest_execute_test(const char *src) {
// reinitialized before running each.
gc_init(heap_start, heap_end);
mp_init();
- mp_obj_list_init(mp_sys_path, 0);
+ mp_sys_path = mp_obj_new_list(0, NULL);
#if MICROPY_MODULE_FROZEN
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__dot_frozen));
#endif