From d3c5bd01e5d2555978e21171a6a8081041d01845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Sun, 3 May 2026 10:16:56 +0200 Subject: [PATCH] lua and python bin detection rationalized: bins.py module created. Added some api accessible from python and lua sub_processes. Now the tests only access to py_func.tm instead of direct api.testium module access. Corrected some f"xxx" to allow working with old python (bookworm). Changed param.yaml of the test to allow lua to work in all situations. Various other small fixes for frozen app, wheel. Tested in all situations, and OK. Ready for tag ! Co-Authored-By: Claude Opus 4.7 --- CLAUDE.md | 92 +++++++++-- doc/examples/dummy/post_execution.py | 2 +- doc/manual/sphinx/source/helper_lib.rst | 53 +++--- doc/manual/sphinx/source/reports.rst | 119 +++++++++++--- .../source/test_items/py_func_test_item.rst | 2 +- doc/manual/testium_manual.pdf | Bin 684440 -> 685421 bytes package/deb/test_distro.sh | 141 ++++++++++++++++ package/pyinstaller/testium.spec | 19 ++- src/testium/api/runtime_plot.py | 2 +- src/testium/interpreter/process.py | 2 +- .../interpreter/test_items/test_item_cycle.py | 2 +- .../test_items/test_item_lua_func.py | 4 +- .../test_items/test_item_py_func.py | 4 +- .../test_items/test_item_runtime_plot.py | 4 +- .../interpreter/test_report/test_report.py | 1 - src/testium/interpreter/test_set.py | 29 +++- src/testium/interpreter/utils/bins.py | 151 ++++++++++++++++++ .../interpreter/utils/lua_func_exec.py | 2 +- src/testium/interpreter/utils/lua_process.py | 113 +------------ src/testium/interpreter/utils/py_eval.py | 4 +- src/testium/interpreter/utils/py_func_exec.py | 2 +- src/testium/interpreter/utils/py_process.py | 94 +---------- src/testium/interpreter/utils/test_ctrl.py | 17 +- src/testium/py_func/handle.py | 4 +- src/testium/py_func/tm.py | 2 +- src/testium/runtime/api.py | 5 + src/testium/runtime/jrpc.py | 2 +- test/validation/items/common/helper_lib.py | 2 +- test/validation/items/parallel/parallel.py | 2 +- test/validation/param.yaml | 21 +-- 30 files changed, 585 insertions(+), 312 deletions(-) create mode 100755 package/deb/test_distro.sh create mode 100644 src/testium/interpreter/utils/bins.py diff --git a/CLAUDE.md b/CLAUDE.md index 67f212d..8cbeb46 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -92,11 +92,33 @@ All dialog items (`dialog_image`, `dialog_question`, `dialog_references`, `dialo - Per-item log capture (`stdio_redir.read()`) is naturally race-free thanks to per-thread buffers (see `StdoutProxy`). ### Thread-aware stdout (`StdoutProxy`) -`src/lib/stdout_redirect.py` — when `log_stored: True`, `intercept()` installs a `StdoutProxy` as `sys.stdout`/`sys.stderr` instead of a single shared `StringQueue`. The proxy: +`src/testium/runtime/stdout_redirect.py` — when `log_stored: True`, `intercept()` installs a `StdoutProxy` as `sys.stdout`/`sys.stderr` instead of a single shared `StringQueue`. The proxy: - Holds one `StringQueue` per thread (registered via `register_thread(buffer=...)`). The main thread uses a default buffer; each parallel branch's thread registers its own at start and unregisters at end. `stdio_redir.read()` reads the calling thread's buffer → `addTest()` of an item running in branch X reads X's clean, non-interleaved output. - For the live stream (terminal in batch / GUI panel), prefixes every line emitted from a branch's thread with `[] ` so concurrent branches stay readable. - Exposes `write` / `writeln` / `flush` (Python 3.14's `unittest` calls `stream.writeln()` directly without `_WritelnDecorator`). +### Subprocess API contract (py_func / lua_func) + +User test scripts running inside a `py_func` or `lua_func` subprocess **must** use the JSON-RPC bridge to interact with testium state: + +- Python: `import py_func.tm as tm` — auto-generates wrappers for every function in `runtime/api.py:SUPPORTED_API`. `tm.gd`/`tm.setgd`/`tm.delgd` go through JSON-RPC to the parent. +- Lua: `local tm = require("tm")` — same idea on the Lua side. + +`api.testium` is the *main-process* implementation; it is **not** exposed to subprocesses by design (not bundled in PyInstaller, not on the subprocess `PYTHONPATH` in pip-installed mode either when isolation is preserved). An import attempt from a subprocess script is a code smell and is detected by `test/validation/items/isolation/`. + +To add a new API call usable from subprocesses: +1. Add the function to `api/testium.py` +2. Add its name to `SUPPORTED_API` in `runtime/api.py` +3. It is auto-exposed via JSON-RPC by `interpreter/utils/api_srv.py` and auto-wrapped by `py_func/tm.py:_make_api` + +### External interpreter resolution (`bins.py`) +`src/testium/interpreter/utils/bins.py` — single source of truth for the paths to the external Python and Lua interpreters used by subprocesses. + +- `python_bin()` / `lua_bin()` : resolve once, cache in memory. User can override via the `python_bin` / `lua_bin` global dict keys (typically populated from the YAML config). Falls back to discovery on PATH (candidates: `python3`/`python` and `lua`/`lua5.5`/`lua5.4`/`lua5.3`/`lua5.2`/`lua5.1`). +- `ensure(*names)` : called by `TestSet._validate_runtime_deps()` at test load. Always requires `python` (the eval engine always runs); requires `lua` only if a `lua_func` item is in the tree. Fails fast with a clear error citing tried candidates and override key. + +Engines (`PyProcessBase`, `LuaProcessBase`, `EvalExecEngine`) call `bins.python_bin()`/`bins.lua_bin()` themselves — call sites never pass an explicit binary path. + ## Key files | Path | Role | @@ -161,23 +183,61 @@ Icons are assigned once when the test file is loaded (not updated live on theme The sub-test's own pass/fail result is intentionally not propagated. +### Report exporters & plugins +`src/testium/interpreter/test_report/test_report.py` — `_EXPORTER_REGISTRY` dict maps a format name (cmd key in the YAML `report.export`) to a lazy loader. Built-ins: `text`, `json`, `junit` (needs `junit_xml`), `html` (needs `lxml`). `sqlite` is the storage layer, no-op as an export. + +Third-party plugins are discovered at module import via `importlib.metadata.entry_points(group="testium.exporters")` — installing a wheel that declares such an entry point is enough, no testium config change needed: +```toml +[project.entry-points."testium.exporters"] +my_format = "my_pkg:MyExporter" +``` +Exporter contract: `__init__(self, name, con, path, pats, keys, no_header=False)` — the class does its work in `__init__` and writes to `path`. + +Behaviour on errors: +- Unknown format → info line `[report] Export skipped: format "X" not found. Available: ...`, run continues. +- Optional dependency missing → same info line with a pip-install hint, run continues. + +A real-world test plugin lives at `test/validation/fake_exporter/` (CSV exporter, auto-installed by `scripts/build_env.sh` and exercised by `test/validation/items/report_plugin/`). + +## Packaging + +Three distribution channels coexist, sharing the single `src/testium/` package: + +| Channel | Where | Notes | +|---------|-------|-------| +| Wheel (`pip install`) | `src/pyproject.toml` | Vanilla Python package; entry point `testium = "testium:main"` | +| PyInstaller binary | `package/pyinstaller/` | Single ~130 MB binary. `py_func`, `runtime`, `lua_func` bundled at `_MEIPASS` root so the **host** Python can find them when launched as `python3 py_func`. `api`/`interpreter` are **not** exposed (subprocess isolation). | +| Flatpak | `package/flatpak/` | (Existing recipe, not actively maintained in current refactor wave.) | + +The `.deb` work-in-progress lives in `package/deb/`: +- `test_distro.sh debian:bookworm | debian:trixie | ubuntu:24.04` spins up a Docker/Podman container, reports system package availability, falls back to pip for what's missing (`pyside6` on bookworm/ubuntu, `telnetlib3`, `junit_xml`), runs the validation suite. Currently green on the three targets. + ## Recent fixes / notable changes -- `parallel` item: new item with `sync: all|any`, `wait_for`, daemon threads, `_stop_branch_recursively()`. Each branch thread registers a per-thread stdout buffer with `stdio_redir.register_thread(...)` so its log capture and live-output prefix work in isolation. -- `parallel_branch` icon: distinct single-arrow icon (`parallel_branch.png`) separate from the parallel container's three-arrow icon. -- `parallel` F1 panel: `steps` stripped from each branch dict so the panel shows per-branch attributes without duplicating the tree. -- `test_item_container.py`: new `TestItemContainer` base class extracted from Group/Cycle patterns -- `test_item_sleep.py`: interruptible loop (checks `self._is_stopped`) instead of blocking `time.sleep()` so `sync: any` can stop slow branches quickly -- `stdout_redirect.py`: rewrote `intercept()` to install a `StdoutProxy` (thread-aware: per-thread capture buffers + branch-prefixed live output). Adds `writeln()` for Python 3.14 unittest compatibility. -- `test_report.py`: `check_same_thread=False` + lock around the SQLite `INSERT` for parallel branch concurrency. Log capture itself is race-free thanks to per-thread buffers. +- Restructure: single `src/testium/` Python package (was 4 sibling top-levels: `testium`, `lib`, `py_func`, `lua_func`). `lib/` → `runtime/`, `libs/` → `api/`. `pip install` now produces a clean `site-packages/testium/` with no top-level pollution; `.lua` files travel via `package_data`. +- `bins.py`: centralised resolution + cache of external `python3` / `lua` binaries. Replaces the scattered `tm.gd("python_bin")`/`tm.gd("lua_bin")` dance and the duplicated discovery logic in `py_process.py`/`lua_process.py`. Validates at test load via `TestSet._validate_runtime_deps()` so missing interpreters fail fast. +- Subprocess API contract: user scripts in `py_func`/`lua_func` use the JSON-RPC bridge (`py_func.tm` / Lua `tm`) — never `api.testium` / `interpreter.*` directly. `SUPPORTED_API` extended with `OS`, `get_main_dir`, `init_timestamp`, `timestamp`, `timestamp_as_sec` so subprocess scripts have the same surface as main-process code. +- Report exporter plugin registry (`test_report.py`): `_EXPORTER_REGISTRY` + `entry_points("testium.exporters")` discovery. Missing format → info line, run continues. +- About dialog rework: `QVBoxLayout` (resizable), version + dirty/branch info in a `QLabel` (auto-sized), copyright + clickable EUPL-1.2 link. +- `test_ctrl.control()`: drain stale responses (left over from polled `loaded()` after `clear()` race) instead of failing on a wrong cmd key — fixes a "Unexpected return error in test set controller" seen in GUI mode after a fast reload. +- `lua_process.py`: stderr no longer DEVNULL'd so actual Lua errors (missing `cjson`/`socket`) surface instead of "Connection refused". +- `run_post_exec`: failure message uses `print_warn` (was `print_debug` — silent in non-debug runs). +- Python 3.11 compat: replaced PEP 701 nested-quote f-strings (e.g. `f"... {d["k"]} ..."`) with single-quote inner strings or string concatenation. +- `parallel` item: new item with `sync: all|any`, `wait_for`, daemon threads, `_stop_branch_recursively()`. Each branch thread registers a per-thread stdout buffer. +- `parallel_branch` icon: distinct single-arrow icon (`parallel_branch.png`). +- `parallel` F1 panel: `steps` stripped from each branch dict. +- `test_item_container.py`: shared base class extracted from Group/Cycle. +- `test_item_sleep.py`: interruptible loop so `sync: any` can stop slow branches quickly. +- `stdout_redirect.py`: `StdoutProxy` (thread-aware buffers + branch-prefixed live output, `writeln()` for Python 3.14 unittest). +- `test_report.py`: thread-safe SQLite INSERT for parallel branch concurrency. - `terminal.py`: deleted — `-m`/`--terminal` mode removed. -- `batch.py`: premature loop exit when `gd_update` messages (no `"id"` key) were mistaken for the "finished" signal — fix: `"id" in m and m["id"] is None` -- `batch.py`: `control("loaded")` deadlock if `TestProcess` crashed before `cmd_th` started — fix: daemon thread + `threading.Event` + `is_alive()` polling -- `termlog.py`: `COLOR_DEFAULT = Fore.WHITE` invisible on light terminals; added auto-detection + light palette. Also fixed `write()` residue accumulation bug (`s[pos:]` → `s[pos+1:]`). -- Dialog items: `auto_result`/`auto_value` now used in non-interactive text mode; dialogs without `auto_result` FAIL immediately in batch mode. -- `run` item: renamed `tum_fime` → `tum`; removed `stdout=PIPE` (caused deadlock with `multiprocessing` spawn); result simplified to PASS on any completed subprocess. -- `unittest` item: renamed from `unittest_file` (cmd key, display name, Python constant `TYPE_UNITTEST_FILE` → `TYPE_UNITTEST`). -- GUI test tree: check and fold state preserved across same-file reloads (`test_file_manager.py`). -- Licence: EUPL-1.2 (`LICENSE`, `CONTRIBUTING.md`, `pyproject.toml`). +- `batch.py`: premature finish bug on `gd_update` (no `"id"` key) — fix uses `"id" in m and m["id"] is None`. +- `batch.py`: `control("loaded")` deadlock on TestProcess crash — fix uses daemon thread + `threading.Event` + `is_alive()` polling. +- `termlog.py`: light/dark terminal auto-detection (`COLORFGBG`, OSC 11) + write residue bug. +- Dialog items: `auto_result`/`auto_value` for non-interactive text mode; dialogs without `auto_result` FAIL immediately in batch. +- `run` item: renamed `tum_fime` → `tum`; removed `stdout=PIPE` deadlock; PASS on any completed subprocess. +- `unittest` item: renamed from `unittest_file`. +- GUI test tree: check and fold state preserved across same-file reloads. +- Licence: EUPL-1.2. ## Validation tests Located in `test/validation/`. Run with `-b` flag: diff --git a/doc/examples/dummy/post_execution.py b/doc/examples/dummy/post_execution.py index af4c56f..a74de05 100644 --- a/doc/examples/dummy/post_execution.py +++ b/doc/examples/dummy/post_execution.py @@ -1,5 +1,5 @@ -import api.testium as tm +import py_func.tm as tm def post_exec(): print('Success !!!!') diff --git a/doc/manual/sphinx/source/helper_lib.rst b/doc/manual/sphinx/source/helper_lib.rst index 900358a..a8fdeda 100644 --- a/doc/manual/sphinx/source/helper_lib.rst +++ b/doc/manual/sphinx/source/helper_lib.rst @@ -4,7 +4,12 @@ Python helper library ====================== A python library including helper function for python modules called from -testium. +testium ``py_func`` items. + +User scripts run inside the ``py_func`` subprocess and interact with testium +through a JSON-RPC bridge — the ``py_func.tm`` module. They must **not** +import ``api.testium`` or ``interpreter.*`` directly: those are main-process +modules and may not even be reachable in a packaged build (PyInstaller, .deb). To include the support of this library in a python script, the following line must be included in the script header: @@ -18,58 +23,38 @@ line must be included in the script header: Global variables helper functions ---------------------------------- -To manage values in the global variables dataset, the following testium library API -must be used: +To manage values in the global variables dataset: .. automodule:: py_func.tm :members: gd, setgd, delgd :undoc-members: :no-index: -Console helper functions ------------------------- - -Every opened console instance is added to a list with the -key ``console_instances`` of the global variables. - -The instance is removed from the list on close step of the ``console`` test item. - -To manage consoles from within ``py_func`` python functions, -the following testium library API can be used: - -.. automodule:: libs.testium - :members: add_console, remove_console, console - :undoc-members: - :no-index: - Plot helper functions ------------------------ -Every opened plot window instance is added to a list with the -key ``plot_instances`` of the global variables. +Add values to a running plot or read the last value from it: -The instance is removed from the list on close step of the ``plot`` test item. - -To manage plots from within ``py_func`` python functions, -the following testium library API can be used: - -.. automodule:: libs.testium - :members: add_plot, remove_plot, plot, add_plot_values, last_plot_value +.. automodule:: py_func.tm + :members: add_plot_values, last_plot_value :undoc-members: :no-index: +Console and plot **lifecycle** management (``add_console``, ``remove_console``, +``console``, ``add_plot``, ``remove_plot``, ``plot``) is performed by the +``console`` and ``plot`` test items themselves — not from user ``py_func`` +scripts. Use those test items to open/close consoles and plots. + Other helper functions ------------------------ -.. automodule:: libs.testium - :members: OS, get_main_dir, timestamp, timestamp_as_sec +.. automodule:: py_func.tm + :members: OS, get_main_dir, init_timestamp, timestamp, timestamp_as_sec, text_mode :undoc-members: :no-index: Debug mode ------------------------ -.. automodule:: libs.testium - :members: debug_enabled, enable_debug, print_debug, print_info, print_warn - :undoc-members: - :no-index: +The ``test_debug`` global variable controls debug-only output. Read or write +it via ``tm.gd("test_debug")`` / ``tm.setgd("test_debug", True)``. diff --git a/doc/manual/sphinx/source/reports.rst b/doc/manual/sphinx/source/reports.rst index e4c78c5..ccc93ff 100644 --- a/doc/manual/sphinx/source/reports.rst +++ b/doc/manual/sphinx/source/reports.rst @@ -6,18 +6,25 @@ Reports If a report is required (in addition to the log), the ``report`` YAML element must be added at the root of the TUM main test file. -The ``report`` YAML element has the following form: +The ``report`` element accepts a single export or a list of them under the +``export`` key. Each export entry uses the format name as its key: .. code-block:: yaml - :caption: reports global settings + :caption: reports global settings — multiple exports report: enabled: True - file_name: $(test_name).rep - path: $(home)/reports - pattern: "Console%" - export: junit - log_stored: False + log_stored: True + export: + - sqlite: + path: $(home)/reports + file_name: $(test_name).db + - junit: + path: $(home)/reports + file_name: $(test_name).xml + - html: + path: $(home)/reports + file_name: $(test_name).html .. table:: report attributes :widths: 20, 30, 50 @@ -27,21 +34,93 @@ The ``report`` YAML element has the following form: +-----------------+-----------------------+-------------------------------------------+ | ``enabled`` | ``True`` | Report activated | +-----------------+-----------------------+-------------------------------------------+ - | ``file_name`` | / | Report file name | + | ``log_stored`` | ``False`` | When ``True``, captures stdout per test | + | | | item so exports (html, json) can include | + | | | the log of each item. | +-----------------+-----------------------+-------------------------------------------+ - | ``path`` | ``$(report_path)`` | Report storage path By default, it uses | - | | | the default one set in the | - | | | preferences. | + | ``export`` | / | One export entry or a list of them. Each | + | | | entry's key is the format name (see | + | | | below). | +-----------------+-----------------------+-------------------------------------------+ - | ``pattern`` | / | The pattern in SQL wildachars syntax | - | | | to be applied on test names to | - | | | selected reported tests. | + +Each export entry supports the following sub-attributes: + +.. table:: export attributes + :widths: 20, 30, 50 + +-----------------+-----------------------+-------------------------------------------+ - | ``export`` | / | The type of export. For exemple junit. | - | | | By default, the sqlite format is | - | | | used to generate reports. | + | Attribute | default value | Description | +-----------------+-----------------------+-------------------------------------------+ - | ``log_stored`` | / | Defines if the output log of each | - | | | test is accessible to generate the | - | | | report export. | + | ``path`` | ``$(report_path)`` | Output directory. | +-----------------+-----------------------+-------------------------------------------+ + | ``file_name`` | / | Output file name. May include | + | | | ``$(...)`` global-dict expansions. | + +-----------------+-----------------------+-------------------------------------------+ + | ``pattern`` | / | One or more SQL ``LIKE`` patterns | + | | | applied on the test ``name``. | + +-----------------+-----------------------+-------------------------------------------+ + | ``key`` | / | One or more SQL ``LIKE`` patterns | + | | | applied on the test ``key`` | + | | | (the per-item ``key`` attribute). | + +-----------------+-----------------------+-------------------------------------------+ + +Built-in formats +^^^^^^^^^^^^^^^^ + +* ``sqlite`` — raw SQLite database (storage layer; selecting it persists the run). +* ``text`` — simple indented text dump of the test tree. +* ``json`` — full report as JSON: ``{"header": {...}, "tests": [...]}``. +* ``junit`` — JUnit XML (requires the ``junit_xml`` Python package). +* ``html`` — single HTML page with header, results table and per-item logs (requires ``lxml``). + +If a format is unknown or its optional dependency is missing, the export is +skipped with an ``[report] Export skipped: ...`` info line on stdout — the +test run is **not** interrupted. + +.. _sec_reports_plugins: + +Custom export formats (plugins) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A third-party Python package can register additional export formats via the +``testium.exporters`` setuptools entry point group. Once installed in the same +Python environment as testium, the format is auto-detected at startup and can +be referenced from the YAML by its declared name. + +Plugin contract — a class with this constructor signature: + +.. code-block:: python + :caption: minimal exporter contract + + class MyExporter: + def __init__(self, name, con, path, pats, keys, no_header=False): + # name : str — report name + # con : sqlite3.Connection (read) — tables: header, tests + # path : str — output file path (already expansed) + # pats : list[str] — LIKE filters on test_name (may be empty) + # keys : list[str] — LIKE filters on report_key (may be empty) + # no_header : bool — skip header section (set by the inline + # `report` test item) + ... # do the work in __init__ and write to `path` + +Tables and columns of the SQLite report: + +* ``header(key TEXT, value TEXT)`` — keys: ``report_version``, ``test_file``, + ``test_name``, ``test_result``, ``test_revision``, ``testium_version``, + ``testrun_date``, ``testrun_time``, ``test_duration``. +* ``tests`` — 12 columns: ``timestamp_start``, ``test_id``, ``parent_id``, + ``level``, ``test_name``, ``test_type``, ``report_key``, ``result`` + (``PASS``/``FAIL``/``SKIP``), ``message``, ``duration`` (ms), + ``log`` (captured stdout when ``log_stored: True``), ``data`` (JSON of + values reported via ``self.reportValue(...)``). + +Declaration in the plugin's ``pyproject.toml``: + +.. code-block:: toml + :caption: registering an exporter via entry-points + + [project.entry-points."testium.exporters"] + my_format = "my_pkg:MyExporter" + +The plugin is then usable in any ``.tum`` report block as ``my_format:`` — +no testium configuration change required. diff --git a/doc/manual/sphinx/source/test_items/py_func_test_item.rst b/doc/manual/sphinx/source/test_items/py_func_test_item.rst index b31be24..469f2a9 100644 --- a/doc/manual/sphinx/source/test_items/py_func_test_item.rst +++ b/doc/manual/sphinx/source/test_items/py_func_test_item.rst @@ -13,7 +13,7 @@ class ``py_func`` item This is the normal way of calling some custom python code. -A class must be defined and derived from ``FunctionItem`` from the ``libs.testium`` module. +A class must be defined and derived from ``FunctionItem`` from the ``py_func.tm`` module. From this class it is possible to define some custom reported values with the following API diff --git a/doc/manual/testium_manual.pdf b/doc/manual/testium_manual.pdf index d2c1c05d5a17f2ffaa993be4c3d7c1e0fcf32caf..61fdb2943fb275f29d7347daa54913cdb7c9a302 100644 GIT binary patch delta 112702 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 delta 111312 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

$S|xiTrg%C*BXzQvP}1y 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 diff --git a/package/deb/test_distro.sh b/package/deb/test_distro.sh new file mode 100755 index 0000000..e0a3186 --- /dev/null +++ b/package/deb/test_distro.sh @@ -0,0 +1,141 @@ +#!/usr/bin/env bash +# test_distro.sh — verify testium runs on a target Debian/Ubuntu distrib. +# +# Spins up a Docker container of the requested image, checks which expected +# system Python packages are available (apt), installs them, installs the +# testium wheel, and runs a smoke test that exercises batch mode + py_func +# subprocess. +# +# Usage: +# ./test_distro.sh debian:bookworm +# ./test_distro.sh debian:trixie +# ./test_distro.sh ubuntu:24.04 + +set -euo pipefail + +IMAGE="${1:?Usage: $0 e.g. debian:bookworm | debian:trixie | ubuntu:24.04}" +ROOT=$(realpath "$(dirname "$0")/../..") + +# Container runtime: prefer docker if available, fall back to podman +if command -v docker >/dev/null 2>&1; then + CTR=docker +elif command -v podman >/dev/null 2>&1; then + CTR=podman +else + echo "ERROR: neither docker nor podman is installed" >&2 + exit 1 +fi +echo "[host] Using $CTR" + +# --- Build the wheel on the host if it does not already exist +WHEEL_DIR="$ROOT/src/dist" +PYTHON_HOST="$ROOT/test/tmp/.venv/bin/python3" +[ -x "$PYTHON_HOST" ] || PYTHON_HOST=python3 +if ! ls "$WHEEL_DIR"/testium-*.whl >/dev/null 2>&1; then + echo "[host] Building wheel..." + (cd "$ROOT/src" && "$PYTHON_HOST" -m build --wheel >/dev/null) +fi +WHEEL=$(ls "$WHEEL_DIR"/testium-*.whl | head -1) +WHEEL_NAME=$(basename "$WHEEL") +echo "[host] Using $WHEEL_NAME" + +# Expected system Python packages on the target distrib +APT_PACKAGES=( + python3 + python3-pip + python3-setuptools + python3-pyside6.qtwidgets + python3-yaml + python3-jinja2 + python3-colorama + python3-git + python3-pexpect + python3-matplotlib + python3-lxml + python3-serial + python3-telnetlib3 + lua5.4 + lua-cjson + lua-socket + git +) + +echo "=== Testing on $IMAGE ===" + +$CTR run --rm \ + -v "$ROOT:/testium:ro" \ + -e WHEEL_NAME="$WHEEL_NAME" \ + -e PACKAGES="${APT_PACKAGES[*]}" \ + "$IMAGE" \ + bash -c ' + set -e + export DEBIAN_FRONTEND=noninteractive + apt-get update -qq + + # 1. Availability check + echo + echo "--- System package availability ---" + AVAILABLE=() + MISSING=() + for pkg in $PACKAGES; do + if apt-cache show "$pkg" >/dev/null 2>&1; then + AVAILABLE+=("$pkg") + echo " OK $pkg" + else + MISSING+=("$pkg") + echo " MISSING $pkg" + fi + done + echo + + # 2. Install available packages + echo "--- Installing system packages ---" + apt-get install -qq -y --no-install-recommends "${AVAILABLE[@]}" ca-certificates >/dev/null + + # 3. Map missing apt packages to their PyPI equivalents and pip-install + # them as a fallback (kept minimal so the run is still a "system" + # install for the most part) + declare -A PIP_FALLBACK=( + [python3-pyside6.qtwidgets]=pyside6 + [python3-telnetlib3]=telnetlib3 + ) + # junit_xml has no Debian package — install it via pip so the + # validation post_execution.py can import it. + EXTRA_PIP=(junit-xml) + PIP_PKGS=() + for m in "${MISSING[@]}"; do + fallback="${PIP_FALLBACK[$m]:-}" + if [ -n "$fallback" ]; then + PIP_PKGS+=("$fallback") + fi + done + PIP_PKGS+=("${EXTRA_PIP[@]}") + if [ ${#PIP_PKGS[@]} -gt 0 ]; then + echo "--- Installing missing deps via pip: ${PIP_PKGS[*]} ---" + pip install --break-system-packages "${PIP_PKGS[@]}" >/dev/null + fi + + # 4. Install testium wheel + echo "--- Installing testium wheel ---" + pip install --break-system-packages --no-deps "/testium/src/dist/$WHEEL_NAME" >/dev/null + + # 5. Install the fake_exporter plugin (needed by the report_plugin + # validation test which exercises entry-points discovery). + # Copy it first because /testium is mounted read-only and the + # setuptools backend touches its build dir. + echo "--- Installing testium-fake-exporter (test plugin) ---" + cp -r /testium/test/validation/fake_exporter /tmp/fake_exporter + pip install --break-system-packages /tmp/fake_exporter >/dev/null + + # 6. Run the full validation suite. Outputs are streamed live so + # progress is visible — the suite takes a couple of minutes. + # Reports go to /tmp/testium-validation since /testium is RO. + echo "--- Running validation suite ---" + mkdir -p /tmp/testium-validation + cd /testium + testium -b -o \ + -d "validation_report_path=/tmp/testium-validation/" \ + -- test/validation/main.tum + ' + +echo "=== $IMAGE: PASS ===" diff --git a/package/pyinstaller/testium.spec b/package/pyinstaller/testium.spec index f33d90d..35e430b 100644 --- a/package/pyinstaller/testium.spec +++ b/package/pyinstaller/testium.spec @@ -1,4 +1,13 @@ # -*- mode: python ; coding: utf-8 -*- +import os + +# junit_xml is imported by post_exec scripts running under the *host* Python, +# not the frozen interpreter — so bundling it via hiddenimports alone is not +# enough. We also drop its source files at the _MEIPASS root so the host +# python3 finds them via the PYTHONPATH that py_process.py sets to +# tstium_path (= _MEIPASS when frozen). +import junit_xml as _junit_xml +JUNIT_XML_DIR = os.path.dirname(_junit_xml.__file__) a = Analysis( ['../../src/testium/__main__.py'], @@ -9,10 +18,18 @@ a = Analysis( # py_func subprocess is launched with the *host* Python (not the # frozen interpreter): it needs the source files on disk to find them # via cwd=subproc_path() and `python3 py_func` + `from runtime.*`. + # py_func/, lua_func/ and runtime/ are bundled at the _MEIPASS root + # because the py_func subprocess is launched with the *host* Python + # (not the frozen interpreter): it needs the source files on disk to + # find them via cwd=subproc_path() and `python3 py_func` + + # `from runtime.*`. api/ and interpreter/ are intentionally NOT + # exposed: user py_func scripts must go through py_func.tm + # (JSON-RPC bridge) for any testium API call. datas=[('../../src/VERSION', '.'), ('../../src/testium/lua_func', 'lua_func'), ('../../src/testium/py_func', 'py_func'), - ('../../src/testium/runtime', 'runtime')], + ('../../src/testium/runtime', 'runtime'), + (JUNIT_XML_DIR, 'junit_xml')], hiddenimports=["git", "interpreter", "main_win", diff --git a/src/testium/api/runtime_plot.py b/src/testium/api/runtime_plot.py index fdaef8c..0fc3149 100644 --- a/src/testium/api/runtime_plot.py +++ b/src/testium/api/runtime_plot.py @@ -270,7 +270,7 @@ class RuntimePlotPeriodic(PeriodicTimer): self.func_name = func_name self.args = args self.post_eval = post_eval - self.proc = PyFuncExecEngine(tm.gd("python_bin", ""), api_request, 10) + self.proc = PyFuncExecEngine(api_request, 10) self.proc.start() if not self.proc.wait_ready(10): raise ETUMRuntimeError( diff --git a/src/testium/interpreter/process.py b/src/testium/interpreter/process.py index 859f026..1f883e0 100644 --- a/src/testium/interpreter/process.py +++ b/src/testium/interpreter/process.py @@ -211,7 +211,7 @@ class TestProcess(Process): env_init() # Creation of the python evaluation process for loading of the complete test - eval_proc = eval_process_init("", api_request, 10, test_dir) + eval_proc = eval_process_init(api_request, 10, test_dir) eval_proc.start() tm.print_debug(f"python bin is: '{eval_proc.python_bin}'.") if not eval_proc.wait_ready(10): diff --git a/src/testium/interpreter/test_items/test_item_cycle.py b/src/testium/interpreter/test_items/test_item_cycle.py index b3d3369..c04fc8e 100644 --- a/src/testium/interpreter/test_items/test_item_cycle.py +++ b/src/testium/interpreter/test_items/test_item_cycle.py @@ -207,7 +207,7 @@ then considered as 'False'""") else: pl = [self._currentLoop] - proc = PyFuncExecEngine(tm.gd("python_bin", ""), api_request, 10) + proc = PyFuncExecEngine(api_request, 10) proc.start() if not proc.wait_ready(10): raise ETUMRuntimeError( diff --git a/src/testium/interpreter/test_items/test_item_lua_func.py b/src/testium/interpreter/test_items/test_item_lua_func.py index c4da3b0..1b9ba54 100644 --- a/src/testium/interpreter/test_items/test_item_lua_func.py +++ b/src/testium/interpreter/test_items/test_item_lua_func.py @@ -31,7 +31,7 @@ class TestItemLuaFunc(TestItem): self.func_name = self._prms.getParam("func_name", required=True) self.params = self._prms.getParamAll("param") self._context_id = self._prms.getParam("context_id", default=None, processed=False) - self._lua_func_proc = LuaFuncExecEngine(tm.gd("lua_bin", ""), api_request, 10) + self._lua_func_proc = LuaFuncExecEngine(api_request, 10) def _get_engine(self): """Return (engine, persistent). If context_id is set, use a shared persistent engine.""" @@ -41,7 +41,7 @@ class TestItemLuaFunc(TestItem): ctx_id = self._prms.expanse(self._context_id) contexts = tm.gd(_LUA_FUNC_CONTEXTS_KEY, {}) if ctx_id not in contexts: - contexts[ctx_id] = LuaFuncExecEngine(tm.gd("lua_bin", ""), api_request, 10) + contexts[ctx_id] = LuaFuncExecEngine(api_request, 10) tm.setgd(_LUA_FUNC_CONTEXTS_KEY, contexts) return contexts[ctx_id], True diff --git a/src/testium/interpreter/test_items/test_item_py_func.py b/src/testium/interpreter/test_items/test_item_py_func.py index dbd2bd6..59af448 100644 --- a/src/testium/interpreter/test_items/test_item_py_func.py +++ b/src/testium/interpreter/test_items/test_item_py_func.py @@ -31,7 +31,7 @@ class TestItemPyFunc(TestItem): self.func_name = self._prms.getParam("func_name", required=True) self.params = self._prms.getParamAll("param") self._context_id = self._prms.getParam("context_id", default=None, processed=False) - self._py_func_proc = PyFuncExecEngine(tm.gd("python_bin", ""), api_request, 10) + self._py_func_proc = PyFuncExecEngine(api_request, 10) def _get_engine(self): """Return (engine, persistent). If context_id is set, use a shared persistent engine.""" @@ -41,7 +41,7 @@ class TestItemPyFunc(TestItem): ctx_id = self._prms.expanse(self._context_id) contexts = tm.gd(_PY_FUNC_CONTEXTS_KEY, {}) if ctx_id not in contexts: - contexts[ctx_id] = PyFuncExecEngine(tm.gd("python_bin", ""), api_request, 10) + contexts[ctx_id] = PyFuncExecEngine(api_request, 10) tm.setgd(_PY_FUNC_CONTEXTS_KEY, contexts) return contexts[ctx_id], True diff --git a/src/testium/interpreter/test_items/test_item_runtime_plot.py b/src/testium/interpreter/test_items/test_item_runtime_plot.py index 11c921e..e6257a2 100644 --- a/src/testium/interpreter/test_items/test_item_runtime_plot.py +++ b/src/testium/interpreter/test_items/test_item_runtime_plot.py @@ -40,6 +40,7 @@ class TestItemPlotActionOpen(TestItemPlotAction): try: gname = self._prms.expanse(self.token) lpath = self._prms.expanse(self._log_path) + runtime_plot = importlib.import_module("api.runtime_plot") gr = runtime_plot.RuntimePlot(gname, lpath) tm.add_plot(gr) @@ -233,6 +234,3 @@ class TestItemPlot(TestItemActions): ) self.actions_token = self._prms.getParam("plot_name", required=True) - - global runtime_plot - runtime_plot = importlib.import_module("api.runtime_plot") diff --git a/src/testium/interpreter/test_report/test_report.py b/src/testium/interpreter/test_report/test_report.py index c5901e9..938bbd3 100644 --- a/src/testium/interpreter/test_report/test_report.py +++ b/src/testium/interpreter/test_report/test_report.py @@ -58,7 +58,6 @@ def _discover_plugins(): try: cls = ep.load() _EXPORTER_REGISTRY[ep.name] = lambda c=cls: c - print(f'[testium] Loaded report exporter plugin: "{ep.name}"') except Exception as e: print(f'[testium] Failed to load report exporter plugin "{ep.name}": {e}') except Exception: diff --git a/src/testium/interpreter/test_set.py b/src/testium/interpreter/test_set.py index f222271..2189be1 100644 --- a/src/testium/interpreter/test_set.py +++ b/src/testium/interpreter/test_set.py @@ -8,6 +8,7 @@ import interpreter.utils.settings as prefs from interpreter.test_report.test_report import TestReport from interpreter.utils.py_func_exec import PyFuncExecEngine from interpreter.utils.api_srv import api_request +from interpreter.utils import bins from runtime.tum_except import ETUMRuntimeError from interpreter.utils.constants import TestItemType as cst_type import interpreter.utils.constants as cst @@ -49,6 +50,28 @@ class TestSet: self._tree = self.__loadTestTree(tum_fime) self.dict_report = self._testdict.get("report", None) self.set_post_exec() + self._validate_runtime_deps() + + def _validate_runtime_deps(self): + """Resolve external interpreters needed by this test tree and fail + early with a clear message if any is missing. + + Python is always required (the eval engine always runs). Lua is + only required when at least one ``lua_func`` item is present. + """ + needed = ["python"] + if self.__has_item_type(self._rootItem, cst_type.TYPE_LUA_FUNCTION): + needed.append("lua") + bins.ensure(*needed) + + def __has_item_type(self, parent, item_type): + for i in range(parent.childCount()): + child = parent.child(i) + if child.type() == item_type.item_name: + return True + if self.__has_item_type(child, item_type): + return True + return False def execute(self): self._report = TestReport(self.dict_report) @@ -352,7 +375,7 @@ class TestSet: tm.print_debug(f' No file: "{post_exec_file}".') return - proc = PyFuncExecEngine(tm.gd("python_bin", ""), api_request, 10) + proc = PyFuncExecEngine(api_request, 10) # start the process for executing external python proc.start() try: @@ -367,13 +390,13 @@ class TestSet: # tests backup is done here succ, res = proc.func_call(post_exec_file, "post_exec", []) if not succ == TestValue.SUCCESS: - tm.print_debug( + tm.print_warn( f"Test success but the \"post_exec\" function failed: {res}" ) else: succ, res = proc.func_call(post_exec_file, "post_exec_fail", []) if not succ == TestValue.SUCCESS: - tm.print_debug( + tm.print_warn( f"Test failed but the \"post_exec_fail\" function failed: {res}" ) finally: diff --git a/src/testium/interpreter/utils/bins.py b/src/testium/interpreter/utils/bins.py new file mode 100644 index 0000000..710dd30 --- /dev/null +++ b/src/testium/interpreter/utils/bins.py @@ -0,0 +1,151 @@ +"""Centralised resolution of external interpreter paths (Python, Lua). + +The user can override the path through the global dict via the keys +``python_bin`` and ``lua_bin`` (typically populated from a YAML config). +When unset, the system PATH is searched for known candidates. + +Resolution is cached in memory: each interpreter is resolved at most +once per testium process. Subsequent calls return the cached value. + +Public API +---------- +``python_bin()`` : resolved python3 path (or "" if missing) +``lua_bin()`` : resolved lua >= 5.1 path (or "" if missing) +``ensure(*names)`` : resolve every name and raise a clear error if + any is missing — meant for early validation at + test load time +``reset()`` : clear the cache (mostly useful for tests) +""" + +import shutil +import subprocess + +import api.testium as tm +from interpreter.utils.paths import sys_app_path_lin, sys_app_path_win +from runtime.tum_except import ETUMRuntimeError + + +# ---------- Discovery primitives --------------------------------------------- + +_PYTHON_CANDIDATES = ["python3", "python"] +_LUA_CANDIDATES = ["lua", "lua5.5", "lua5.4", "lua5.3", "lua5.2", "lua5.1"] + + +def _which(name): + func = sys_app_path_win if tm.OS() == "Windows" else sys_app_path_lin + return func(name) + + +def _python_version(path): + cmd = [path, "-c", "import sys; print(sys.version_info[:3])"] + try: + r = subprocess.run( + cmd, capture_output=True, text=True, + encoding=tm.sys_encoding(), timeout=10, + ) + except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired): + return None + try: + return eval(r.stdout) + except Exception: + return None + + +def _is_python3(path): + v = _python_version(path) + return v is not None and v[0] == 3 + + +def _lua_version(path): + try: + r = subprocess.run( + [path, "-v"], capture_output=True, text=True, timeout=10, + ) + except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired): + return None + # On Windows the version banner goes to stderr. + line = r.stdout or r.stderr + try: + major, minor, _patch = line.split(" ")[1].split(".") + return (int(major), int(minor)) + except (IndexError, ValueError): + return None + + +def _is_lua51(path): + v = _lua_version(path) + return v is not None and v >= (5, 1) + + +# ---------- Resolver --------------------------------------------------------- + +# (display name, globdict override key, candidate list, validator) +_SPECS = { + "python": ("Python 3", "python_bin", _PYTHON_CANDIDATES, _is_python3), + "lua": ("Lua 5.1+", "lua_bin", _LUA_CANDIDATES, _is_lua51), +} + +_resolved = {} + + +def _resolve(name): + if name in _resolved: + return _resolved[name] + + display, gd_key, candidates, validator = _SPECS[name] + override = tm.gd(gd_key, "") or "" + + path = "" + if override: + if shutil.which(override) and validator(override): + path = override + else: + tm.print_warn( + f"Configured {display} interpreter '{override}' is not usable; " + f"falling back to discovery." + ) + + if not path: + for c in candidates: + p = _which(c) + if not p: + continue + if validator(p): + path = p + break + + _resolved[name] = path + return path + + +def python_bin(): + return _resolve("python") + + +def lua_bin(): + return _resolve("lua") + + +def ensure(*names): + """Resolve each of the given names; raise if any is missing. + + Meant to be called at test load with the set of interpreters the + test tree actually needs, so the user gets a clear error before + execution starts instead of deep inside an engine spawn. + """ + missing = [] + for n in names: + if not _resolve(n): + display, gd_key, candidates, _ = _SPECS[n] + missing.append( + f" - {display}: tried {candidates} on PATH, none usable. " + f"Set '{gd_key}' in the YAML config to override." + ) + if missing: + raise ETUMRuntimeError( + "Required external interpreter(s) not found:\n" + "\n".join(missing) + ) + + +def reset(): + _resolved.clear() diff --git a/src/testium/interpreter/utils/lua_func_exec.py b/src/testium/interpreter/utils/lua_func_exec.py index c6c58c6..f2d90d1 100644 --- a/src/testium/interpreter/utils/lua_func_exec.py +++ b/src/testium/interpreter/utils/lua_func_exec.py @@ -29,7 +29,7 @@ class LuaFuncExecEngine(LuaProcessBase): # In case an error was encountered in the called function elif "error" in answer: - msg = f"{answer["error"]}" + msg = f"{answer['error']}" return TestValue.FAILURE, msg else: diff --git a/src/testium/interpreter/utils/lua_process.py b/src/testium/interpreter/utils/lua_process.py index 55928bb..e24688a 100644 --- a/src/testium/interpreter/utils/lua_process.py +++ b/src/testium/interpreter/utils/lua_process.py @@ -1,6 +1,5 @@ import os import sys -import shutil import subprocess import socket @@ -8,85 +7,7 @@ import api.testium as tm from runtime.jrpc import JsonRpcClient from interpreter.utils.paths import subproc_path from runtime.tum_except import ETUMRuntimeError -from interpreter.utils.paths import sys_app_path_lin, sys_app_path_win - -def _lua_version(path: str): - cmd = f'"{path}" -v' - try: - result = subprocess.run( - cmd, - shell=True, - capture_output=True, - text=True, - encoding=tm.sys_encoding(), - timeout=10, - ) - # Under windows, the output is on stderr - data = result.stdout or result.stderr - except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired) as e: - data = "" - try: - vers = ((data.split(" "))[1]).split(".") - if len(vers) != 3: - vers = (0, 0, 0) - except: - vers = (0, 0, 0) - return tuple(vers) - - -def _is_lua51(lua_bin): - res = False - v = _lua_version(lua_bin) - if (v[0] == "5") and (v[1] >= "1"): - res = True - return res - - -def _sys_lua_bin(): - sys_lua_bin = tm.gd("_sys_lua_bin", "") - if sys_lua_bin != "": - return sys_lua_bin - - cur_os = tm.OS() - if cur_os == "Windows": - func = sys_app_path_win - else: - func = sys_app_path_lin - - sys_lua_bin = func("lua") - if (sys_lua_bin != "") and not _is_lua51(sys_lua_bin): - tm.print_debug(f"'{sys_lua_bin}' not a lua 5.1 min.") - sys_lua_bin = "" - - tm.print_debug(f"lua bin is: '{sys_lua_bin}'.") - tm.setgd("_sys_lua_bin", sys_lua_bin) - return sys_lua_bin - - -def _is_lua_interpreter(path: str, timeout=2) -> bool: - """ - Checks if the given path points to a valid Lua interpreter. - - Args: - path (str): Path to the executable to check. - timeout (int, optional): Timeout for the subprocess in seconds. Defaults to 2. - - Returns: - bool: True if the path is a Lua interpreter, False otherwise. - """ - try: - result = subprocess.run( - [path, "-v"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True, - timeout=timeout, - ) - return (result.returncode == 0) and ( - (result.stdout.startswith("Lua") or result.stderr.startswith("Lua")) - ) - except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired): - return False +from interpreter.utils import bins class LuaProcessBase: @@ -96,35 +17,15 @@ class LuaProcessBase: "LUA_CPATH": {"replace": True}, } - def __init__(self, lua_bin="", request_handler=None, timeout=10): - """ - Initializes the Lua function execution engine. - - Args: - lua_bin (str, optional): Path to the Lua interpreter. Defaults to system path. - request_handler: Handler for JSON-RPC requests. - timeout (int, optional): Timeout for operations in seconds. Defaults to 10. + def __init__(self, request_handler=None, timeout=10): + """Initializes the Lua function execution engine. Raises: - ETUMRuntimeError: If the Lua path is invalid or no interpreter is found. + ETUMRuntimeError: If no Lua >= 5.1 interpreter is found. """ - if lua_bin != "": - if shutil.which(lua_bin) is None: - raise ETUMRuntimeError( - f"The passed lua path is not pointing to an executable: '{lua_bin}'" - ) - - if not _is_lua_interpreter(lua_bin): - raise ETUMRuntimeError( - f"The passed executable is not a lua interpreter: '{lua_bin}'" - ) - else: - lua_bin = _sys_lua_bin() - if lua_bin == "": - raise ETUMRuntimeError(f"No valid lua interpreter found") - tm.setgd("lua_bin", lua_bin) - - self._lbin = lua_bin + self._lbin = bins.lua_bin() + if not self._lbin: + raise ETUMRuntimeError("No valid Lua 5.1+ interpreter found") self._req_handler = request_handler self._process = None self._port = 0 diff --git a/src/testium/interpreter/utils/py_eval.py b/src/testium/interpreter/utils/py_eval.py index def3ebe..9d9275c 100644 --- a/src/testium/interpreter/utils/py_eval.py +++ b/src/testium/interpreter/utils/py_eval.py @@ -6,9 +6,9 @@ import api.testium as tm eval_process = None -def eval_process_init(python_bin, request_handler, timeout, python_path): +def eval_process_init(request_handler, timeout, python_path): global eval_process - eval_process = EvalExecEngine(python_bin, request_handler, timeout, python_path) + eval_process = EvalExecEngine(request_handler, timeout, python_path) return eval_process diff --git a/src/testium/interpreter/utils/py_func_exec.py b/src/testium/interpreter/utils/py_func_exec.py index 6f64b7b..efc8fe6 100644 --- a/src/testium/interpreter/utils/py_func_exec.py +++ b/src/testium/interpreter/utils/py_func_exec.py @@ -29,7 +29,7 @@ class PyFuncExecEngine(PyProcessBase): # In case an error was encountered in the called function elif "error" in answer: - msg = f"{answer["error"]}" + msg = f"{answer['error']}" return TestValue.FAILURE, msg else: diff --git a/src/testium/interpreter/utils/py_process.py b/src/testium/interpreter/utils/py_process.py index 1703368..9383945 100644 --- a/src/testium/interpreter/utils/py_process.py +++ b/src/testium/interpreter/utils/py_process.py @@ -1,77 +1,12 @@ import os -import shutil import sys import subprocess import socket from runtime.jrpc import JsonRpcClient import api.testium as tm -from interpreter.utils.paths import sys_app_path_lin, sys_app_path_win from runtime.tum_except import ETUMRuntimeError from interpreter.utils.paths import testium_path, subproc_path - - -def _python_version(path: str): - cmd = f'"{path}" -c "import sys; print(sys.version_info[:3])"' - try: - result = subprocess.run( - cmd, - shell=True, - capture_output=True, - text=True, - encoding=tm.sys_encoding(), - timeout=10, - ) - data = result.stdout - except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired) as e: - tm.print_debug(str(e)) - data = "" - return eval(data) - - -def _is_python3(python_bin): - try: - v = _python_version(python_bin) - if v[0] == 3: - res = True - except: - res = False - - return res - - -def _is_python_interpreter(path: str, timeout=2) -> bool: - try: - result = subprocess.run( - [path, "-c", "import sys; print(sys.executable)"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True, - timeout=timeout, - ) - return result.returncode == 0 - except (FileNotFoundError, PermissionError, subprocess.TimeoutExpired): - return False - - -def _sys_python_bin(): - sys_python_bin = "" - - cur_os = tm.OS() - if cur_os == "Windows": - func = sys_app_path_win - else: - func = sys_app_path_lin - - exe = ["python3", "python"] - for e in exe: - sys_python_bin = func(e) - if sys_python_bin == "": - continue - if _is_python3(sys_python_bin): - break - sys_python_bin = "" - - return sys_python_bin +from interpreter.utils import bins class PyProcessBase: @@ -80,29 +15,10 @@ class PyProcessBase: "PYTHONPATH": {"replace": True}, } - def __init__(self, python_bin="", request_handler=None, timeout=10, python_path=""): - self._pbin = python_bin - if (self._pbin is not None) and (self._pbin != ""): - - if shutil.which(self._pbin) is None: - raise ETUMRuntimeError( - f"The passed python path is not pointing to an executable: '{self._pbin}'" - ) - - if not _is_python_interpreter(self._pbin): - raise ETUMRuntimeError( - f"The passed executable is not a python interpreter: '{self._pbin}'" - ) - - else: - self._pbin = tm.gd("_cached_python_bin", "") - if self._pbin == "": - self._pbin = _sys_python_bin() - tm.setgd("_cached_python_bin", self._pbin) - - if self._pbin == "": - raise ETUMRuntimeError(f"No valid python interpreter found") - + def __init__(self, request_handler=None, timeout=10, python_path=""): + self._pbin = bins.python_bin() + if not self._pbin: + raise ETUMRuntimeError("No valid Python 3 interpreter found") self._ppath = python_path self._req_handler = request_handler self._process = None diff --git a/src/testium/interpreter/utils/test_ctrl.py b/src/testium/interpreter/utils/test_ctrl.py index 6896db8..1b5064d 100644 --- a/src/testium/interpreter/utils/test_ctrl.py +++ b/src/testium/interpreter/utils/test_ctrl.py @@ -25,12 +25,17 @@ class TestSetController: if "timeout" in args: timeout = args.pop("timeout") self._test_ctrl.put({cmd: args}) - res = self._test_resp.get(block, timeout) - if isinstance(res, tuple): - raise ETUMRuntimeError(f"Test set command '{cmd}' failed: '{res[1]}'") - if isinstance(res, dict) and not cmd in res.keys(): - raise ETUMRuntimeError(f"Unexpected return error in test set controller") - return res[cmd] + # Drain stale responses (left over from earlier polled commands that + # we had given up on waiting). They can land in the queue after our + # clear() because the TestProcess may have pulled their request + # before the clear, processed them, and pushed the response after. + while True: + res = self._test_resp.get(block, timeout) + if isinstance(res, tuple): + raise ETUMRuntimeError(f"Test set command '{cmd}' failed: '{res[1]}'") + if isinstance(res, dict) and cmd in res.keys(): + return res[cmd] + # Anything else is a stale response — discard and keep waiting. def clear(self): while True: diff --git a/src/testium/py_func/handle.py b/src/testium/py_func/handle.py index 9108223..c6f45f6 100644 --- a/src/testium/py_func/handle.py +++ b/src/testium/py_func/handle.py @@ -41,7 +41,7 @@ class FuncHandler(JsonRpcSrv): except Exception as e: tb = traceback.format_exc() return { - "error": f"bad jrpc req handler 'func_call' arguments ({"\n".join(tb.splitlines())}). To be reported to testium support team." + "error": "bad jrpc req handler 'func_call' arguments (" + "\n".join(tb.splitlines()) + "). To be reported to testium support team." } if method == "eval": try: @@ -57,7 +57,7 @@ class FuncHandler(JsonRpcSrv): except Exception as e: tb = traceback.format_exc() return { - "error": f"bad jrpc req handler 'eval' arguments ({"\n".join(tb.splitlines())}). To be reported to testium support team." + "error": "bad jrpc req handler 'eval' arguments (" + "\n".join(tb.splitlines()) + "). To be reported to testium support team." } else: return { diff --git a/src/testium/py_func/tm.py b/src/testium/py_func/tm.py index cdfea6d..cb86570 100644 --- a/src/testium/py_func/tm.py +++ b/src/testium/py_func/tm.py @@ -28,7 +28,7 @@ def _make_api(name): if "result" in res: ret_val = res["result"] elif "error" in res: - raise ETUMRuntimeError(f"api call to 'tm.{name}' failed with error '{res["error"]}'") + raise ETUMRuntimeError(f"api call to 'tm.{name}' failed with error '{res['error']}'") else: raise ETUMRuntimeError("api call failure in jrpc client to be reported to testium support team.") return ret_val diff --git a/src/testium/runtime/api.py b/src/testium/runtime/api.py index 92f9acd..7b630c9 100644 --- a/src/testium/runtime/api.py +++ b/src/testium/runtime/api.py @@ -6,5 +6,10 @@ SUPPORTED_API = [ "add_plot_values", "last_plot_value", "text_mode", + "OS", + "get_main_dir", + "init_timestamp", + "timestamp", + "timestamp_as_sec", ] diff --git a/src/testium/runtime/jrpc.py b/src/testium/runtime/jrpc.py index b3b45d8..1fd2580 100644 --- a/src/testium/runtime/jrpc.py +++ b/src/testium/runtime/jrpc.py @@ -145,7 +145,7 @@ class JsonRpcConnection: self.pending[msg["id"]]["response"] = msg self.pending[msg["id"]]["event"].set() else: - self.print_info(f"msg id '{msg["id"]}' inconsistency") + self.print_info(f"msg id '{msg['id']}' inconsistency") # ---------- Handler ---------- def _handle_request(self, meth, params, rid=None): diff --git a/test/validation/items/common/helper_lib.py b/test/validation/items/common/helper_lib.py index 197d97c..b9e7ff7 100644 --- a/test/validation/items/common/helper_lib.py +++ b/test/validation/items/common/helper_lib.py @@ -1,4 +1,4 @@ -import api.testium as libtm +import py_func.tm as libtm def check_os(expected_os): diff --git a/test/validation/items/parallel/parallel.py b/test/validation/items/parallel/parallel.py index f8a7527..8a3a57e 100644 --- a/test/validation/items/parallel/parallel.py +++ b/test/validation/items/parallel/parallel.py @@ -1,5 +1,5 @@ import time -import api.testium as tm +import py_func.tm as tm def sleep_func(duration): diff --git a/test/validation/param.yaml b/test/validation/param.yaml index f2cf096..9dd8abf 100644 --- a/test/validation/param.yaml +++ b/test/validation/param.yaml @@ -30,17 +30,10 @@ linux_prompt: "$ " inc_no_template: "inc no template" inc_with_template: "inc with template" -lua_rev: 5.5 - -LUA_PATH_Linux: /usr/share/lua/$(lua_rev)/?.lua;/usr/local/share/lua/$(lua_rev)/?.lua;/usr/local/share/lua/$(lua_rev)/?/init.lua;/usr/share/lua/$(lua_rev)/?/init.lua;/usr/local/lib/lua/$(lua_rev)/?.lua;/usr/local/lib/lua/$(lua_rev)/?/init.lua;/usr/lib/lua/$(lua_rev)/?.lua;/usr/lib/lua/$(lua_rev)/?/init.lua;./?.lua;./?/init.lua;/home/francois/.luarocks/share/lua/$(lua_rev)/?.lua;/home/francois/.luarocks/share/lua/$(lua_rev)/?/init.lua -LUA_CPATH_Linux: /usr/local/lib/lua/$(lua_rev)/?.so;/usr/lib/lua/$(lua_rev)/?.so;/usr/local/lib/lua/$(lua_rev)/loadall.so;/usr/lib/lua/$(lua_rev)/loadall.so;./?.so;/home/francois/.luarocks/lib/lua/$(lua_rev)/?.so -PATH_Linux: - -LUA_PATH_Windows: ;.\?.lua;C:\Lua\5.1\lua\?.lua;C:\Lua\5.1\lua\?\init.lua;C:\Lua\5.1\?.lua;C:\Lua\5.1\?\init.lua;C:\Lua\5.1\lua\?.luac -LUA_CPATH_Windows: .\?.dll;C:\Lua\5.1\?.dll;C:\Lua\5.1\loadall.dll;C:\Lua\5.1\clibs\?.dll;C:\Lua\5.1\clibs\loadall.dll;.\?51.dll;C:\Lua\5.1\?51.dll;C:\Lua\5.1\clibs\?51.dll -PATH_Windows: "" - -lua_env: - PATH: $(PATH_$(os)) - LUA_PATH: $(LUA_PATH_$(os)) - LUA_CPATH: $(LUA_CPATH_$(os)) \ No newline at end of file +# LUA_PATH / LUA_CPATH are intentionally NOT set: the lua interpreter's +# compiled-in defaults already point to the version-matching directories +# (/usr/share/lua/X.Y, /usr/lib/.../lua/X.Y) where the system packages +# lua-cjson and lua-socket install their files. Hard-coding a `lua_rev` +# here would break as soon as the host's lua differs from that value +# (which is exactly what happened on Debian Bookworm with lua5.5 +# vs. lua-cjson built for lua5.4). \ No newline at end of file