-C
parameter to allow setting a different working directory${TBOTPATH}
environment variable to provide additional testcase directories;TBOTPATH
is a:
separated list of directorie
tbot.log.warning
: Print a warning message- If tbot fails to load a testcase source, it will now show the traceback that caused the failure
- Show any and all output that is received on the channel with
-vvv
BoardLinuxMachine
now allows the login and password prompts to be clobberedBoardLinuxMachine
login now waits for the shell to respond
login_wait
config parameter fromBoardLinuxMachine
. This "hack" is superseded by the more robust login implementation now.
importlib.util
needs to be manually imported on some python versions
Machine.env
: Easily get the value of an environment variable- Allow specifying a command when spawning a subshell.
ub.bootlog
andlnx.bootlog
to allow accessing the bootlog (ref #5)- Add
SSHMachine.ssh_config
: List of additional ssh config options
- Proper buildhost support + U-Boot build testcase
GitRepository
now fetches latest changes from remote by defaultLinuxMachine.subshell
: Spawn subshell to isolate context changes
- Allow setting
autoboot_prompt
toNone
, if the board automatically drops into a U-Boot shell. - Testcase directories are now traversed recurively
SSHLabHost
now attempts to use values from~/.ssh/config
if available.SSHMachine
: Use labhost's username by default
Version 0.6.0 is finally here! It is a complete rewrite so none of the old
stuff is relevant any more. The changelog below is not everything that was
changed, but the changes since the last prerelease (0.6.0-pre08
).
mach.test()
to just check the return code of a commandlinux.F
,board.F
: Formatter with TBot supportmax
parameter forChannel.recv()
recv_n
method forChannel
to read exactly N bytesignore_hostkey
inSSHLabHost
console_check
hook to prevent racey board connections from multiple developersLinuxWithUBootMachine.do_boot
for a more flexibleboot_commands
definition
- Improved testrun end handling
- Made
SSHMachine
more userfriendly; now shows ssh errors in log - Made
shell
mandatory forBoardLinux
machines
shell.copy
sometimes not respectingignore_hostkey
flagshell.copy
relying on an ugly hack that breaks on some python versionsVerbosity
being in the wrong format in log events
- Selftest that fails intentionally
- Internal:
Board
no longer manages the boot-logevent as that breaks when no BoardMachine follows up
- HTMLLog generater producing bad HTML because of some log issues
- Password support in
shell.copy
- Recipes in documentation
Board.cleanup
,Channel.register_cleanup
, ability to register a hook for cleaning a channel. Might help if some lockfiles are kept when TBot just kills a connection.- Support for copying from
LocalLabHost()
toSSHLabHost()
and the other way around. GitRepository.symbolic_head
to get current branch name
GitRepository.bisect
now ensures that the good revision is actually good and the current revision is actually bad.
- Fix failures not leading to error return code
- Better error message if a board/lab was not found
- Stdout showing password prompt late
- Remove some escape sequences from log output to keep it tidy
- Reimplemented Logging. The following generators have been updated:
htmllog
junit
- Support for password authentication on SSH machines. I strongly reccomend not using this!
- Updated documentation
- Fixed pre-commit selftest hook creating log files
- Unnecessary files from pre 0.6 versions
verbosity
parameter forlog.message
ignore_hostkey
flag forSSHMachine
s
- More robust completions
- Program name in help and version message was wrong
- Better error messages when a testcase file can't be loaded
- Selftests failing because sshd host key changes
GitRepository
failing to reset in__init__
GitRepository.head
: Get the current position ofHEAD
GitRepository.bisect
: Bisect the git repo to find the commit which introduced a bug.- Show durations of testcase runs.
- Moved package metadata into
__about__.py
- Always show long version in documentation
shell.copy
can now copy from and to SSHMachines.
Version 0.6.0 is basically a complete rewrite of TBot. A rough summary of changes:
- Be as pythonic as possible, the old version had a big issue of non pythonic patterns making things that should be easy difficult.
- More static guarantees. New TBot can guarantee even more when checking your testcases with a static typechecker. A big new feature in that regard is static guarantee of never using a path with a wrong machine!
- Cleaner and much smaller codebase. Every piece of code is written as small and pythonic as possible which has made the codebase much more manageable.
- Speedups! New TBot can complete its selfchecks in under 1s. This is possible because of a new channel API that no longer uses sleep unless absolutely necessary.
- Much more stable and predictable. Even more care was taken in making TBot behave as predictable as possible and reducing side effects.
TestcaseFailure
&InvalidUsageException
exceptions
- Better error message when testcase does not exist
- More explicit exceptions
- Fixed TBot ignoring failures while applying patches (#13)
- Fixed -d not being allowed between board and testcase (#6)
uboot.shell.autboot-keys
: Custom key sequence for intercepting autoboot (#9)- Warning if an invalid testcase file is in the path (TBot no longer refuses to do anything, in this case)
- Made scp config settings consistent with ssh settings (#10)
- Fixed TBot still clogging the user's history with commands (#7)
- Fixed testcase files not being able to import local submodules
- Fixed TBot errors being shown when attempting testcase completion (#11)
- Comments in files generated by
tbot-mgr
to explain config options -s
,--show
command line option to get information about testcaseswarning
anderror
log message functions
- Removed
ssh_command
and addedssh_flags
instead. This allows TBot to have more control over ssh
- Fixed TBot hanging when SSH asks for a password
- Fixed git bisecting
tbot-mgr
: A script for managing TBot configs- Testcases for building Linux
interactive_build_uboot
andinteractive_build_linux
- Selftests are now run as a pre-commit hook
- A dummy lab and board for running selftests that are as generic as possible
linux.revision
anduboot.revision
config keys
- git testcases now have a
rev
parameter for checking out a specific revision
- DENX specific configs
- A crash while checking the config
- Buildhosts: This release adds the ability to build U-Boot/Linux on a separate machine. This will reduce load on your labhost if multiple people are using it
- You can now disable documentation for a testcase by passing
doc=False
totb.call
- Added
-i/--interactive
commandline flag that will make TBot wait for user confirmation for each command it wants to execute. Use this if you are unsure whether your testcase will do anything harmful, because you can intervene if a critical command has ie. wrong parameters - Added
retrieve_build_artifact
andtbot_clean_builddir
tasks - Added a new config key
build.local
that defines the buildhost that is the labhost itself - More tests in
check_config
- Better documentation
uboot_checkout
now checks out U-Boot onto the default buildhost by default- U-Boot is built on the buildhost by defalt, you need to use
retrieve_build_artifact
to copy binaries to the labhost - Renamed
tbot_check_config
tocheck_config
- Removed an unnecessary shell check from U-Boot tests
- Fixed TBot "leaking" from a with statement
- pre-commit hook config, run
pre-commit install
to use these hooks. - Checks for malformed commands (eg. running
exit
or a command that contains a\n
)
- Use flake8 instead of pylint
- Reformat using black
- Fix the config not being properly installed and thus TBot not working outside a development environment
- Small visual errors that were created when moving to the new logger
- New singleton logger
tbot.log
- Warning when trying to generate documentation from unsuccessful TBot runs
- The old logger was replaced by a new singleton implementation. This solves a few issues where the logger was not available when it should have been. Also, logging is a prime example for where to use a singleton. This will ensure that stdout is only used in one place and things don't get messy ...
- Old
tbot.logger
module and it'sLogEvent
's TBot.log
- U-Boot bootlog was not shown in very-verbose logging
- Documentation links not working properly
- The interactive shells were not properly handling the receival of multiple bytes at once, this is fixed now
- Path expansion in completions is now handled properly
- Commandline testcase parameters: You can now pass parameters
to testcases from the commandline using the
-p
or--param
commandline parameter - Completions for logfile
- More config documentation
shell_utils.command_and_retval
: Run a command on a channel and get it's return code
@cmdline
decorator. All testcases are now callable from the commandline, for some you will need to use the new-p
option to work properly
- Completions for
-c
were not always properly handled (=
messed with argument splitting)
- Disable writing to history when setting up a channel
- Implement cleanup in interactive testcases so user code can continue after finishing an interactive session
- Fix KeyErrors not displaying the full path to the failing key
- Use custom bash completions instead of argcomplete
- Make the HTMLLog generator use a template. Eases development and reduces clutter in the source file. Also, the html logs no longer depend on the existence of the css file
- Implement better quiet handling. Adjust the verbosity levels of some log messages to ensure they are displayed when they should be
- Fix testcase EXPORTS. Exports are now in a separate file that is loaded before everything else. This should fix some testcases not working because exports they depend on were loaded later
- Fix
call_then
not returning the function itself