Commit | Line | Data |
---|---|---|
15d061b4 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='Rename interaction with pathspec. | |
7 | ||
8 | ' | |
9 | . ./test-lib.sh | |
bfdbee98 | 10 | . "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash |
15d061b4 | 11 | |
aceae2ef JH |
12 | test_expect_success 'prepare reference tree' ' |
13 | mkdir path0 path1 && | |
14 | cp "$TEST_DIRECTORY"/../COPYING path0/COPYING && | |
15 | git update-index --add path0/COPYING && | |
16 | tree=$(git write-tree) && | |
17 | echo $tree | |
18 | ' | |
19 | ||
20 | test_expect_success 'prepare work tree' ' | |
21 | cp path0/COPYING path1/COPYING && | |
22 | git update-index --add --remove path0/COPYING path1/COPYING | |
23 | ' | |
15d061b4 JH |
24 | |
25 | # In the tree, there is only path0/COPYING. In the cache, path0 and | |
26 | # path1 both have COPYING and the latter is a copy of path0/COPYING. | |
27 | # Comparing the full tree with cache should tell us so. | |
28 | ||
15d061b4 JH |
29 | cat >expected <<\EOF |
30 | :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100 path0/COPYING path1/COPYING | |
31 | EOF | |
32 | ||
aceae2ef JH |
33 | test_expect_success 'copy detection' ' |
34 | git diff-index -C --find-copies-harder $tree >current && | |
35 | compare_diff_raw current expected | |
36 | ' | |
15d061b4 | 37 | |
a0919ced JH |
38 | test_expect_success 'copy detection, cached' ' |
39 | git diff-index -C --find-copies-harder --cached $tree >current && | |
40 | compare_diff_raw current expected | |
41 | ' | |
42 | ||
15d061b4 JH |
43 | # In the tree, there is only path0/COPYING. In the cache, path0 and |
44 | # path1 both have COPYING and the latter is a copy of path0/COPYING. | |
6145ee8b JH |
45 | # However when we say we care only about path1, we should just see |
46 | # path1/COPYING suddenly appearing from nowhere, not detected as | |
47 | # a copy from path0/COPYING. | |
15d061b4 | 48 | |
15d061b4 | 49 | cat >expected <<\EOF |
2bbcddee | 50 | :000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A path1/COPYING |
15d061b4 JH |
51 | EOF |
52 | ||
aceae2ef JH |
53 | test_expect_success 'copy, limited to a subtree' ' |
54 | git diff-index -C --find-copies-harder $tree path1 >current && | |
55 | compare_diff_raw current expected | |
56 | ' | |
15d061b4 | 57 | |
aceae2ef JH |
58 | test_expect_success 'tweak work tree' ' |
59 | rm -f path0/COPYING && | |
60 | git update-index --remove path0/COPYING | |
61 | ' | |
15d061b4 JH |
62 | # In the tree, there is only path0/COPYING. In the cache, path0 does |
63 | # not have COPYING anymore and path1 has COPYING which is a copy of | |
64 | # path0/COPYING. Showing the full tree with cache should tell us about | |
65 | # the rename. | |
66 | ||
15d061b4 JH |
67 | cat >expected <<\EOF |
68 | :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 path0/COPYING path1/COPYING | |
69 | EOF | |
70 | ||
aceae2ef JH |
71 | test_expect_success 'rename detection' ' |
72 | git diff-index -C --find-copies-harder $tree >current && | |
73 | compare_diff_raw current expected | |
74 | ' | |
15d061b4 JH |
75 | |
76 | # In the tree, there is only path0/COPYING. In the cache, path0 does | |
77 | # not have COPYING anymore and path1 has COPYING which is a copy of | |
6145ee8b JH |
78 | # path0/COPYING. When we say we care only about path1, we should just |
79 | # see path1/COPYING appearing from nowhere. | |
15d061b4 | 80 | |
15d061b4 | 81 | cat >expected <<\EOF |
2bbcddee | 82 | :000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A path1/COPYING |
15d061b4 JH |
83 | EOF |
84 | ||
aceae2ef JH |
85 | test_expect_success 'rename, limited to a subtree' ' |
86 | git diff-index -C --find-copies-harder $tree path1 >current && | |
87 | compare_diff_raw current expected | |
88 | ' | |
15d061b4 JH |
89 | |
90 | test_done |