python3-typer: fix ptest rich text-wrapping and subprocess PYTHONPATH

Force a wide console (COLUMNS=200) so rich does not wrap/truncate the
error-panel text. Several tests assert on trailing substrings ("is a
file", "is a directory", "unknown error") of long error messages
that get word-wrapped - and thus split - inside an 80-column rich
panel when stdout is not a tty (as in the ptest QEMU environment). A
wide terminal keeps the message on one line.

test_binary_stderr spawns a fresh interpreter to run the test file as
a script; the file does "from tests.utils import ...", so the ptest
root (the parent of tests/) must be importable in that subprocess -
export it via PYTHONPATH.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj
2026-08-29 21:43:05 -07:00
committed by Khem Raj
parent 7528dca88c
commit d89e202c6d
2 changed files with 14 additions and 0 deletions
@@ -1,5 +1,17 @@
#!/bin/sh
# Force a wide console so rich does not wrap/truncate the error-panel text.
# Several tests assert on trailing substrings ("is a file", "is a directory",
# "unknown error") of long error messages that get word-wrapped - and thus
# split - inside an 80-column rich panel when stdout is not a tty (as in the
# ptest QEMU environment). A wide terminal keeps the message on one line.
export COLUMNS=200
# test_binary_stderr spawns a fresh interpreter to run this test file as a
# script; the file does "from tests.utils import ...", so the ptest root (the
# parent of tests/) must be importable in that subprocess.
export PYTHONPATH="$(pwd)${PYTHONPATH:+:$PYTHONPATH}"
# Ignore the test_tutorial and test_completion.
# Because it needs the docs_src package what is not in Yocto.
# And the tests are not that useful for Yocto.
@@ -46,4 +46,6 @@ RDEPENDS:${PN}-ptest += "\
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
# references the unshipped top-level 'scripts' package used by typer's release tooling
rm -f ${D}${PTEST_PATH}/tests/test_prepare_release.py
}