test-lib.sh sometimes did equivalent of `basename "$0" .sh`, sometimes skipping the basename part and sometimes .sh part. This worked as we never had path components in $0 (more than ./) nor .sh ending. Now the equivalent of `basename "$0" .sh` is done once and used everywhere. In the future we may have .sh suffix in test names -- removing those is a good idea. --- test/test-lib.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/test-lib.sh b/test/test-lib.sh index 8611ba5..6e47545 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -23,19 +23,22 @@ if [ ${BASH_VERSINFO[0]} -lt 4 ]; then fi # Make sure echo builtin does not expand backslash-escape sequences by default. shopt -u xpg_echo +this_test=${0##*/} +this_test=${this_test%.sh} + # if --tee was passed, write the output not only to the terminal, but # additionally to the file test-results/$BASENAME.out, too. case "$GIT_TEST_TEE_STARTED, $* " in done,*) # do not redirect again ;; *' --tee '*|*' --va'*) mkdir -p test-results - BASE=test-results/$(basename "$0" .sh) + BASE=test-results/$this_test (GIT_TEST_TEE_STARTED=done ${SHELL-sh} "$0" "$@" 2>&1; echo $? > $BASE.exit) | tee $BASE.out test "$(cat $BASE.exit)" = 0 exit ;; @@ -185,11 +188,11 @@ if test "$help" = "t" then echo "Tests ${test_description}" exit 0 fi -echo $(basename "$0"): "Testing ${test_description}" +echo $this_test: "Testing ${test_description}" exec 5>&1 test_failure=0 test_count=0 @@ -965,11 +968,11 @@ test_when_finished () { test_done () { GIT_EXIT_OK=t test_results_dir="$TEST_DIRECTORY/test-results" mkdir -p "$test_results_dir" - test_results_path="$test_results_dir/${0%.sh}" + test_results_path="$test_results_dir/$this_test" echo "total $test_count" >> $test_results_path echo "success $test_success" >> $test_results_path echo "fixed $test_fixed" >> $test_results_path echo "broken $test_broken" >> $test_results_path @@ -1024,11 +1027,11 @@ test_emacs () { test_require_external_prereq emacs || missing_dependencies=1 test_require_external_prereq ${TEST_EMACSCLIENT} || missing_dependencies=1 test -z "$missing_dependencies" || return if [ -z "$EMACS_SERVER" ]; then - emacs_tests="$(basename $0).el" + emacs_tests="${this_test}.el" if [ -f "$TEST_DIRECTORY/$emacs_tests" ]; then load_emacs_tests="--eval '(load \"$emacs_tests\")'" else load_emacs_tests= fi @@ -1138,11 +1141,10 @@ then exec 4>&2 3>&1 else exec 4>test.output 3>&4 fi -this_test=${0##*/} for skp in $NOTMUCH_SKIP_TESTS do to_skip= for skp in $NOTMUCH_SKIP_TESTS do -- 1.8.4.2