mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 04:00:28 +01:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
This commit changes the "viper_ptr*_store_boundary" tests to make them fail more gracefully in low memory conditions. The original version of the tests compiled viper code blocks on the fly when it needed them, making them fail at runtime on some boards that do not come with enough memory for this test. This clashes with "run-tests.py"'s ability to look for a particular signature to mark tests as skipped due to not enough memory. Now compiled code blocks are generated at the beginning of the test inside an appropriate exception handler. In case of a memory error when pre-compiling a code block, the running test exits reporting a low memory condition to the test runner. This allows to have clean test runs on all platforms when it comes to viper pointer tests. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
# Test boundary conditions for various architectures
|
|
|
|
SET_TEMPLATE = """
|
|
@micropython.viper
|
|
def set{off}(dest: ptr8):
|
|
saved = dest
|
|
dest[{off}] = {val}
|
|
assert int(saved) == int(dest)
|
|
"""
|
|
|
|
BIT_THRESHOLDS = (5, 8, 11, 12)
|
|
SIZE = 1
|
|
MASK = (1 << (8 * SIZE)) - 1
|
|
|
|
next_int = 1
|
|
test_buffer = bytearray(SIZE)
|
|
|
|
|
|
def next_value() -> uint:
|
|
global next_int
|
|
global test_buffer
|
|
for index in range(1, SIZE):
|
|
test_buffer[index - 1] = test_buffer[index]
|
|
test_buffer[SIZE - 1] = next_int
|
|
next_int += 1
|
|
output = 0
|
|
for byte in test_buffer:
|
|
output = (output << 8) | byte
|
|
return output & MASK
|
|
|
|
|
|
def get_index(src: ptr8, i: int):
|
|
return src[i]
|
|
|
|
|
|
@micropython.viper
|
|
def set_index(dest: ptr8, i: int, val: uint):
|
|
saved = dest
|
|
dest[i] = val
|
|
assert int(dest) == int(saved)
|
|
|
|
|
|
try:
|
|
buffer = bytearray((((1 << max(BIT_THRESHOLDS)) // 1024) + 1) * 1024)
|
|
|
|
for bit in BIT_THRESHOLDS:
|
|
offset = (1 << bit) - (2 * SIZE)
|
|
for index in range(0, 3 * SIZE, SIZE):
|
|
exec(SET_TEMPLATE.format(off=(offset + index) // SIZE, val=next_value()))
|
|
except MemoryError:
|
|
print("SKIP-TOO-LARGE")
|
|
raise SystemExit
|
|
|
|
|
|
for bit in BIT_THRESHOLDS:
|
|
print("---", bit)
|
|
offset = (1 << bit) - (2 * SIZE)
|
|
for index in range(0, 3 * SIZE, SIZE):
|
|
globals()["set{}".format((offset + index) // SIZE)](buffer)
|
|
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
|
for index in range(0, 3 * SIZE, SIZE):
|
|
set_index(buffer, (offset + index) // SIZE, next_value())
|
|
print(hex(get_index(buffer, (offset + index) // SIZE)))
|