path: root/test-path-utils.c
diff options
authorJohannes Sixt <>2009-02-07 15:08:30 (GMT)
committerJunio C Hamano <>2009-02-07 20:23:30 (GMT)
commitf42302b49333d035a323f5d80fb9562d375b17f1 (patch)
tree2003fd4dd304aec98199cce60c0fe40aaefa2c2c /test-path-utils.c
parent43a7ddb55d82d5c6f0c4d2cbe408a1df71d58ef3 (diff)
Test and fix normalize_path_copy()
This changes the test-path-utils utility to invoke normalize_path_copy() instead of normalize_absolute_path() because the latter is about to be removed. The test cases in t0060 are adjusted in two regards: - normalize_path_copy() more often leaves a trailing slash in the result. This has no negative side effects because the new user of this function, longest_ancester_length(), already accounts for this behavior. - The function can fail. The tests uncover a flaw in normalize_path_copy(): If there are sufficiently many '..' path components so that the root is reached, such as in "/d1/s1/../../d2", then the leading slash was lost. This manifested itself that (assuming there is a repository at /tmp/foo) $ git add /d1/../tmp/foo/some-file reported 'pathspec is outside repository'. This is now fixed. Moreover, the test case descriptions of t0060 now include the test data and expected outcome. Signed-off-by: Johannes Sixt <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'test-path-utils.c')
1 files changed, 4 insertions, 3 deletions
diff --git a/test-path-utils.c b/test-path-utils.c
index 7e6fc8d..5168a8e 100644
--- a/test-path-utils.c
+++ b/test-path-utils.c
@@ -2,10 +2,11 @@
int main(int argc, char **argv)
- if (argc == 3 && !strcmp(argv[1], "normalize_absolute_path")) {
+ if (argc == 3 && !strcmp(argv[1], "normalize_path_copy")) {
char *buf = xmalloc(PATH_MAX + 1);
- int rv = normalize_absolute_path(buf, argv[2]);
- assert(strlen(buf) == rv);
+ int rv = normalize_path_copy(buf, argv[2]);
+ if (rv)
+ buf = "++failed++";
return 0;