From 645cb3a9e9eddc6d2752ec37ecc83a7246f41b2a Mon Sep 17 00:00:00 2001 From: Pavel Sokolov Date: Mon, 31 Aug 2026 21:32:05 +0300 Subject: [PATCH] Bump the pytest-embedded pins to 2.9.3 Moves the five harness pins from 2.8.1 to 2.9.3, the release carrying the fix for espressif/pytest-embedded#425. _PopenRedirectProcess._forward_io tailed the redirect log in text mode while it was still being appended to, so a UTF-8 sequence straddling a read boundary raised UnicodeDecodeError. The `except Exception` around the read swallowed it: the forwarder exited 0 with an empty stderr and DUT output stopped for the rest of the session, surfacing much later as a pexpect timeout naming an unrelated test. 2.9.0 opens that file with 'rb' - verified in the published wheel, not from the changelog. Nothing else moves. pytest-embedded-serial-esp still requires esptool<6,>=5.2 unchanged between the two releases, so esptool stays at 5.3.1 and the assertion in the verification layer stays as it is; pytest, pytest-timeout and pytest-cov are already at their latest. The dependency set of pytest-embedded itself is identical across the bump. Verified behaviourally rather than by version string: a 200-line firmware emitting an em dash, run under QEMU in the built image, passes in 2.9s on 2.9.3 and fails with pexpect.exceptions.TIMEOUT on 2.8.1 - output truncated at line 012 - with the harness downgraded inside that same image. The version in the comment above the pins moves with them; it names the release whose esptool requirement the paragraph is about. Closes #30 --- images/esp-idf/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/images/esp-idf/Dockerfile b/images/esp-idf/Dockerfile index d353b02..d0f2547 100644 --- a/images/esp-idf/Dockerfile +++ b/images/esp-idf/Dockerfile @@ -47,7 +47,7 @@ RUN export IDF_PATH_FORCE=1 && \ # # pytest-embedded-serial is transitive (via -serial-esp) and named here so it # cannot float on its own. esptool is pinned even though ESP-IDF installs it: - # pytest-embedded-serial-esp 2.8.1 requires esptool<6,>=5.2 and pip overwrites + # pytest-embedded-serial-esp 2.9.3 requires esptool<6,>=5.2 and pip overwrites # the SDK's copy, so this image runs esptool 5.3.1 against ESP-IDF 5.5's # constraint esptool~=4.12. That divergence is deliberate and verified. Do NOT # "fix" it by editing espidf.constraints.*.txt (a cache with a 1-day TTL), by @@ -56,11 +56,11 @@ RUN export IDF_PATH_FORCE=1 && \ # It collapses on its own at ESP-IDF 6.0, whose constraints already pair # esptool 5.x with pytest-embedded 2.x. Never relax the <6 bound while on 5.5. pytest==9.1.1 \ - pytest-embedded==2.8.1 \ - pytest-embedded-serial==2.8.1 \ - pytest-embedded-serial-esp==2.8.1 \ - pytest-embedded-idf==2.8.1 \ - pytest-embedded-qemu==2.8.1 \ + pytest-embedded==2.9.3 \ + pytest-embedded-serial==2.9.3 \ + pytest-embedded-serial-esp==2.9.3 \ + pytest-embedded-idf==2.9.3 \ + pytest-embedded-qemu==2.9.3 \ pytest-timeout==2.4.0 \ pytest-cov==7.1.0 \ esptool==5.3.1 \