Releases: Rahix/tbot
Releases · Rahix/tbot
Version 0.10.9
Version 0.10.8
Added
- Added a sanity check to Linux shell initialization which should catch situations where things went wrong. This should provided a more clear error message in the future (#115).
- A specific (and documented) error type for situations where a bounded regex pattern is required but an unbounded pattern was supplied.
- A specific error type for situations where a tool is missing on a host which would be required by some testcase.
Fixed
- Fixed U-Boot selftests failing on some systems due to an unclean environment.
Version 0.10.7
Changed
- Dropped official support for Python 3.7 - tbot now expects at least Python 3.8.
- Improved exception message when parsing of a command's return code fails (for example due to console clutter).
- Made the shell detection mechanism a bit more robust (
wait_for_shell()
).
Fixed
Version 0.10.6
Added
Gpio.pulse()
method intbot_contrib
for pulsing a GPIO pin (#95 by @bauer-alex-174).- Added coverage tracking for tests. Feel free to help improving coverage, especially of obscure features that will easily break when we don't ensure their functionality with tests.
- Added an
AskfirstInitializer
which can be used to deal with boards where the console is configured withaskfirst
(#98). - Added the ability to use environment variables in
@<filename>
argument files (#96 by @hsdenx).
Version 0.10.5
Added
- Added a
password_prompt
configuration toLinuxBootLogin
which allows customizing what password prompt to wait for. This helps when the system is localized in a different language (#93 by @bauer-alex-174). - Added a
tbot_contrib.utils.find_block_partitions()
helper for finding all partitions of a particular block device.
Version 0.10.4
Added
- Added a
tbot_contrib.linux.meminfo()
helper for extracting info from/proc/meminfo
.
Changed
- Updated the best-practice example for pytest integration (pytest Integration). It now properly allows accessing the configured machines before tests are run (#86 by @micaeb). An example, where this may be useful, is parameterizing a test depending on a configured machine:
# board config class MyBoard(......): interfaces = ["eth0", "usb0"] # testcase module import pytest import tbot def _interfaces(): with tbot.ctx.request(tbot.role.Board) as b: return b.interfaces @pytest.mark.parametrize("interface", _interfaces()) def test_interface(interface): tbot.log.message(f"Testing interface {interface}")
Fixed
- Fixed a file descriptor leak in the
SubprocessConnector
(#88 by @micaeb). This would lead to an ever increasing number of open files in long test runs. On systems with a low file descriptor limit, tbot would then crash withOSError: [Errno 24] Too many open files
. - Fixed channels not being closed by
SSHConnector
(#91 by @micaeb). Channels stayed open until tbot exited, which is again problematic for long running tests. - Fixed
SSHConnector
not using the lab-host to connect to remote hosts (#92). This was the behavior in the past and got broken in tbot 0.9.0. - Fixed a couple of robustness issues in
tbot_contrib.gdb
where tbot would hang or throw the wrong type of exception when encountering unexpected situations.
Version 0.10.3
Added
- Added a
force
parameter totbot.tc.check_for_tool()
which forces the check even if a result was already cached for this tool (#83 by @jneuhauser). - Added an
only_decrease
parameter totbot.log.with_verbosity()
. - Added an
AutoConsoleConnector
totbot_contrib
which automatically selects the best available tool for connecting to a serial console.
Version 0.10.2
Added
- Added a
tbot_contrib.utils.copy_to_dir()
helper which copies multiple files to a directory. It is a more ergonomic wrapper around the existingcopy()
function. Check its documentation for more details:copy_to_dir()
(#77). - Lots of custom exception types in the
tbot.error
module so test-code can differentiate between different kinds of errors. This is ongoing work and will continue in future releases (#79). - Added a
--json-log-stream
CLI option tonewbot
which can be used to reactivate the existing old json-stream logging infrastructure. A new logging mechansim will be added for newbot at some point in the future (#78 by @locomotiveviaduct).
Changed
- Moved
tbot.tc.shell.copy()
totbot.machine.linux.copy()
as it is a core part of tbot. The old name still exists for compatibility (#77).
Fixed
- Fixed tbot hanging when the remote side closes a channel while tbot is reading from it (#74).
- Fixed a double exception in the context manager for a channel (#74).
- Fixed the U-Boot shell not initializing correctly on very slow serial lines.
- Fixed
copy()
not honoring theuse_multiplexing
setting (#77).
Version 0.10.1
Added
- Added
linux.RedirStdin
to feed file contents to stdin of a command (#69 by @Lusus). - Added a mechanism which allows tbot to skip entering the password if the remote system never asks for one (
61800b63461b
). Seeno_password_timeout
for details. - Added the
tbot.log.with_verbosity()
helper which can be used to temporarily change the verbosity level of tbot. - Added some documentation on how to integrate tbot with pytest: pytest Integration
Fixed
- Fixed
Channel.send()
behavior when called with large amounts of data. - Fixed invalid non-blocking I/O handling in the
SubprocessChannel
implementation. - Fixed a few more escape sequences that clobber tbot's output.
Changed
- Updated the
tbot_contrib.swupdate
testcases to newer tbot APIs. - Changed the escape sequence for exiting interactive sessions. You can now press
CTRL-]
three times within 1 second to exit any interactive session at any time. PressingCTRL-D
is no longer supported in any but the interactive linux-shell sessions (#70). - For all who didn't get the memo that Python 3.6 is EOL: tbot now requires 3.7 as the minimum supported Python version.
Version 0.10.0
Added
- The
newbot
CLI interface as a completely new and improved tool for calling tbot scripts. The documentation has been updated, you can familiarize yourself with the new tool in the new Quickstart Guide and learn about migrating to it in Migrating tonewbot
. Thetbot
tool will not be removed for the time being but it will not be the place for new development from now on. - Added a
boot_timeout
setting toLinuxBootLogin
which will raise aTimeoutException
if the login-prompt is not reached in the given time.
Changed
- Upgraded the python package metadata to newer standards. Ideally this should not have any visible effects to users.
Fixed
- Fixed
tbot_contrib.locking
sometimes failing withchmod
related error messages while checking lock expiry.