circuitpython/tests/micropython
Jim Mussared a64f2fdca0 py/dynruntime.h: Implement MP_OBJ_NEW_QSTR.
Because mpy_ld.py doesn't know the target object representation, it emits
instances of `MP_OBJ_NEW_QSTR(MP_QSTR_Foo)` as const string objects, rather
than qstrs. However this doesn't work for map keys (e.g. for a locals dict)
because the map has all_keys_are_qstrs flag is set (and also auto-complete
requires the map keys to be qstrs).

Instead, emit them as regular qstrs, and make a functioning MP_OBJ_NEW_QSTR
function available (via `native_to_obj`, also used for e.g. making
integers).

Remove the code from mpy_ld.py to emit qstrs as constant strings, but leave
behind the scaffold to emit constant objects in case we want to do use this
in the future.

Strictly this should be a .mpy sub-version bump, even though the function
table isn't changing, it does lead to a change in behavior for a new .mpy
running against old MicroPython. `mp_native_to_obj` will incorrectly return
the qstr value directly as an `mp_obj_t`, leading to unexpected results.
But given that it's broken at the moment, it seems unlikely that anyone is
relying on this, so it's not work the other downsides of a sub-version bump
(i.e. breaking pure-Python modules that use @native). The opposite case of
running an old .mpy on new MicroPython is unchanged, and remains broken in
exactly the same way.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-09-01 16:14:22 +10:00
..
builtin_execfile.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
builtin_execfile.py.exp tests/micropython: Add test for builtin execfile() function. 2022-06-29 12:48:42 +10:00
const2.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
const2.py.exp tests/micropython: Add tests for const names being replaced in parser. 2016-09-27 13:03:53 +10:00
const_alltypes.py py/parse: Allow all constant objects to be used in "X = const(o)". 2022-05-18 16:18:35 +10:00
const_alltypes.py.exp py/parse: Allow all constant objects to be used in "X = const(o)". 2022-05-18 16:18:35 +10:00
const_error.py py/parse: Support constant folding of power operator for integers. 2020-05-03 16:23:19 +10:00
const_error.py.exp py/parse: Remove unnecessary check in const folding for ** operator. 2020-04-09 16:02:39 +10:00
const_intbig.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
const_intbig.py.exp tests/micropython: Add test for consts that are bignums. 2017-02-24 13:08:18 +11:00
const.py tests/micropython/const.py: Add comment about required config for test. 2021-11-17 14:28:20 +11:00
const.py.exp py/parse: Treat constants that start with underscore as private. 2016-06-06 17:28:32 +01:00
decorator_error.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
decorator_error.py.exp tests: Add tests for SyntaxError, TypeError, and other missing things. 2015-03-25 23:10:09 +00:00
decorator.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
decorator.py.exp tests: Add tests for things that are not already tested. 2015-03-12 22:48:45 +00:00
emg_exc.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
emg_exc.py.exp tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
extreme_exc.py tests/micropython: Fully unlink nested list in extreme exc test. 2022-05-18 09:16:33 +10:00
extreme_exc.py.exp tests/micropython/extreme_exc.py: Allow to run without any emg exc buf. 2018-04-05 03:03:16 +10:00
heap_lock.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heap_lock.py.exp py/modmicropython: Add heap_locked function to test state of heap. 2020-03-11 16:54:16 +11:00
heap_locked.py py/modmicropython: Add heap_locked function to test state of heap. 2020-03-11 16:54:16 +11:00
heap_locked.py.exp py/modmicropython: Add heap_locked function to test state of heap. 2020-03-11 16:54:16 +11:00
heapalloc_bytesio2.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
heapalloc_bytesio2.py.exp py/objstringio: If created from immutable object, follow copy on write policy. 2017-06-09 17:33:01 +03:00
heapalloc_bytesio.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
heapalloc_bytesio.py.exp tests/heapalloc_bytesio: Test for BytesIO with preallocates space. 2017-02-02 00:38:38 +03:00
heapalloc_exc_compressed_emg_exc.py tests/micropython: Switch from set.pop to raise-0 to test exc strings. 2022-03-07 16:48:35 +11:00
heapalloc_exc_compressed_emg_exc.py.exp tests/micropython: Switch from set.pop to raise-0 to test exc strings. 2022-03-07 16:48:35 +11:00
heapalloc_exc_compressed.py tests/micropython: Switch from set.pop to raise-0 to test exc strings. 2022-03-07 16:48:35 +11:00
heapalloc_exc_compressed.py.exp tests/micropython: Switch from set.pop to raise-0 to test exc strings. 2022-03-07 16:48:35 +11:00
heapalloc_exc_raise.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_exc_raise.py.exp tests/heapalloc_exc_raise.py: Heap alloc test for raising/catching exc. 2017-02-20 04:22:32 +03:00
heapalloc_fail_bytearray.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_bytearray.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_fail_dict.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_dict.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_fail_list.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_list.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_fail_memoryview.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_memoryview.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_fail_set.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_set.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_fail_tuple.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_fail_tuple.py.exp tests/micropython: Add some tests for failed heap allocation. 2019-04-18 14:34:12 +10:00
heapalloc_inst_call.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_inst_call.py.exp tests/heapalloc_inst_call: Test for no alloc for simple object calls. 2016-12-25 00:50:27 +03:00
heapalloc_int_from_bytes.py tests/micropython: Add test for int.from_bytes with many zero bytes. 2017-05-06 10:29:09 +10:00
heapalloc_int_from_bytes.py.exp tests/micropython: Add test for int.from_bytes with many zero bytes. 2017-05-06 10:29:09 +10:00
heapalloc_iter.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
heapalloc_str.py tests/heapalloc_str: Test no-replacement case for str.replace(). 2017-03-22 22:17:52 +03:00
heapalloc_str.py.exp tests/heapalloc_str: Test for alloc-free string operations. 2017-01-27 00:49:39 +03:00
heapalloc_super.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_super.py.exp tests: Add tests for calling super and loading a method directly. 2017-04-22 23:39:38 +10:00
heapalloc_traceback.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
heapalloc_traceback.py.exp tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
heapalloc_yield_from.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
heapalloc_yield_from.py.exp tests/micropython: Add test for yield-from while heap is locked. 2019-12-27 12:34:22 +11:00
heapalloc.py tests/micropython: Add tests that const tuples don't use the heap. 2022-04-15 00:17:02 +10:00
heapalloc.py.exp tests/micropython: Add tests that const tuples don't use the heap. 2022-04-15 00:17:02 +10:00
import_mpy_invalid.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
import_mpy_invalid.py.exp py: Rework bytecode and .mpy file format to be mostly static data. 2022-02-24 18:08:43 +11:00
import_mpy_native_gc.py py/dynruntime.h: Implement MP_OBJ_NEW_QSTR. 2023-09-01 16:14:22 +10:00
import_mpy_native_gc.py.exp py/persistentcode: Maintain root ptr list of imported native .mpy code. 2020-08-02 22:34:09 +10:00
import_mpy_native.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
import_mpy_native.py.exp tests/micropython: Make import_mpy_native test run on all architectures. 2022-05-26 12:54:43 +10:00
kbd_intr.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
kbd_intr.py.exp tests/micropython: Add test for micropython.kbd_intr(). 2017-04-18 17:24:30 +10:00
meminfo.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
meminfo.py.exp tests/meminfo: Update for addition of "max free sz" output. 2016-07-01 00:39:26 +03:00
memstats.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
memstats.py.exp tests: Add missing tests for builtins, and many other things. 2015-04-04 22:05:30 +01:00
native_closure.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_closure.py.exp tests: Add specific test for closures in native emitter. 2015-04-03 16:14:25 +01:00
native_const_intbig.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
native_const_intbig.py.exp tests/micropython/: Split off intbig tests. 2017-03-07 07:12:58 +01:00
native_const.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
native_const.py.exp tests/micropython: Test loading const objs in native and viper funcs. 2018-09-27 23:39:08 +10:00
native_for.py tests: Move native for test from pybnative to micropython. 2021-01-29 23:57:10 +11:00
native_for.py.exp tests: Move native for test from pybnative to micropython. 2021-01-29 23:57:10 +11:00
native_fun_attrs.py py/objfun: Support function attributes on native functions. 2022-06-25 00:22:15 +10:00
native_fun_attrs.py.exp py/objfun: Support function attributes on native functions. 2022-06-25 00:22:15 +10:00
native_gen.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_gen.py.exp tests/micropython: Add more test cases for native generators. 2022-05-18 15:23:11 +10:00
native_misc.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_misc.py.exp py/emitnative: Ensure stack settling is safe mid-branch. 2021-07-19 23:18:59 +10:00
native_try_deep.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_try_deep.py.exp tests/micropython: Add tests for try and with blocks under native/viper. 2018-08-17 14:11:36 +10:00
native_try.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_try.py.exp tests/micropython: Add tests for try and with blocks under native/viper. 2018-08-17 14:11:36 +10:00
native_while.py tests: Move native while test from pybnative to micropython. 2022-05-26 12:54:43 +10:00
native_while.py.exp tests: Move native while test from pybnative to micropython. 2022-05-26 12:54:43 +10:00
native_with.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
native_with.py.exp py: Shorten error messages by using contractions and some rewording. 2018-09-20 14:33:10 +10:00
opt_level_lineno.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
opt_level_lineno.py.exp tests: Split out test for optimisation level and line-no printing. 2019-08-28 12:47:58 +10:00
opt_level.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
opt_level.py.exp tests: Split out test for optimisation level and line-no printing. 2019-08-28 12:47:58 +10:00
schedule.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
schedule.py.exp tests/micropython: Add tests for micropython.schedule(). 2017-03-20 15:20:26 +11:00
stack_use.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
stack_use.py.exp tests/micropython: Add test for micropython.stack_use() function. 2016-12-28 17:46:52 +11:00
viper_addr.py py/objarray: Detect bytearray(str) without an encoding. 2022-11-08 23:09:22 +11:00
viper_addr.py.exp py: Allow to pass in read-only buffers to viper and inline-asm funcs. 2019-08-06 15:58:23 +10:00
viper_args.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_args.py.exp py/emitnative: Support arbitrary number of arguments to viper functions. 2018-09-15 22:39:27 +10:00
viper_binop_arith_uint.py py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_arith_uint.py.exp py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_arith.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_binop_arith.py.exp py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
viper_binop_bitwise_uint.py py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_bitwise_uint.py.exp py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_comp_imm.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_binop_comp_imm.py.exp asmarm: Fix bug with encoding small negative ints using MVN instruction. 2014-12-14 03:24:17 +02:00
viper_binop_comp_uint.py py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_comp_uint.py.exp py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_binop_comp.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_binop_comp.py.exp tests: Add tests for viper binary operations. 2014-09-29 19:42:06 +01:00
viper_binop_divmod.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_binop_divmod.py.exp py/emitnative: Implement floor-division and modulo for viper emitter. 2017-10-11 18:54:34 +11:00
viper_binop_multi_comp.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_binop_multi_comp.py.exp py: Partially fix viper multi-comparison; add test for it. 2014-10-19 19:00:51 +01:00
viper_cond.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_cond.py.exp tests/micropython/viper_cond: Add test for large int as bool. 2018-08-04 22:16:24 +10:00
viper_const_intbig.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_const_intbig.py.exp tests/micropython: Test loading const objs in native and viper funcs. 2018-09-27 23:39:08 +10:00
viper_const.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_const.py.exp tests/micropython: Test loading const objs in native and viper funcs. 2018-09-27 23:39:08 +10:00
viper_error.py py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_error.py.exp py/emitnative: Implement binary operations for viper uint operands. 2020-06-27 00:24:04 +10:00
viper_globals.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_globals.py.exp py/emitnative: Make viper funcs run with their correct globals context. 2018-09-15 22:39:27 +10:00
viper_import.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_import.py.exp tests/micropython: Add test for import from within viper function. 2016-11-10 22:54:55 +11:00
viper_misc2.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_misc2.py.exp py/emitnative: Fix x86-64 emitter to generate correct 8/16-bit stores. 2021-05-20 23:43:25 +10:00
viper_misc3.py tests/micropython: Split viper_misc test into two files. 2023-02-09 16:12:25 +11:00
viper_misc3.py.exp tests/micropython: Split viper_misc test into two files. 2023-02-09 16:12:25 +11:00
viper_misc_intbig.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
viper_misc_intbig.py.exp tests/micropython/: Split off intbig tests. 2017-03-07 07:12:58 +01:00
viper_misc.py tests/micropython: Split viper_misc test into two files. 2023-02-09 16:12:25 +11:00
viper_misc.py.exp tests/micropython: Split viper_misc test into two files. 2023-02-09 16:12:25 +11:00
viper_ptr8_load.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr8_load.py.exp tests: Add more tests for viper, including tests for ViperTypeError's. 2015-04-22 23:18:28 +01:00
viper_ptr8_store.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr8_store.py.exp tests: Add more tests for viper, including tests for ViperTypeError's. 2015-04-22 23:18:28 +01:00
viper_ptr16_load.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr16_load.py.exp tests: Add more tests for viper 16/32-bit load/store, and ellipsis. 2015-10-13 18:24:36 +01:00
viper_ptr16_store.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr16_store.py.exp tests: Add more tests for viper 16/32-bit load/store, and ellipsis. 2015-10-13 18:24:36 +01:00
viper_ptr32_load.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr32_load.py.exp tests: Add more tests for viper 16/32-bit load/store, and ellipsis. 2015-10-13 18:24:36 +01:00
viper_ptr32_store.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_ptr32_store.py.exp tests: Add more tests for viper 16/32-bit load/store, and ellipsis. 2015-10-13 18:24:36 +01:00
viper_storeattr.py py/emitnative: Fix STORE_ATTR viper code-gen when value is not a pyobj. 2022-07-12 17:18:27 +10:00
viper_storeattr.py.exp py/emitnative: Fix STORE_ATTR viper code-gen when value is not a pyobj. 2022-07-12 17:18:27 +10:00
viper_subscr_multi.py py/emitnative: Ensure load_subscr does not clobber existing REG_ARG_2. 2022-11-11 12:25:32 +11:00
viper_subscr_multi.py.exp py/emitnative: Ensure load_subscr does not clobber existing REG_ARG_2. 2022-11-11 12:25:32 +11:00
viper_subscr.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
viper_subscr.py.exp py: Implement implicit cast to obj for viper load/store index/value. 2015-06-04 11:52:16 +01:00
viper_try.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_try.py.exp tests/micropython: Add tests for try and with blocks under native/viper. 2018-08-17 14:11:36 +10:00
viper_types.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_types.py.exp py/native: Improve support for bool type in viper functions. 2019-05-03 23:18:30 +10:00
viper_with.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
viper_with.py.exp py: Shorten error messages by using contractions and some rewording. 2018-09-20 14:33:10 +10:00