]>
Commit | Line | Data |
---|---|---|
ae299be0 DR |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2008 David Reiss | |
4 | # | |
5 | ||
6 | test_description='Test various path utilities' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
2718e852 JS |
10 | norm_path() { |
11 | test_expect_success $3 "normalize path: $1 => $2" \ | |
f42302b4 | 12 | "test \"\$(test-path-utils normalize_path_copy '$1')\" = '$2'" |
ae299be0 DR |
13 | } |
14 | ||
2718e852 JS |
15 | # On Windows, we are using MSYS's bash, which mangles the paths. |
16 | # Absolute paths are anchored at the MSYS installation directory, | |
17 | # which means that the path / accounts for this many characters: | |
18 | rootoff=$(test-path-utils normalize_path_copy / | wc -c) | |
19 | # Account for the trailing LF: | |
28baf82e | 20 | if test $rootoff = 2; then |
2718e852 JS |
21 | rootoff= # we are on Unix |
22 | else | |
23 | rootoff=$(($rootoff-1)) | |
24 | fi | |
25 | ||
0454dd93 | 26 | ancestor() { |
2718e852 JS |
27 | # We do some math with the expected ancestor length. |
28 | expected=$3 | |
29 | if test -n "$rootoff" && test "x$expected" != x-1; then | |
30 | expected=$(($expected+$rootoff)) | |
31 | fi | |
32 | test_expect_success "longest ancestor: $1 $2 => $expected" \ | |
33 | "actual=\$(test-path-utils longest_ancestor_length '$1' '$2') && | |
34 | test \"\$actual\" = '$expected'" | |
0454dd93 DR |
35 | } |
36 | ||
2718e852 JS |
37 | # Absolute path tests must be skipped on Windows because due to path mangling |
38 | # the test program never sees a POSIX-style absolute path | |
39 | case $(uname -s) in | |
40 | *MINGW*) | |
41 | ;; | |
42 | *) | |
43 | test_set_prereq POSIX | |
44 | ;; | |
45 | esac | |
46 | ||
47 | norm_path "" "" | |
48 | norm_path . "" | |
49 | norm_path ./ "" | |
50 | norm_path ./. "" | |
51 | norm_path ./.. ++failed++ | |
52 | norm_path ../. ++failed++ | |
53 | norm_path ./../.// ++failed++ | |
54 | norm_path dir/.. "" | |
55 | norm_path dir/sub/../.. "" | |
56 | norm_path dir/sub/../../.. ++failed++ | |
57 | norm_path dir dir | |
58 | norm_path dir// dir/ | |
59 | norm_path ./dir dir | |
60 | norm_path dir/. dir/ | |
61 | norm_path dir///./ dir/ | |
62 | norm_path dir//sub/.. dir/ | |
63 | norm_path dir/sub/../ dir/ | |
64 | norm_path dir/sub/../. dir/ | |
65 | norm_path dir/s1/../s2/ dir/s2/ | |
66 | norm_path d1/s1///s2/..//../s3/ d1/s3/ | |
67 | norm_path d1/s1//../s2/../../d2 d2 | |
68 | norm_path d1/.../d2 d1/.../d2 | |
69 | norm_path d1/..././../d2 d1/d2 | |
70 | ||
71 | norm_path / / POSIX | |
72 | norm_path // / POSIX | |
73 | norm_path /// / POSIX | |
74 | norm_path /. / POSIX | |
75 | norm_path /./ / POSIX | |
76 | norm_path /./.. ++failed++ POSIX | |
77 | norm_path /../. ++failed++ POSIX | |
78 | norm_path /./../.// ++failed++ POSIX | |
79 | norm_path /dir/.. / POSIX | |
80 | norm_path /dir/sub/../.. / POSIX | |
81 | norm_path /dir/sub/../../.. ++failed++ POSIX | |
82 | norm_path /dir /dir POSIX | |
83 | norm_path /dir// /dir/ POSIX | |
84 | norm_path /./dir /dir POSIX | |
85 | norm_path /dir/. /dir/ POSIX | |
86 | norm_path /dir///./ /dir/ POSIX | |
87 | norm_path /dir//sub/.. /dir/ POSIX | |
88 | norm_path /dir/sub/../ /dir/ POSIX | |
89 | norm_path //dir/sub/../. /dir/ POSIX | |
90 | norm_path /dir/s1/../s2/ /dir/s2/ POSIX | |
91 | norm_path /d1/s1///s2/..//../s3/ /d1/s3/ POSIX | |
92 | norm_path /d1/s1//../s2/../../d2 /d2 POSIX | |
93 | norm_path /d1/.../d2 /d1/.../d2 POSIX | |
94 | norm_path /d1/..././../d2 /d1/d2 POSIX | |
ae299be0 | 95 | |
0454dd93 DR |
96 | ancestor / "" -1 |
97 | ancestor / / -1 | |
98 | ancestor /foo "" -1 | |
99 | ancestor /foo : -1 | |
100 | ancestor /foo ::. -1 | |
101 | ancestor /foo ::..:: -1 | |
102 | ancestor /foo / 0 | |
103 | ancestor /foo /fo -1 | |
104 | ancestor /foo /foo -1 | |
105 | ancestor /foo /foo/ -1 | |
106 | ancestor /foo /bar -1 | |
107 | ancestor /foo /bar/ -1 | |
108 | ancestor /foo /foo/bar -1 | |
109 | ancestor /foo /foo:/bar/ -1 | |
110 | ancestor /foo /foo/:/bar/ -1 | |
111 | ancestor /foo /foo::/bar/ -1 | |
112 | ancestor /foo /:/foo:/bar/ 0 | |
113 | ancestor /foo /foo:/:/bar/ 0 | |
114 | ancestor /foo /:/bar/:/foo 0 | |
115 | ancestor /foo/bar "" -1 | |
116 | ancestor /foo/bar / 0 | |
117 | ancestor /foo/bar /fo -1 | |
118 | ancestor /foo/bar foo -1 | |
119 | ancestor /foo/bar /foo 4 | |
120 | ancestor /foo/bar /foo/ 4 | |
121 | ancestor /foo/bar /foo/ba -1 | |
122 | ancestor /foo/bar /:/fo 0 | |
123 | ancestor /foo/bar /foo:/foo/ba 4 | |
124 | ancestor /foo/bar /bar -1 | |
125 | ancestor /foo/bar /bar/ -1 | |
126 | ancestor /foo/bar /fo: -1 | |
127 | ancestor /foo/bar :/fo -1 | |
128 | ancestor /foo/bar /foo:/bar/ 4 | |
129 | ancestor /foo/bar /:/foo:/bar/ 4 | |
130 | ancestor /foo/bar /foo:/:/bar/ 4 | |
131 | ancestor /foo/bar /:/bar/:/fo 0 | |
132 | ancestor /foo/bar /:/bar/ 0 | |
2718e852 JS |
133 | ancestor /foo/bar .:/foo/. 4 |
134 | ancestor /foo/bar .:/foo/.:.: 4 | |
135 | ancestor /foo/bar /foo/./:.:/bar 4 | |
136 | ancestor /foo/bar .:/bar -1 | |
0454dd93 | 137 | |
4fcc86b0 JS |
138 | test_expect_success 'strip_path_suffix' ' |
139 | test c:/msysgit = $(test-path-utils strip_path_suffix \ | |
140 | c:/msysgit/libexec//git-core libexec/git-core) | |
141 | ' | |
ae299be0 | 142 | test_done |