while true; do
case "$1" in
--unbuffered)
- UNBUFFERED=1
+ if type stdbuf >/dev/null 2>&1; then
+ UNBUFFERED=1
+ fi
shift;;
--)
shift
esac
done
- declare -a args
-
#
# ASAN mode
#
if [ "$TS_ENABLE_ASAN" == "yes" ]; then
- args+=(ASAN_OPTIONS='detect_leaks=1')
- fi
-
- #
- # Disable buffering of stdout
- #
- if [ -n "$UNBUFFERED" ]; then
- if type stdbuf >/dev/null 2>&1; then
- args+=(stdbuf --output=0)
+ if [ -n "$UNBUFFERED" ]; then
+ ASAN_OPTIONS='detect_leaks=1' unbuffer "$@"
+ else
+ ASAN_OPTIONS='detect_leaks=1' "$@"
fi
- fi
#
# valgrind mode
#
- if [ -n "$TS_VALGRIND_CMD" ]; then
- args+=(libtool --mode=execute "$TS_VALGRIND_CMD" --tool=memcheck --leak-check=full)
- args+=(--leak-resolution=high --num-callers=20 --log-file="$TS_VGDUMP")
+ elif [ -n "$TS_VALGRIND_CMD" ]; then
+ libtool --mode=execute \
+ $TS_VALGRIND_CMD --tool=memcheck --leak-check=full \
+ --leak-resolution=high --num-callers=20 \
+ --log-file="$TS_VGDUMP" "$@"
+ #
+ # default mode
+ #
+ else
+ if [ -n "$UNBUFFERED" ]; then
+ unbuffer "$@"
+ else
+ "$@"
+ fi
fi
-
- "${args[@]}" "$@"
}
function ts_gen_diff {
ts_check_test_command "$TESTPROG"
ts_check_test_command "$TS_CMD_SFDISK"
ts_check_test_command "$TS_CMD_WIPEFS"
+ts_check_prog unbuffer
TEST_IMAGE_NAME=$(ts_image_init 15)
ts_check_test_command "$TS_CMD_MKSWAP"
ts_check_test_command "$TS_CMD_SWAPLABEL"
ts_check_test_command "$TS_HELPER_SYSINFO"
+ts_check_prog unbuffer
# fallocate does not work on most file systems
function fallocate_or_skip()