A later patch in this series will need to know the path to the trash
directory early in 'test-lib.sh', but $TRASH_DIRECTORY is set much
later.  Furthermore, the path to the trash directory depends on the
'--root=<path>' option, which, too, is parsed too late.

Move parsing '--root=...' to the early option parsing loop, and set
$TRASH_DIRECTORY where the other test-specific path variables are set.

Signed-off-by: SZEDER Gábor <szeder....@gmail.com>
---
 t/test-lib.sh | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 09c77cbd1b..ea1cd34013 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -85,6 +85,8 @@ do
                valgrind=${opt#--*=} ;;
        --valgrind-only=*)
                valgrind_only=${opt#--*=} ;;
+       --root=*)
+               root=${opt#--*=} ;;
        *)
                # Other options will be handled later.
        esac
@@ -93,6 +95,12 @@ done
 TEST_NAME="$(basename "$0" .sh)"
 TEST_RESULTS_DIR="$TEST_OUTPUT_DIRECTORY/test-results"
 TEST_RESULTS_BASE="$TEST_RESULTS_DIR/$TEST_NAME"
+TRASH_DIRECTORY="trash directory.$TEST_NAME"
+test -n "$root" && TRASH_DIRECTORY="$root/$TRASH_DIRECTORY"
+case "$TRASH_DIRECTORY" in
+/*) ;; # absolute path is good
+ *) TRASH_DIRECTORY="$TEST_OUTPUT_DIRECTORY/$TRASH_DIRECTORY" ;;
+esac
 
 # if --tee was passed, write the output not only to the terminal, but
 # additionally to the file test-results/$BASENAME.out, too.
@@ -318,9 +326,6 @@ do
                with_dashes=t; shift ;;
        --no-color)
                color=; shift ;;
-       --root=*)
-               root=${1#--*=}
-               shift ;;
        --chain-lint)
                GIT_TEST_CHAIN_LINT=1
                shift ;;
@@ -351,7 +356,8 @@ do
        -V|--verbose-log|\
        --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind|\
        --valgrind=*|\
-       --valgrind-only=*)
+       --valgrind-only=*|\
+       --root=*)
                shift ;; # These options were handled already.
        *)
                echo "error: unknown test option '$1'" >&2; exit 1 ;;
@@ -1040,12 +1046,6 @@ then
 fi
 
 # Test repository
-TRASH_DIRECTORY="trash directory.$TEST_NAME"
-test -n "$root" && TRASH_DIRECTORY="$root/$TRASH_DIRECTORY"
-case "$TRASH_DIRECTORY" in
-/*) ;; # absolute path is good
- *) TRASH_DIRECTORY="$TEST_OUTPUT_DIRECTORY/$TRASH_DIRECTORY" ;;
-esac
 rm -fr "$TRASH_DIRECTORY" || {
        GIT_EXIT_OK=t
        echo >&5 "FATAL: Cannot prepare test area"
-- 
2.20.0.rc2.156.g5a9fd2ce9c

Reply via email to