zephyr/scripts/pylib/pytest-twister-harness
Thomas Günther c2d011f366 twister: fix shell prompt detection with VT100 colors disabled
Device adapter strips all whitespace from output lines causing test
failures when matching default shell prompt "uart:~$ " with trailing
space. Update _handle_device_output to only strip line endings (\r\n)
while preserving whitespace required for prompt detection.

A testcase sample.pytest.shell.no_vt100 was added to verify prompt
matching works with CONFIG_SHELL_VT100_COLORS disabled.

Signed-off-by: Thomas Günther <thomas.guenther@limatica.com>
2025-01-17 16:35:33 +01:00
..
src/twister_harness twister: fix shell prompt detection with VT100 colors disabled 2025-01-17 16:35:33 +01:00
tests python: Format and sort imports 2024-11-25 10:07:13 +01:00
.gitignore
pyproject.toml
README.rst doc: sphinx-lint: fix bad usage of "default role" 2024-09-13 11:42:51 -05:00
setup.cfg
setup.py

==============
Pytest Twister harness
==============

Installation
------------

If you plan to use this plugin with Twister, then you don't need to install it
separately by pip. When Twister uses this plugin for pytest tests, it updates
:envvar:`PYTHONPATH` variable, and then extends pytest command by
``-p twister_harness.plugin`` argument.


Usage
-----

Run exemplary test shell application by Twister:

.. code-block:: sh

  cd ${ZEPHYR_BASE}

  # native_sim & QEMU
  ./scripts/twister -p native_sim -p qemu_x86 -T samples/subsys/testsuite/pytest/shell

  # hardware
  ./scripts/twister -p nrf52840dk/nrf52840 --device-testing --device-serial /dev/ttyACM0 -T samples/subsys/testsuite/pytest/shell

or build shell application by west and call pytest directly:

.. code-block:: sh

  export PYTHONPATH=${ZEPHYR_BASE}/scripts/pylib/pytest-twister-harness/src:${PYTHONPATH}

  cd ${ZEPHYR_BASE}/samples/subsys/testsuite/pytest/shell

  # native_sim
  west build -p -b native_sim -- -DCONFIG_NATIVE_UART_0_ON_STDINOUT=y
  pytest --twister-harness --device-type=native --build-dir=build -p twister_harness.plugin

  # QEMU
  west build -p -b qemu_x86 -- -DQEMU_PIPE=qemu-fifo
  pytest --twister-harness --device-type=qemu --build-dir=build -p twister_harness.plugin

  # hardware
  west build -p -b nrf52840dk/nrf52840
  pytest --twister-harness --device-type=hardware --device-serial=/dev/ttyACM0 --build-dir=build -p twister_harness.plugin