circuitpython/tools
Damien George d9a0fdda9a qemu-arm: Rework to provide a REPL and run tests via a pty serial port.
Currently, the qemu-arm (and qemu-riscv) port has two build modes:
- a simple test that executes a Python string; and
- a full test that uses tinytest to embed all tests within the firmware,
  then executes that and captures the output.

This is very different to all the other ports.  A difficulty with using
tinytest is that with the large number of tests the firmware overflows its
virtual flash size.  It's also hard to run tests via .mpy files and with
the native emitter.  Being different to the other ports also means an extra
burden on maintenance.

This commit reworks the qemu-arm port so that it has a single build target
that creates a standard firmware which has a REPL.  When run under
qemu-system-arm, the REPL acts like any other bare-metal port, complete
with soft reset (use machine.reset() to turn it off and exit
qemu-system-arm).

This approach gives many benefits:
- allows playing with a REPL without hardware;
- allows running the test suite as it would on a bare-metal board, by
  making qemu-system-arm redirect the UART serial of the virtual device to
  a /dev/pts/xx file, and then running run-tests.py against that serial
  device;
- skipping tests is now done via the logic in `run-tests.py` and no longer
  needs multiple places to define which tests to skip
  (`tools/tinytest-codegen.py`, `ports/qemu-arm/tests_profile.txt` and also
  `tests/run-tests.py`);
- allows testing/using mpremote with the qemu-arm port.

Eventually the qemu-riscv port would have a similar change.

Prior to this commit the test results were:

    743 tests ok.  (121 skipped)

With this commit the test results are:

    753 tests performed (22673 individual testcases)
    753 tests passed
    138 tests skipped

More tests are skipped because more are included in the run. But overall
more tests pass.

Signed-off-by: Damien George <damien@micropython.org>
2024-08-28 11:52:08 +10:00
..
autobuild esp32/boards: Remove all IDF3 variants. 2024-08-20 12:49:12 +10:00
mpremote tools/mpremote: Fix mpremote mip install with multiple lib in sys.path. 2024-06-28 11:07:01 +10:00
.gitattributes micropython-upip: Mark as binary file and re-commit. 2015-06-06 23:09:23 +03:00
.gitignore tools: check-in errordeveloper/tinytest@eb2dbc858f 2014-05-08 01:41:21 +03:00
boardgen.py all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
cc1 tools: Add C middle-processor to make builtin tables proper hash tables. 2015-12-31 00:24:33 +00:00
ci.sh qemu-arm: Rework to provide a REPL and run tests via a pty serial port. 2024-08-28 11:52:08 +10:00
codeformat.py nrf/modules/machine: Enable code formatting. 2024-03-26 12:49:09 +11:00
codestats.sh all: Prune trailing whitespace. 2024-03-07 16:25:17 +11:00
dfu.py tools/dfu.py: Make tool work with python3 when parsing DFU files. 2021-11-01 15:46:59 +11:00
file2h.py all: Reformat C and Python source code with tools/codeformat.py. 2020-02-28 10:33:03 +11:00
gen-changelog.sh tools/gen-changelog.sh: Exclude "-preview" tags from generated log. 2024-01-05 15:06:14 +11:00
gen-cpydiff.py docs: Add note about position-only arguments in CPython vs MicroPython. 2024-01-25 11:56:38 +11:00
hci_trace_to_pcap.py extmod/modbluetooth: Make all HCI transports trace in the same format. 2023-04-26 11:37:20 +10:00
insert-usb-ids.py all: Fix strings with backslash by using raw string literals. 2023-05-02 11:55:02 +10:00
makemanifest.py tools/makemanifest.py: Generate working code for empty manifests. 2024-06-05 14:07:26 +02:00
manifestfile.py tools/manifestfile.py: Fix freeze() when script is an empty iterable. 2024-03-25 13:41:37 +11:00
metrics.py tools/metrics.py: Change rp2 board selection to RPI_PICO_W. 2024-06-04 10:54:35 +10:00
mpy-tool.py tools/mpy-tool.py: Implement freezing of long-long ints. 2024-06-27 17:53:31 +10:00
mpy_bin2res.py tools/mpy_bin2res: Tools to convert binary resources to Python module. 2017-07-27 14:41:27 +03:00
mpy_cross_all.py all: Remove MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE. 2021-09-16 16:04:03 +10:00
mpy_ld.py py/dynruntime: Export mp_load_method_maybe and mp_arg_parse_all* funcs. 2024-05-24 13:50:57 +10:00
pyboard.py tools/pyboard.py: Capture stdout for pts line. 2024-08-28 11:23:11 +10:00
pydfu.py all: Fix various spelling mistakes found by codespell 2.2.6. 2023-10-03 11:24:50 +11:00
tinytest-codegen.py tools/tinytest-codegen.py: Externalise tests list. 2023-11-07 15:53:27 +11:00
uf2conv.py all: Fix strings with backslash by using raw string literals. 2023-05-02 11:55:02 +10:00
uf2families.json tools/uf2conv.py: Update to latest version. 2022-02-02 23:43:58 +11:00
uncrustify.cfg all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
verifygitlog.py CODECONVENTIONS: Require that commits be signed-off by the author. 2023-05-08 12:20:56 +10:00