test: run testcases with POSIX absolute paths on Windows
Some test cases are skipped on Windows by marking with POSIX prereq. This is because arguments look like absolute paths (such as /a/b) for regular Windows programs (*.exe executables, no bash scripts) are changed to Windows paths (like C:/msysgit/a/b). There is no cygpath nor equivalent on msysGit, but it is easy to write one. New subcommand "mingw_path" is added in test-path-utils, so that we can get the expected absolute paths on Windows. E.g. COMMAND LINE Linux output Windows output ================================== ============ =============== test-path-utils mingw_path / / C:/msysgit test-path-utils mingw_path /a/b/ /a/b/ C:/msysgit/a/b/ With this utility, most skipped test cases in t0060 can be turned on to be tested correctly on Windows. Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
db627fd568
commit
abd4284bc6
@ -8,13 +8,15 @@ test_description='Test various path utilities'
|
||||
. ./test-lib.sh
|
||||
|
||||
norm_path() {
|
||||
expected=$(test-path-utils mingw_path "$2")
|
||||
test_expect_success $3 "normalize path: $1 => $2" \
|
||||
"test \"\$(test-path-utils normalize_path_copy '$1')\" = '$2'"
|
||||
"test \"\$(test-path-utils normalize_path_copy '$1')\" = '$expected'"
|
||||
}
|
||||
|
||||
relative_path() {
|
||||
expected=$(test-path-utils mingw_path "$3")
|
||||
test_expect_success $4 "relative path: $1 $2 => $3" \
|
||||
"test \"\$(test-path-utils relative_path '$1' '$2')\" = '$3'"
|
||||
"test \"\$(test-path-utils relative_path '$1' '$2')\" = '$expected'"
|
||||
}
|
||||
|
||||
# On Windows, we are using MSYS's bash, which mangles the paths.
|
||||
@ -39,8 +41,8 @@ ancestor() {
|
||||
test \"\$actual\" = '$expected'"
|
||||
}
|
||||
|
||||
# Absolute path tests must be skipped on Windows because due to path mangling
|
||||
# the test program never sees a POSIX-style absolute path
|
||||
# Some absolute path tests should be skipped on Windows due to path mangling
|
||||
# on POSIX-style absolute paths
|
||||
case $(uname -s) in
|
||||
*MINGW*)
|
||||
;;
|
||||
@ -73,30 +75,30 @@ norm_path d1/s1//../s2/../../d2 d2
|
||||
norm_path d1/.../d2 d1/.../d2
|
||||
norm_path d1/..././../d2 d1/d2
|
||||
|
||||
norm_path / / POSIX
|
||||
norm_path / /
|
||||
norm_path // / POSIX
|
||||
norm_path /// / POSIX
|
||||
norm_path /. / POSIX
|
||||
norm_path /. /
|
||||
norm_path /./ / POSIX
|
||||
norm_path /./.. ++failed++ POSIX
|
||||
norm_path /../. ++failed++ POSIX
|
||||
norm_path /../. ++failed++
|
||||
norm_path /./../.// ++failed++ POSIX
|
||||
norm_path /dir/.. / POSIX
|
||||
norm_path /dir/sub/../.. / POSIX
|
||||
norm_path /dir/sub/../../.. ++failed++ POSIX
|
||||
norm_path /dir /dir POSIX
|
||||
norm_path /dir// /dir/ POSIX
|
||||
norm_path /./dir /dir POSIX
|
||||
norm_path /dir/. /dir/ POSIX
|
||||
norm_path /dir///./ /dir/ POSIX
|
||||
norm_path /dir//sub/.. /dir/ POSIX
|
||||
norm_path /dir/sub/../ /dir/ POSIX
|
||||
norm_path /dir /dir
|
||||
norm_path /dir// /dir/
|
||||
norm_path /./dir /dir
|
||||
norm_path /dir/. /dir/
|
||||
norm_path /dir///./ /dir/
|
||||
norm_path /dir//sub/.. /dir/
|
||||
norm_path /dir/sub/../ /dir/
|
||||
norm_path //dir/sub/../. /dir/ POSIX
|
||||
norm_path /dir/s1/../s2/ /dir/s2/ POSIX
|
||||
norm_path /d1/s1///s2/..//../s3/ /d1/s3/ POSIX
|
||||
norm_path /d1/s1//../s2/../../d2 /d2 POSIX
|
||||
norm_path /d1/.../d2 /d1/.../d2 POSIX
|
||||
norm_path /d1/..././../d2 /d1/d2 POSIX
|
||||
norm_path /dir/s1/../s2/ /dir/s2/
|
||||
norm_path /d1/s1///s2/..//../s3/ /d1/s3/
|
||||
norm_path /d1/s1//../s2/../../d2 /d2
|
||||
norm_path /d1/.../d2 /d1/.../d2
|
||||
norm_path /d1/..././../d2 /d1/d2
|
||||
|
||||
ancestor / / -1
|
||||
ancestor /foo / 0
|
||||
@ -198,8 +200,8 @@ relative_path / /a/b/ ../../
|
||||
relative_path /a/c /a/b/ ../c
|
||||
relative_path /a/c /a/b ../c
|
||||
relative_path /x/y /a/b/ ../../x/y
|
||||
relative_path /a/b "<empty>" /a/b POSIX
|
||||
relative_path /a/b "<null>" /a/b POSIX
|
||||
relative_path /a/b "<empty>" /a/b
|
||||
relative_path /a/b "<null>" /a/b
|
||||
relative_path a/b/c/ a/b/ c/
|
||||
relative_path a/b/c/ a/b c/
|
||||
relative_path a/b//c a//b c
|
||||
|
@ -116,6 +116,11 @@ int main(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc == 3 && !strcmp(argv[1], "mingw_path")) {
|
||||
puts(argv[2]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc == 4 && !strcmp(argv[1], "relative_path")) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
const char *in, *prefix, *rel;
|
||||
|
Loading…
Reference in New Issue
Block a user