See: https://gitlab.com/BuildStream/buildstream-docker-images/-/merge_requests/238#note_3715370970
TLDR from matrix: CI failing because the latest fedora 43 container had python 3.14.2, and now it's 3.14.7, and buildstream doesn't work with 3.14.7?
Looks like !240 (merged) is potential fix, to later fix Buildstream compatibility with 3.14.7
Which means this MR is blocked until !240 (merged) or other MR fixes the CI job.
Interesting running the test locally against Buildstream master, we don't hit the same failure with python 3.14.7
$ uvx --python 3.14.7 tox -e py314 run -- tests/integration/interactive_build.py::test_failed_build_log --no-cov --integration
snip setup
===================================================================================== test session starts ======================================================================================
platform linux -- Python 3.14.7, pytest-9.0.3, pluggy-1.6.0 -- /var/home/nathanwilliams/buildstream/.tox/py314/bin/python
cachedir: .tox/py314/.pytest_cache
rootdir: /var/home/nathanwilliams/buildstream
configfile: setup.cfg
plugins: xdist-3.8.0, timeout-2.4.0, env-1.6.0, datafiles-3.0.1, cov-7.1.0
timeout: 1800.0s
timeout method: signal
timeout func_only: False
collected 1 item
tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst] PASSED [100%]
===================================================================================== slowest 20 durations =====================================================================================
9.05s call tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
0.08s setup tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
(1 durations < 0.005s hidden. Use -vv to show these durations.)
====================================================================================== 1 passed in 9.18s =======================================================================================
snip teardown
compared to: https://gitlab.com/BuildStream/buildstream-docker-images/-/jobs/16010720616#L3798
Interesting. Did you try it without the console? (e.g. tox ... | cat)
Dead:
$ uvx --python 3.14.7 tox -e py314 run -- tests/integration/interactive_build.py::test_failed_build_log --no-cov --integration | cat
snip setup
============================= test session starts ==============================
platform linux -- Python 3.14.7, pytest-9.0.3, pluggy-1.6.0 -- /var/home/nathanwilliams/buildstream/.tox/py314/bin/python
cachedir: .tox/py314/.pytest_cache
rootdir: /var/home/nathanwilliams/buildstream
configfile: setup.cfg
plugins: xdist-3.8.0, timeout-2.4.0, env-1.6.0, datafiles-3.0.1, cov-7.1.0
timeout: 1800.0s
timeout method: signal
timeout func_only: False
collecting ... collected 1 item
tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst] FAILED [100%]
=================================== FAILURES ===================================
_____________ test_failed_build_log[interactive/failed-build.bst] ______________
element_name = 'interactive/failed-build.bst'
build_session = <pexpect.pty_spawn.spawn object at 0x7fcd1ccef8c0>
@pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox")
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize("element_name", ["interactive/failed-build.bst"])
def test_failed_build_log(element_name, build_session):
build_session.expect_exact("Choice: [continue]:", timeout=PEXPECT_TIMEOUT_LONG)
build_session.sendline("log")
# Send a few carriage returns to get to the end of the pager
build_session.sendline(os.linesep * 20)
# Assert that we got something from the logs
build_session.expect("FAILURE interactive/failed-build.bst: Running (build-)?commands")
# Quit the pager
build_session.send("q")
# Quit the session
build_session.expect_exact("Choice: [continue]:")
tests/integration/interactive_build.py:108:
.tox/py314/lib/python3.14/site-packages/pexpect/spawnbase.py:432: in expect_exact
return exp.expect_loop(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py314/lib/python3.14/site-packages/pexpect/expect.py:179: in expect_loop
return self.eof(e)
^^^^^^^^^^^
self = <pexpect.expect.Expecter object at 0x7fcd1cb8ca50>
err = EOF('End Of File (EOF). Exception style platform.')
def eof(self, err=None):
spawn = self.spawn
spawn.before = spawn._before.getvalue()
spawn._buffer = spawn.buffer_type()
spawn._before = spawn.buffer_type()
spawn.after = EOF
index = self.searcher.eof_index
if index >= 0:
spawn.match = EOF
spawn.match_index = index
return index
else:
spawn.match = None
spawn.match_index = None
msg = str(spawn)
msg += '\nsearcher: %s' % self.searcher
if err is not None:
msg = str(err) + '\n' + msg
exc = EOF(msg)
exc.__cause__ = None # in Python 3.x we can use "raise exc from None"
E pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
E <pexpect.pty_spawn.spawn object at 0x7fcd1ccef8c0>
E command: /var/home/nathanwilliams/buildstream/.tox/py314/bin/bst
E args: ['/var/home/nathanwilliams/buildstream/.tox/py314/bin/bst', '--directory', '/var/home/nathanwilliams/buildstream/.tox/py314/tmp/test_failed_build_log_interact0', '--config', '/var/home/nathanwilliams/buildstream/.tox/py314/tmp/test_failed_build_log_interact0/buildstream.conf', '--no-colors', 'build', 'interactive/failed-build.bst']
E buffer (last 100 chars): b''
E before (last 100 chars): b' Queue: processed 3, skipped 0, failed 0 \r\n Build Queue: processed 2, skipped 0, failed 1 \r\n\r\n\r\nq'
E after: <class 'pexpect.exceptions.EOF'>
E match: None
E match_index: None
E exitstatus: None
E flag_eof: True
E pid: 67734
E child_fd: 13
E closed: False
E timeout: 30
E delimiter: <class 'pexpect.exceptions.EOF'>
E logfile: None
E logfile_read: None
E logfile_send: None
E maxread: 2000
E ignorecase: False
E searchwindowsize: None
E delaybeforesend: 0.05
E delayafterclose: 0.1
E delayafterterminate: 0.1
E searcher: searcher_string:
E 0: b'Choice: [continue]:'
.tox/py314/lib/python3.14/site-packages/pexpect/expect.py:122: EOF
============================= slowest 20 durations =============================
8.79s call tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
0.09s setup tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
(1 durations < 0.005s hidden. Use -vv to show these durations.)
=========================== short test summary info ============================
FAILED tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
============================== 1 failed in 9.01s ===============================
snip teardown
Fails same way in 3.14.6, 3.14.5, 3.14.4, 3.14.3 and 3.14.2
A change in buildstream?
See: https://gitlab.com/BuildStream/buildstream-docker-images/-/merge_requests/238#note_3715370970
TLDR from matrix: CI failing because the latest fedora 43 container had python 3.14.2, and now it's 3.14.7, and buildstream doesn't work with 3.14.7?
Looks like !240 (merged) is potential fix, to later fix Buildstream compatibility with 3.14.7
Which means this MR is blocked until !240 (merged) or other MR fixes the CI job.
Interesting running the test locally against Buildstream master, we don't hit the same failure with python 3.14.7
$ uvx --python 3.14.7 tox -e py314 run -- tests/integration/interactive_build.py::test_failed_build_log --no-cov --integration
snip setup
===================================================================================== test session starts ======================================================================================
platform linux -- Python 3.14.7, pytest-9.0.3, pluggy-1.6.0 -- /var/home/nathanwilliams/buildstream/.tox/py314/bin/python
cachedir: .tox/py314/.pytest_cache
rootdir: /var/home/nathanwilliams/buildstream
configfile: setup.cfg
plugins: xdist-3.8.0, timeout-2.4.0, env-1.6.0, datafiles-3.0.1, cov-7.1.0
timeout: 1800.0s
timeout method: signal
timeout func_only: False
collected 1 item
tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst] PASSED [100%]
===================================================================================== slowest 20 durations =====================================================================================
9.05s call tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
0.08s setup tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
(1 durations < 0.005s hidden. Use -vv to show these durations.)
====================================================================================== 1 passed in 9.18s =======================================================================================
snip teardown
compared to: https://gitlab.com/BuildStream/buildstream-docker-images/-/jobs/16010720616#L3798
Interesting. Did you try it without the console? (e.g. tox ... | cat)
Dead:
$ uvx --python 3.14.7 tox -e py314 run -- tests/integration/interactive_build.py::test_failed_build_log --no-cov --integration | cat
snip setup
============================= test session starts ==============================
platform linux -- Python 3.14.7, pytest-9.0.3, pluggy-1.6.0 -- /var/home/nathanwilliams/buildstream/.tox/py314/bin/python
cachedir: .tox/py314/.pytest_cache
rootdir: /var/home/nathanwilliams/buildstream
configfile: setup.cfg
plugins: xdist-3.8.0, timeout-2.4.0, env-1.6.0, datafiles-3.0.1, cov-7.1.0
timeout: 1800.0s
timeout method: signal
timeout func_only: False
collecting ... collected 1 item
tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst] FAILED [100%]
=================================== FAILURES ===================================
_____________ test_failed_build_log[interactive/failed-build.bst] ______________
element_name = 'interactive/failed-build.bst'
build_session = <pexpect.pty_spawn.spawn object at 0x7fcd1ccef8c0>
tests/integration/interactive_build.py:108:
.tox/py314/lib/python3.14/site-packages/pexpect/spawnbase.py:432: in expect_exact
return exp.expect_loop(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
.tox/py314/lib/python3.14/site-packages/pexpect/expect.py:179: in expect_loop
return self.eof(e)
^^^^^^^^^^^
self = <pexpect.expect.Expecter object at 0x7fcd1cb8ca50>
err = EOF('End Of File (EOF). Exception style platform.')
E pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
E <pexpect.pty_spawn.spawn object at 0x7fcd1ccef8c0>
E command: /var/home/nathanwilliams/buildstream/.tox/py314/bin/bst
E args: ['/var/home/nathanwilliams/buildstream/.tox/py314/bin/bst', '--directory', '/var/home/nathanwilliams/buildstream/.tox/py314/tmp/test_failed_build_log_interact0', '--config', '/var/home/nathanwilliams/buildstream/.tox/py314/tmp/test_failed_build_log_interact0/buildstream.conf', '--no-colors', 'build', 'interactive/failed-build.bst']
E buffer (last 100 chars): b''
E before (last 100 chars): b' Queue: processed 3, skipped 0, failed 0 \r\n Build Queue: processed 2, skipped 0, failed 1 \r\n\r\n\r\nq'
E after: <class 'pexpect.exceptions.EOF'>
E match: None
E match_index: None
E exitstatus: None
E flag_eof: True
E pid: 67734
E child_fd: 13
E closed: False
E timeout: 30
E delimiter: <class 'pexpect.exceptions.EOF'>
E logfile: None
E logfile_read: None
E logfile_send: None
E maxread: 2000
E ignorecase: False
E searchwindowsize: None
E delaybeforesend: 0.05
E delayafterclose: 0.1
E delayafterterminate: 0.1
E searcher: searcher_string:
E 0: b'Choice: [continue]:'
.tox/py314/lib/python3.14/site-packages/pexpect/expect.py:122: EOF
============================= slowest 20 durations =============================
8.79s call tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
0.09s setup tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
(1 durations < 0.005s hidden. Use -vv to show these durations.)
=========================== short test summary info ============================
FAILED tests/integration/interactive_build.py::test_failed_build_log[interactive/failed-build.bst]
============================== 1 failed in 9.01s ===============================
snip teardown
Fails same way in 3.14.6, 3.14.5, 3.14.4, 3.14.3 and 3.14.2
A change in buildstream?