Skip to content

Commit 77b63ac

Browse files
j6tgitster
authored andcommitted
t0060: sidestep surprising path mangling results on Windows
When an MSYS program (such as the bash that drives the test suite) invokes git on Windows, absolute Unix style paths are transformed into Windows native absolute paths (drive letter form). However, this transformation also includes some simplifications that are not just straight-forward textual substitutions: - When the path ends in "/.", then the dot is stripped, but not the directory separator. - When the path contains "..", then it is optimized away if possible, e.g., "/c/dir/foo/../bar" becomes "c:/dir/bar". These additional transformations violate the assumptions of some submodule path tests. We can avoid them when the input is already a Windows native path, because then MSYS leaves the path unmolested. Convert the uses of $PWD to $(pwd); the latter returns a native Windows path. Signed-off-by: Johannes Sixt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3389e78 commit 77b63ac

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

t/t0060-path-utils.sh

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -305,16 +305,17 @@ test_git_path GIT_COMMON_DIR=bar config bar/config
305305
test_git_path GIT_COMMON_DIR=bar packed-refs bar/packed-refs
306306
test_git_path GIT_COMMON_DIR=bar shallow bar/shallow
307307

308-
# In the tests below, the distinction between $PWD and $(pwd) is important:
309-
# on Windows, $PWD is POSIX style (/c/foo), $(pwd) has drive letter (c:/foo).
308+
# In the tests below, $(pwd) must be used because it is a native path on
309+
# Windows and avoids MSYS's path mangling (which simplifies "foo/../bar" and
310+
# strips the dot from trailing "/.").
310311

311312
test_submodule_relative_url "../" "../foo" "../submodule" "../../submodule"
312313
test_submodule_relative_url "../" "../foo/bar" "../submodule" "../../foo/submodule"
313314
test_submodule_relative_url "../" "../foo/submodule" "../submodule" "../../foo/submodule"
314315
test_submodule_relative_url "../" "./foo" "../submodule" "../submodule"
315316
test_submodule_relative_url "../" "./foo/bar" "../submodule" "../foo/submodule"
316317
test_submodule_relative_url "../../../" "../foo/bar" "../sub/a/b/c" "../../../../foo/sub/a/b/c"
317-
test_submodule_relative_url "../" "$PWD/addtest" "../repo" "$(pwd)/repo"
318+
test_submodule_relative_url "../" "$(pwd)/addtest" "../repo" "$(pwd)/repo"
318319
test_submodule_relative_url "../" "foo/bar" "../submodule" "../foo/submodule"
319320
test_submodule_relative_url "../" "foo" "../submodule" "../submodule"
320321

@@ -327,16 +328,16 @@ test_submodule_relative_url "(null)" "../foo" "../submodule" "../submodule"
327328
test_submodule_relative_url "(null)" "./foo/bar" "../submodule" "foo/submodule"
328329
test_submodule_relative_url "(null)" "./foo" "../submodule" "submodule"
329330
test_submodule_relative_url "(null)" "//somewhere else/repo" "../subrepo" "//somewhere else/subrepo"
330-
test_submodule_relative_url "(null)" "$PWD/subsuper_update_r" "../subsubsuper_update_r" "$(pwd)/subsubsuper_update_r"
331-
test_submodule_relative_url "(null)" "$PWD/super_update_r2" "../subsuper_update_r" "$(pwd)/subsuper_update_r"
332-
test_submodule_relative_url "(null)" "$PWD/." "../." "$(pwd)/."
333-
test_submodule_relative_url "(null)" "$PWD" "./." "$(pwd)/."
334-
test_submodule_relative_url "(null)" "$PWD/addtest" "../repo" "$(pwd)/repo"
335-
test_submodule_relative_url "(null)" "$PWD" "./å äö" "$(pwd)/å äö"
336-
test_submodule_relative_url "(null)" "$PWD/." "../submodule" "$(pwd)/submodule"
337-
test_submodule_relative_url "(null)" "$PWD/submodule" "../submodule" "$(pwd)/submodule"
338-
test_submodule_relative_url "(null)" "$PWD/home2/../remote" "../bundle1" "$(pwd)/home2/../bundle1"
339-
test_submodule_relative_url "(null)" "$PWD/submodule_update_repo" "./." "$(pwd)/submodule_update_repo/."
331+
test_submodule_relative_url "(null)" "$(pwd)/subsuper_update_r" "../subsubsuper_update_r" "$(pwd)/subsubsuper_update_r"
332+
test_submodule_relative_url "(null)" "$(pwd)/super_update_r2" "../subsuper_update_r" "$(pwd)/subsuper_update_r"
333+
test_submodule_relative_url "(null)" "$(pwd)/." "../." "$(pwd)/."
334+
test_submodule_relative_url "(null)" "$(pwd)" "./." "$(pwd)/."
335+
test_submodule_relative_url "(null)" "$(pwd)/addtest" "../repo" "$(pwd)/repo"
336+
test_submodule_relative_url "(null)" "$(pwd)" "./å äö" "$(pwd)/å äö"
337+
test_submodule_relative_url "(null)" "$(pwd)/." "../submodule" "$(pwd)/submodule"
338+
test_submodule_relative_url "(null)" "$(pwd)/submodule" "../submodule" "$(pwd)/submodule"
339+
test_submodule_relative_url "(null)" "$(pwd)/home2/../remote" "../bundle1" "$(pwd)/home2/../bundle1"
340+
test_submodule_relative_url "(null)" "$(pwd)/submodule_update_repo" "./." "$(pwd)/submodule_update_repo/."
340341
test_submodule_relative_url "(null)" "file:///tmp/repo" "../subrepo" "file:///tmp/subrepo"
341342
test_submodule_relative_url "(null)" "foo/bar" "../submodule" "foo/submodule"
342343
test_submodule_relative_url "(null)" "foo" "../submodule" "submodule"

0 commit comments

Comments
 (0)