Skip to content

Releases: Rahix/tbot

Version 0.10.10

25 Nov 20:44
v0.10.10

Choose a tag to compare

Added

  • Added a requires_legacy_scp setting for SSH-based machines to make linux.copy() and similar functions use the legacy SCP protocol instead of SFTP (#123 by @olmanqj). This may be useful for some old systems where no SFTP is available.

Changed

  • Dropped official support for Python 3.8 - tbot now expects at least Python 3.9.

Fixed

  • Fixed an error about incorrect slots in SubprocessChannelIO on more recent Python versions.

Version 0.10.9

01 Nov 15:02
v0.10.9

Choose a tag to compare

Changed

  • Increased grace period for subprocesses to terminate from 1 to 10 seconds. A warning is emitted after 1 seconds anyway, to let the user know why tbot is waiting (#120).

Fixed

  • Added a workaround for the crc32 command in U-Boot which can collide with the U-Boot prompt in some cases (#112).

Version 0.10.8

18 May 11:49
v0.10.8

Choose a tag to compare

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

17 Mar 18:06
v0.10.7

Choose a tag to compare

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

  • Fixed tbot hanging when an unresponsive subprocess does not terminate by itself (#104 by @Mike8).
  • Fixed tbot no longer detecting unbounded regex patterns on recent Python versions.

Version 0.10.6

08 Sep 14:48
v0.10.6

Choose a tag to compare

Added

  • Gpio.pulse() method in tbot_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 with askfirst (#98).
  • Added the ability to use environment variables in @<filename> argument files (#96 by @hsdenx).

Version 0.10.5

12 Jun 07:41
v0.10.5

Choose a tag to compare

Added

  • Added a password_prompt configuration to LinuxBootLogin 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

13 Apr 12:15
v0.10.4

Choose a tag to compare

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 with OSError: [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

21 Nov 08:34
v0.10.3

Choose a tag to compare

Added

  • Added a force parameter to tbot.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 to tbot.log.with_verbosity().
  • Added an AutoConsoleConnector to tbot_contrib which automatically selects the best available tool for connecting to a serial console.

Version 0.10.2

13 Oct 17:33
v0.10.2

Choose a tag to compare

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 existing copy() 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 to newbot 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() to tbot.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 the use_multiplexing setting (#77).

Version 0.10.1

18 Aug 08:19
v0.10.1

Choose a tag to compare

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). See no_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. Pressing CTRL-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.