|
6 | 6 | test_description='Test git rev-parse with different parent options' |
7 | 7 |
|
8 | 8 | . ./test-lib.sh |
9 | | -. "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions |
10 | | - |
11 | | -date >path0 |
12 | | -git update-index --add path0 |
13 | | -save_tag tree git write-tree |
14 | | -hide_error save_tag start unique_commit "start" tree |
15 | | -save_tag second unique_commit "second" tree -p start |
16 | | -hide_error save_tag start2 unique_commit "start2" tree |
17 | | -save_tag two_parents unique_commit "next" tree -p second -p start2 |
18 | | -save_tag final unique_commit "final" tree -p two_parents |
19 | | - |
20 | | -test_expect_success 'start is valid' 'git rev-parse start | grep "^[0-9a-f]\{40\}$"' |
21 | | -test_expect_success 'start^0' "test $(cat .git/refs/tags/start) = $(git rev-parse start^0)" |
22 | | -test_expect_success 'start^1 not valid' "if git rev-parse --verify start^1; then false; else :; fi" |
23 | | -test_expect_success 'second^1 = second^' "test $(git rev-parse second^1) = $(git rev-parse second^)" |
24 | | -test_expect_success 'final^1^1^1' "test $(git rev-parse start) = $(git rev-parse final^1^1^1)" |
25 | | -test_expect_success 'final^1^1^1 = final^^^' "test $(git rev-parse final^1^1^1) = $(git rev-parse final^^^)" |
26 | | -test_expect_success 'final^1^2' "test $(git rev-parse start2) = $(git rev-parse final^1^2)" |
27 | | -test_expect_success 'final^1^2 != final^1^1' "test $(git rev-parse final^1^2) != $(git rev-parse final^1^1)" |
28 | | -test_expect_success 'final^1^3 not valid' "if git rev-parse --verify final^1^3; then false; else :; fi" |
29 | | -test_expect_success '--verify start2^1' 'test_must_fail git rev-parse --verify start2^1' |
30 | | -test_expect_success '--verify start2^0' 'git rev-parse --verify start2^0' |
31 | | -test_expect_success 'final^1^@ = final^1^1 final^1^2' "test \"$(git rev-parse final^1^@)\" = \"$(git rev-parse final^1^1 final^1^2)\"" |
32 | | -test_expect_success 'final^1^! = final^1 ^final^1^1 ^final^1^2' "test \"$(git rev-parse final^1^\!)\" = \"$(git rev-parse final^1 ^final^1^1 ^final^1^2)\"" |
33 | | - |
34 | | -test_expect_success 'repack for next test' 'git repack -a -d' |
| 9 | + |
| 10 | +test_cmp_rev_output () { |
| 11 | + git rev-parse --verify "$1" >expect && |
| 12 | + eval "$2" >actual && |
| 13 | + test_cmp expect actual |
| 14 | +} |
| 15 | + |
| 16 | +test_expect_success 'setup' ' |
| 17 | + test_commit start && |
| 18 | + test_commit second && |
| 19 | + git checkout --orphan tmp && |
| 20 | + test_commit start2 && |
| 21 | + git checkout master && |
| 22 | + git merge -m next start2 && |
| 23 | + test_commit final |
| 24 | +' |
| 25 | + |
| 26 | +test_expect_success 'start is valid' ' |
| 27 | + git rev-parse start | grep "^[0-9a-f]\{40\}$" |
| 28 | +' |
| 29 | + |
| 30 | +test_expect_success 'start^0' ' |
| 31 | + test_cmp_rev_output tags/start "git rev-parse start^0" |
| 32 | +' |
| 33 | + |
| 34 | +test_expect_success 'start^1 not valid' ' |
| 35 | + test_must_fail git rev-parse --verify start^1 |
| 36 | +' |
| 37 | + |
| 38 | +test_expect_success 'second^1 = second^' ' |
| 39 | + test_cmp_rev_output second^ "git rev-parse second^1" |
| 40 | +' |
| 41 | + |
| 42 | +test_expect_success 'final^1^1^1' ' |
| 43 | + test_cmp_rev_output start "git rev-parse final^1^1^1" |
| 44 | +' |
| 45 | + |
| 46 | +test_expect_success 'final^1^1^1 = final^^^' ' |
| 47 | + test_cmp_rev_output final^^^ "git rev-parse final^1^1^1" |
| 48 | +' |
| 49 | + |
| 50 | +test_expect_success 'final^1^2' ' |
| 51 | + test_cmp_rev_output start2 "git rev-parse final^1^2" |
| 52 | +' |
| 53 | + |
| 54 | +test_expect_success 'final^1^2 != final^1^1' ' |
| 55 | + test $(git rev-parse final^1^2) != $(git rev-parse final^1^1) |
| 56 | +' |
| 57 | + |
| 58 | +test_expect_success 'final^1^3 not valid' ' |
| 59 | + test_must_fail git rev-parse --verify final^1^3 |
| 60 | +' |
| 61 | + |
| 62 | +test_expect_success '--verify start2^1' ' |
| 63 | + test_must_fail git rev-parse --verify start2^1 |
| 64 | +' |
| 65 | + |
| 66 | +test_expect_success '--verify start2^0' ' |
| 67 | + git rev-parse --verify start2^0 |
| 68 | +' |
| 69 | + |
| 70 | +test_expect_success 'final^1^@ = final^1^1 final^1^2' ' |
| 71 | + git rev-parse final^1^1 final^1^2 >expect && |
| 72 | + git rev-parse final^1^@ >actual && |
| 73 | + test_cmp expect actual |
| 74 | +' |
| 75 | + |
| 76 | +test_expect_success 'final^1^! = final^1 ^final^1^1 ^final^1^2' ' |
| 77 | + git rev-parse final^1 ^final^1^1 ^final^1^2 >expect && |
| 78 | + git rev-parse final^1^! >actual && |
| 79 | + test_cmp expect actual |
| 80 | +' |
| 81 | + |
| 82 | +test_expect_success 'repack for next test' ' |
| 83 | + git repack -a -d |
| 84 | +' |
| 85 | + |
35 | 86 | test_expect_success 'short SHA-1 works' ' |
36 | | - start=`git rev-parse --verify start` && |
37 | | - echo $start && |
38 | | - abbrv=`echo $start | sed s/.\$//` && |
39 | | - echo $abbrv && |
40 | | - abbrv=`git rev-parse --verify $abbrv` && |
41 | | - echo $abbrv && |
42 | | - test $start = $abbrv' |
| 87 | + start=$(git rev-parse --verify start) && |
| 88 | + test_cmp_rev_output start "git rev-parse ${start%?}" |
| 89 | +' |
43 | 90 |
|
44 | 91 | test_done |
0 commit comments