Skip to content

Commit b54cc08

Browse files
committed
tests: use the correct path separator with BusyBox
BusyBox-w32 is a true Win32 application, i.e. it does not come with a POSIX emulation layer. That also means that it does *not* use the Unix convention of separating the entries in the PATH variable using colons, but semicolons. However, there are also BusyBox ports to Windows which use a POSIX emulation layer such as Cygwin's or MSYS2's runtime, i.e. using colons as PATH separators. As a tell-tale, let's use the presence of semicolons in the PATH variable: on Unix, it is highly unlikely that it contains semicolons, and on Windows (without POSIX emulation), it is virtually guaranteed, as everybody should have both $SYSTEMROOT and $SYSTEMROOT/system32 in their PATH. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent fd54f7d commit b54cc08

18 files changed

+57
-44
lines changed

t/interop/interop-lib.sh

+6-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
. ../../GIT-BUILD-OPTIONS
55
INTEROP_ROOT=$(pwd)
66
BUILD_ROOT=$INTEROP_ROOT/build
7+
case "$PATH" in
8+
*\;*) PATH_SEP=\; ;;
9+
*) PATH_SEP=: ;;
10+
esac
711

812
build_version () {
913
if test -z "$1"
@@ -57,7 +61,7 @@ wrap_git () {
5761
write_script "$1" <<-EOF
5862
GIT_EXEC_PATH="$2"
5963
export GIT_EXEC_PATH
60-
PATH="$2:\$PATH"
64+
PATH="$2$PATH_SEP\$PATH"
6165
export GIT_EXEC_PATH
6266
exec git "\$@"
6367
EOF
@@ -71,7 +75,7 @@ generate_wrappers () {
7175
echo >&2 fatal: test tried to run generic git
7276
exit 1
7377
EOF
74-
PATH=$(pwd)/.bin:$PATH
78+
PATH=$(pwd)/.bin$PATH_SEP$PATH
7579
}
7680

7781
VERSION_A=${GIT_TEST_VERSION_A:-$VERSION_A}

t/lib-proto-disable.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ setup_ext_wrapper () {
214214
cd "$TRASH_DIRECTORY/remote" &&
215215
eval "$*"
216216
EOF
217-
PATH=$TRASH_DIRECTORY:$PATH &&
217+
PATH=$TRASH_DIRECTORY$PATH_SEP$PATH &&
218218
export TRASH_DIRECTORY
219219
'
220220
}

t/t0021-conversion.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
99
. "$TEST_DIRECTORY"/lib-terminal.sh
1010

1111
TEST_ROOT="$PWD"
12-
PATH=$TEST_ROOT:$PATH
12+
PATH=$TEST_ROOT$PATH_SEP$PATH
1313

1414
write_script <<\EOF "$TEST_ROOT/rot13.sh"
1515
tr \

t/t0060-path-utils.sh

+12-12
Original file line numberDiff line numberDiff line change
@@ -139,25 +139,25 @@ ancestor /foo /fo -1
139139
ancestor /foo /foo -1
140140
ancestor /foo /bar -1
141141
ancestor /foo /foo/bar -1
142-
ancestor /foo /foo:/bar -1
143-
ancestor /foo /:/foo:/bar 0
144-
ancestor /foo /foo:/:/bar 0
145-
ancestor /foo /:/bar:/foo 0
142+
ancestor /foo "/foo$PATH_SEP/bar" -1
143+
ancestor /foo "/$PATH_SEP/foo$PATH_SEP/bar" 0
144+
ancestor /foo "/foo$PATH_SEP/$PATH_SEP/bar" 0
145+
ancestor /foo "/$PATH_SEP/bar$PATH_SEP/foo" 0
146146
ancestor /foo/bar / 0
147147
ancestor /foo/bar /fo -1
148148
ancestor /foo/bar /foo 4
149149
ancestor /foo/bar /foo/ba -1
150-
ancestor /foo/bar /:/fo 0
151-
ancestor /foo/bar /foo:/foo/ba 4
150+
ancestor /foo/bar "/$PATH_SEP/fo" 0
151+
ancestor /foo/bar "/foo$PATH_SEP/foo/ba" 4
152152
ancestor /foo/bar /bar -1
153153
ancestor /foo/bar /fo -1
154-
ancestor /foo/bar /foo:/bar 4
155-
ancestor /foo/bar /:/foo:/bar 4
156-
ancestor /foo/bar /foo:/:/bar 4
157-
ancestor /foo/bar /:/bar:/fo 0
158-
ancestor /foo/bar /:/bar 0
154+
ancestor /foo/bar "/foo$PATH_SEP/bar" 4
155+
ancestor /foo/bar "/$PATH_SEP/foo$PATH_SEP/bar" 4
156+
ancestor /foo/bar "/foo$PATH_SEP/$PATH_SEP/bar" 4
157+
ancestor /foo/bar "/$PATH_SEP/bar$PATH_SEP/fo" 0
158+
ancestor /foo/bar "/$PATH_SEP/bar" 0
159159
ancestor /foo/bar /foo 4
160-
ancestor /foo/bar /foo:/bar 4
160+
ancestor /foo/bar "/foo$PATH_SEP/bar" 4
161161
ancestor /foo/bar /bar -1
162162

163163
# Windows-specific: DOS drives, network shares

t/t0061-run-command.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ test_expect_success 'run_command does not try to execute a directory' '
7070
cat bin2/greet
7171
EOF
7272
73-
PATH=$PWD/bin1:$PWD/bin2:$PATH \
73+
PATH=$PWD/bin1$PATH_SEP$PWD/bin2$PATH_SEP$PATH \
7474
test-tool run-command run-command greet >actual 2>err &&
7575
test_cmp bin2/greet actual &&
7676
test_must_be_empty err
@@ -87,7 +87,7 @@ test_expect_success POSIXPERM 'run_command passes over non-executable file' '
8787
cat bin2/greet
8888
EOF
8989
90-
PATH=$PWD/bin1:$PWD/bin2:$PATH \
90+
PATH=$PWD/bin1$PATH_SEP$PWD/bin2$PATH_SEP$PATH \
9191
test-tool run-command run-command greet >actual 2>err &&
9292
test_cmp bin2/greet actual &&
9393
test_must_be_empty err
@@ -107,7 +107,7 @@ test_expect_success POSIXPERM,SANITY 'unreadable directory in PATH' '
107107
git config alias.nitfol "!echo frotz" &&
108108
chmod a-rx local-command &&
109109
(
110-
PATH=./local-command:$PATH &&
110+
PATH=./local-command$PATH_SEP$PATH &&
111111
git nitfol >actual
112112
) &&
113113
echo frotz >expect &&

t/t0300-credentials.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ test_expect_success 'setup helper scripts' '
3535
test -z "$pass" || echo password=$pass
3636
EOF
3737
38-
PATH="$PWD:$PATH"
38+
PATH="$PWD$PATH_SEP$PATH"
3939
'
4040

4141
test_expect_success 'credential_fill invokes helper' '

t/t1504-ceiling-dirs.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ then
8181
GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/"
8282
test_fail subdir_ceil_at_top_slash
8383

84-
GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top"
84+
GIT_CEILING_DIRECTORIES="$PATH_SEP$TRASH_ROOT/top"
8585
test_prefix subdir_ceil_at_top_no_resolve "sub/dir/"
86-
GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/"
86+
GIT_CEILING_DIRECTORIES="$PATH_SEP$TRASH_ROOT/top/"
8787
test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/"
8888
fi
8989

@@ -113,13 +113,13 @@ GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi"
113113
test_prefix subdir_ceil_at_subdi_slash "sub/dir/"
114114

115115

116-
GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub"
116+
GIT_CEILING_DIRECTORIES="/foo$PATH_SEP$TRASH_ROOT/sub"
117117
test_fail second_of_two
118118

119-
GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub:/bar"
119+
GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub$PATH_SEP/bar"
120120
test_fail first_of_two
121121

122-
GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub:/bar"
122+
GIT_CEILING_DIRECTORIES="/foo$PATH_SEP$TRASH_ROOT/sub$PATH_SEP/bar"
123123
test_fail second_of_three
124124

125125

t/t2300-cd-to-toplevel.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ test_cd_to_toplevel () {
1717
test_expect_success $3 "$2" '
1818
(
1919
cd '"'$1'"' &&
20-
PATH="$EXEC_PATH:$PATH" &&
20+
PATH="$EXEC_PATH$PATH_SEP$PATH" &&
2121
. git-sh-setup &&
2222
cd_to_toplevel &&
2323
[ "$(pwd -P)" = "$TOPLEVEL" ]

t/t3402-rebase-merge.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ test_expect_success 'rebase -s funny -Xopt' '
146146
git checkout -b test-funny main^ &&
147147
test_commit funny &&
148148
(
149-
PATH=./test-bin:$PATH &&
149+
PATH=./test-bin$PATH_SEP$PATH &&
150150
git rebase -s funny -Xopt main
151151
) &&
152152
test -f funny.was.run

t/t3418-rebase-continue.sh

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ test_expect_success 'rebase --continue remembers merge strategy and options' '
7373
EOF
7474
chmod +x test-bin/git-merge-funny &&
7575
(
76-
PATH=./test-bin:$PATH &&
76+
PATH=./test-bin$PATH_SEP$PATH &&
7777
test_must_fail git rebase -s funny -Xopt main topic
7878
) &&
7979
test -f funny.was.run &&
8080
rm funny.was.run &&
8181
echo "Resolved" >F2 &&
8282
git add F2 &&
8383
(
84-
PATH=./test-bin:$PATH &&
84+
PATH=./test-bin$PATH_SEP$PATH &&
8585
git rebase --continue
8686
) &&
8787
test -f funny.was.run
@@ -105,15 +105,15 @@ test_expect_success 'rebase -i --continue handles merge strategy and options' '
105105
EOF
106106
chmod +x test-bin/git-merge-funny &&
107107
(
108-
PATH=./test-bin:$PATH &&
108+
PATH=./test-bin$PATH_SEP$PATH &&
109109
test_must_fail git rebase -i -s funny -Xopt -Xfoo main topic
110110
) &&
111111
test -f funny.was.run &&
112112
rm funny.was.run &&
113113
echo "Resolved" >F2 &&
114114
git add F2 &&
115115
(
116-
PATH=./test-bin:$PATH &&
116+
PATH=./test-bin$PATH_SEP$PATH &&
117117
git rebase --continue
118118
) &&
119119
test -f funny.was.run

t/t5615-alternate-env.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ test_expect_success 'access alternate via absolute path' '
4040
'
4141

4242
test_expect_success 'access multiple alternates' '
43-
check_obj "$PWD/one.git/objects:$PWD/two.git/objects" <<-EOF
43+
check_obj "$PWD/one.git/objects$PATH_SEP$PWD/two.git/objects" <<-EOF
4444
$one blob
4545
$two blob
4646
EOF
@@ -76,7 +76,7 @@ test_expect_success 'access alternate via relative path (subdir)' '
7676
quoted='"one.git\057objects"'
7777
unquoted='two.git/objects'
7878
test_expect_success 'mix of quoted and unquoted alternates' '
79-
check_obj "$quoted:$unquoted" <<-EOF
79+
check_obj "$quoted$PATH_SEP$unquoted" <<-EOF
8080
$one blob
8181
$two blob
8282
EOF

t/t5802-connect-helper.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ test_expect_success 'set up fake git-daemon' '
8585
"$TRASH_DIRECTORY/remote"
8686
EOF
8787
export TRASH_DIRECTORY &&
88-
PATH=$TRASH_DIRECTORY:$PATH
88+
PATH=$TRASH_DIRECTORY$PATH_SEP$PATH
8989
'
9090

9191
test_expect_success 'ext command can connect to git daemon (no vhost)' '

t/t7006-pager.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ test_expect_success !MINGW,TTY 'LESS and LV envvars set by git-sh-setup' '
5454
sane_unset LESS LV &&
5555
PAGER="env >pager-env.out; wc" &&
5656
export PAGER &&
57-
PATH="$(git --exec-path):$PATH" &&
57+
PATH="$(git --exec-path)$PATH_SEP$PATH" &&
5858
export PATH &&
5959
test_terminal sh -c ". git-sh-setup && git_pager"
6060
) &&
@@ -388,7 +388,7 @@ test_default_pager() {
388388
EOF
389389
chmod +x \$less &&
390390
(
391-
PATH=.:\$PATH &&
391+
PATH=.$PATH_SEP\$PATH &&
392392
export PATH &&
393393
$full_command
394394
) &&

t/t7606-merge-custom.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ test_expect_success 'set up custom strategy' '
2323
EOF
2424
2525
chmod +x git-merge-theirs &&
26-
PATH=.:$PATH &&
26+
PATH=.$PATH_SEP$PATH &&
2727
export PATH
2828
'
2929

t/t7811-grep-open.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ test_expect_success SIMPLEPAGER 'git grep -O' '
5353
EOF
5454
echo grep.h >expect.notless &&
5555
56-
PATH=.:$PATH git grep -O GREP_PATTERN >out &&
56+
PATH=.$PATH_SEP$PATH git grep -O GREP_PATTERN >out &&
5757
{
5858
test_cmp expect.less pager-args ||
5959
test_cmp expect.notless pager-args

t/t9003-help-autocorrect.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ test_expect_success 'setup' '
1212
echo distimdistim was called
1313
EOF
1414
15-
PATH="$PATH:." &&
15+
PATH="$PATH$PATH_SEP." &&
1616
export PATH &&
1717
1818
git commit --allow-empty -m "a single log entry" &&

t/t9800-git-p4-basic.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ test_expect_success 'exit when p4 fails to produce marshaled output' '
286286
EOF
287287
chmod 755 badp4dir/p4 &&
288288
(
289-
PATH="$TRASH_DIRECTORY/badp4dir:$PATH" &&
289+
PATH="$TRASH_DIRECTORY/badp4dir$PATH_SEP$PATH" &&
290290
export PATH &&
291291
test_expect_code 1 git p4 clone --dest="$git" //depot >errs 2>&1
292292
) &&

t/test-lib.sh

+13-4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@
1515
# You should have received a copy of the GNU General Public License
1616
# along with this program. If not, see http://www.gnu.org/licenses/ .
1717

18+
# On Unix/Linux, the path separator is the colon, on other systems it
19+
# may be different, though. On Windows, for example, it is a semicolon.
20+
# If the PATH variable contains semicolons, it is pretty safe to assume
21+
# that the path separator is a semicolon.
22+
case "$PATH" in
23+
*\;*) PATH_SEP=\; ;;
24+
*) PATH_SEP=: ;;
25+
esac
26+
1827
# Test the binaries we have just built. The tests are kept in
1928
# t/ subdirectory and are run in 'trash directory' subdirectory.
2029
if test -z "$TEST_DIRECTORY"
@@ -1454,7 +1463,7 @@ then
14541463
done
14551464
done
14561465
IFS=$OLDIFS
1457-
PATH=$GIT_VALGRIND/bin:$PATH
1466+
PATH=$GIT_VALGRIND/bin$PATH_SEP$PATH
14581467
GIT_EXEC_PATH=$GIT_VALGRIND/bin
14591468
export GIT_VALGRIND
14601469
GIT_VALGRIND_MODE="$valgrind"
@@ -1466,7 +1475,7 @@ elif test -n "$GIT_TEST_INSTALLED"
14661475
then
14671476
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
14681477
error "Cannot run git from $GIT_TEST_INSTALLED."
1469-
PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR/t/helper:$PATH
1478+
PATH=$GIT_TEST_INSTALLED$PATH_SEP$GIT_BUILD_DIR/t/helper$PATH_SEP$PATH
14701479
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
14711480
else # normal case, use ../bin-wrappers only unless $with_dashes:
14721481
if test -n "$no_bin_wrappers"
@@ -1482,12 +1491,12 @@ else # normal case, use ../bin-wrappers only unless $with_dashes:
14821491
fi
14831492
with_dashes=t
14841493
fi
1485-
PATH="$git_bin_dir:$PATH"
1494+
PATH="$git_bin_dir$PATH_SEP$PATH"
14861495
fi
14871496
GIT_EXEC_PATH=$GIT_BUILD_DIR
14881497
if test -n "$with_dashes"
14891498
then
1490-
PATH="$GIT_BUILD_DIR:$GIT_BUILD_DIR/t/helper:$PATH"
1499+
PATH="$GIT_BUILD_DIR$PATH_SEP$GIT_BUILD_DIR/t/helper$PATH_SEP$PATH"
14911500
fi
14921501
fi
14931502
GIT_TEMPLATE_DIR="$GIT_BUILD_DIR"/templates/blt

0 commit comments

Comments
 (0)