rev-parse test: use test_cmp instead of "test" builtin

Use test_cmp instead of passing two command substitutions to the "test" builtin. This way: - when tests fail, they can print a helpful diff if run with "--verbose" - the argument order "test_cmp expect actual" feels natural, unlike test <known> = <unknown> that seems backwards - the exit status from invoking git is checked, so if rev-parse starts segfaulting then the test will notice and fail Use a custom function for this instead of test_cmp_rev to emphasize that we are testing the output from "git rev-parse" with certain arguments, not checking that the revisions are equal in abstract. Reported-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Nieder committed Sep 3, 2013 at 10:07 UTC c812be9d81cf1fc587695d985bced50258b53d31
1 file changed +19 -14
t/t6101-rev-parse-parents.sh
+19 -14
@@ -8,6 +8,12 @@ test_description='Test git rev-parse with different parent options'
8 . ./test-lib.sh
9 . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions
10
11 +test_cmp_rev_output () {
12 + git rev-parse --verify "$1" >expect &&
13 + eval "$2" >actual &&
14 + test_cmp expect actual
15 +}
16 +
17 date >path0
18 git update-index --add path0
19 save_tag tree git write-tree
@@ -22,7 +28,7 @@ test_expect_success 'start is valid' '
28 '
29
30 test_expect_success 'start^0' '
25 - test $(cat .git/refs/tags/start) = $(git rev-parse start^0)
31 + test_cmp_rev_output tags/start "git rev-parse start^0"
32 '
33
34 test_expect_success 'start^1 not valid' '
@@ -30,19 +36,19 @@ test_expect_success 'start^1 not valid' '
36 '
37
38 test_expect_success 'second^1 = second^' '
33 - test $(git rev-parse second^1) = $(git rev-parse second^)
39 + test_cmp_rev_output second^ "git rev-parse second^1"
40 '
41
42 test_expect_success 'final^1^1^1' '
37 - test $(git rev-parse start) = $(git rev-parse 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^^^' '
41 - test $(git rev-parse final^1^1^1) = $(git rev-parse final^^^)
47 + test_cmp_rev_output final^^^ "git rev-parse final^1^1^1"
48 '
49
50 test_expect_success 'final^1^2' '
45 - test $(git rev-parse start2) = $(git rev-parse 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' '
@@ -62,11 +68,15 @@ test_expect_success '--verify start2^0' '
68 '
69
70 test_expect_success 'final^1^@ = final^1^1 final^1^2' '
65 - test "$(git rev-parse final^1^@)" = "$(git rev-parse 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' '
69 - test "$(git rev-parse final^1^!)" = "$(git rev-parse 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' '
@@ -74,13 +84,8 @@ test_expect_success 'repack for next test' '
84 '
85
86 test_expect_success 'short SHA-1 works' '
77 - start=`git rev-parse --verify start` &&
78 - echo $start &&
79 - abbrv=`echo $start | sed s/.\$//` &&
80 - echo $abbrv &&
81 - abbrv=`git rev-parse --verify $abbrv` &&
82 - echo $abbrv &&
83 - test $start = $abbrv
87 + start=$(git rev-parse --verify start) &&
88 + test_cmp_rev_output start "git rev-parse ${start%?}"
89 '
90
91 test_done