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 <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Sixt committed Oct 18, 2016 at 22:06 UTC 77b63ac31e5e1a67a34cfb7567ca1673a596be71
1 file changed +14 -13
t/t0060-path-utils.sh
+14 -13
@@ -305,8 +305,9 @@ test_git_path GIT_COMMON_DIR=bar config bar/config
305 test_git_path GIT_COMMON_DIR=bar packed-refs bar/packed-refs
306 test_git_path GIT_COMMON_DIR=bar shallow bar/shallow
307
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 "/.").
311
312 test_submodule_relative_url "../" "../foo" "../submodule" "../../submodule"
313 test_submodule_relative_url "../" "../foo/bar" "../submodule" "../../foo/submodule"
@@ -314,7 +315,7 @@ test_submodule_relative_url "../" "../foo/submodule" "../submodule" "../../foo/s
315 test_submodule_relative_url "../" "./foo" "../submodule" "../submodule"
316 test_submodule_relative_url "../" "./foo/bar" "../submodule" "../foo/submodule"
317 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"
319 test_submodule_relative_url "../" "foo/bar" "../submodule" "../foo/submodule"
320 test_submodule_relative_url "../" "foo" "../submodule" "../submodule"
321
@@ -327,16 +328,16 @@ test_submodule_relative_url "(null)" "../foo" "../submodule" "../submodule"
328 test_submodule_relative_url "(null)" "./foo/bar" "../submodule" "foo/submodule"
329 test_submodule_relative_url "(null)" "./foo" "../submodule" "submodule"
330 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/."
341 test_submodule_relative_url "(null)" "file:///tmp/repo" "../subrepo" "file:///tmp/subrepo"
342 test_submodule_relative_url "(null)" "foo/bar" "../submodule" "foo/submodule"
343 test_submodule_relative_url "(null)" "foo" "../submodule" "submodule"