From 78ffa27790d6c706f4ede57dbbe8e279165923a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 20 Aug 2026 23:17:23 +0100 Subject: [PATCH 1/2] ci: Add Fedora 44, remove other Fedora images Fedora 42 is EOL for a while, python 3.14 is already tested with F44 --- .github/common.env | 2 +- .github/compose/ci.docker-compose.yml | 10 +++------- .github/run-ci.sh | 2 +- .github/workflows/ci.yml | 3 +-- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/common.env b/.github/common.env index de24cb564..11ff253f6 100644 --- a/.github/common.env +++ b/.github/common.env @@ -1,6 +1,6 @@ # Shared common variables -CI_IMAGE_VERSION=master-2310077904 +CI_IMAGE_VERSION=master-2779642792 CI_TOXENV_MAIN=py310,py311,py312,py313,py314 CI_TOXENV_PLUGINS=py310-plugins,py311-plugins,py312-plugins,py313-plugins,py314-plugins CI_TOXENV_ALL="${CI_TOXENV_MAIN},${CI_TOXENV_PLUGINS}" diff --git a/.github/compose/ci.docker-compose.yml b/.github/compose/ci.docker-compose.yml index c0590e786..5dd7ac1d9 100644 --- a/.github/compose/ci.docker-compose.yml +++ b/.github/compose/ci.docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' x-tests-template: &tests-template - image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:42-${CI_IMAGE_VERSION:-latest} + image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:44-${CI_IMAGE_VERSION:-latest} command: tox -vvvvv -- --color=yes --integration environment: TOXENV: ${CI_TOXENV_ALL} @@ -30,13 +30,9 @@ services: <<: *tests-template image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:13-${CI_IMAGE_VERSION:-latest} - fedora-42: + fedora-44: <<: *tests-template - image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:42-${CI_IMAGE_VERSION:-latest} - - fedora-43: - <<: *tests-template - image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:43-${CI_IMAGE_VERSION:-latest} + image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:44-${CI_IMAGE_VERSION:-latest} ubuntu-22.04: <<: *tests-template diff --git a/.github/run-ci.sh b/.github/run-ci.sh index 8118d0abd..f3690320e 100755 --- a/.github/run-ci.sh +++ b/.github/run-ci.sh @@ -102,7 +102,7 @@ function runServiceTest() { if [ -z "${test_names}" ]; then - for test_name in mypy debian-12 debian-13 fedora-42 fedora-43 fedora-missing-deps ubuntu-22.04; do + for test_name in mypy debian-12 debian-13 fedora-44 fedora-missing-deps ubuntu-22.04; do if ! runTest "${test_name}"; then echo "Tests failed" exit 1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07faedc0a..790215866 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,8 +38,7 @@ jobs: test-name: - debian-12 - debian-13 - - fedora-42 - - fedora-43 + - fedora-44 - fedora-missing-deps - ubuntu-22.04 - lint From 9bc9f84be5b4e437228145ffd0a7892b609aa313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Sun, 23 Aug 2026 14:52:09 +0100 Subject: [PATCH 2/2] tests: set TERM for interactive pexpect sessions Interactive tests allocate a PTY via pexpect but inherit the process environment. When TERM is unset or "dumb" (common in CI containers), click.echo_via_pager does not run an interactive less; the test still sends "q" as if a pager were active, which is then read as choice "quit". This happened in the new fedora 44 image, for example Ensure a usable TERM in the build_session fixture so pager-driven tests behave like a normal interactive terminal. --- tests/integration/interactive_build.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/integration/interactive_build.py b/tests/integration/interactive_build.py index 580d698eb..9a63ecfa8 100644 --- a/tests/integration/interactive_build.py +++ b/tests/integration/interactive_build.py @@ -36,6 +36,13 @@ def build_session(integration_cache, datafiles, element_name): project = str(datafiles) + # Interactive tests need a usable TERM so tools like click's pager (less) + # run interactively. Containers used for CI often leave TERM unset even + # when pexpect allocates a PTY. + env = os.environ.copy() + if not env.get("TERM") or env["TERM"] == "dumb": + env["TERM"] = "xterm" + # Spawn interactive session using `configured()` context manager in order # to get the same config file as the `cli` fixture. with runcli.configured(project, config={"sourcedir": integration_cache.sources}) as config_file: @@ -50,6 +57,7 @@ def build_session(integration_cache, datafiles, element_name): "build", element_name, ], + env=env, timeout=PEXPECT_TIMEOUT_SHORT, ) yield session