Merge branch 'sg/test-atexit'
Test framework update to more robustly clean up leftover files and processes after tests are done. * sg/test-atexit: t9811-git-p4-label-import: fix pipeline negation git p4 test: disable '-x' tracing in the p4d watchdog loop git p4 test: simplify timeout handling git p4 test: clean up the p4d cleanup functions git p4 test: use 'test_atexit' to kill p4d and the watchdog process t0301-credential-cache: use 'test_atexit' to stop the credentials helper tests: use 'test_atexit' to stop httpd git-daemon: use 'test_atexit` to stop 'git-daemon' test-lib: introduce 'test_atexit' t/lib-git-daemon: make sure to kill the 'git-daemon' process test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
This commit is contained in:
@ -943,6 +943,34 @@ test_when_finished () {
|
||||
} && (exit \"\$eval_ret\"); eval_ret=\$?; $test_cleanup"
|
||||
}
|
||||
|
||||
# This function can be used to schedule some commands to be run
|
||||
# unconditionally at the end of the test script, e.g. to stop a daemon:
|
||||
#
|
||||
# test_expect_success 'test git daemon' '
|
||||
# git daemon &
|
||||
# daemon_pid=$! &&
|
||||
# test_atexit 'kill $daemon_pid' &&
|
||||
# hello world
|
||||
# '
|
||||
#
|
||||
# The commands will be executed before the trash directory is removed,
|
||||
# i.e. the atexit commands will still be able to access any pidfiles or
|
||||
# socket files.
|
||||
#
|
||||
# Note that these commands will be run even when a test script run
|
||||
# with '--immediate' fails. Be careful with your atexit commands to
|
||||
# minimize any changes to the failed state.
|
||||
|
||||
test_atexit () {
|
||||
# We cannot detect when we are in a subshell in general, but by
|
||||
# doing so on Bash is better than nothing (the test will
|
||||
# silently pass on other shells).
|
||||
test "${BASH_SUBSHELL-0}" = 0 ||
|
||||
error "bug in test script: test_atexit does nothing in a subshell"
|
||||
test_atexit_cleanup="{ $*
|
||||
} && (exit \"\$eval_ret\"); eval_ret=\$?; $test_atexit_cleanup"
|
||||
}
|
||||
|
||||
# Most tests can use the created repository, but some may need to create more.
|
||||
# Usage: test_create_repo <directory>
|
||||
test_create_repo () {
|
||||
|
||||
Reference in New Issue
Block a user