Skip to content

Commit c812be9

Browse files
jrngitster
authored andcommitted
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>
1 parent d8f7681 commit c812be9

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

t/t6101-rev-parse-parents.sh

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ test_description='Test git rev-parse with different parent options'
88
. ./test-lib.sh
99
. "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions
1010

11+
test_cmp_rev_output () {
12+
git rev-parse --verify "$1" >expect &&
13+
eval "$2" >actual &&
14+
test_cmp expect actual
15+
}
16+
1117
date >path0
1218
git update-index --add path0
1319
save_tag tree git write-tree
@@ -22,27 +28,27 @@ test_expect_success 'start is valid' '
2228
'
2329

2430
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"
2632
'
2733

2834
test_expect_success 'start^1 not valid' '
2935
test_must_fail git rev-parse --verify start^1
3036
'
3137

3238
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"
3440
'
3541

3642
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"
3844
'
3945

4046
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"
4248
'
4349

4450
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"
4652
'
4753

4854
test_expect_success 'final^1^2 != final^1^1' '
@@ -62,25 +68,24 @@ test_expect_success '--verify start2^0' '
6268
'
6369

6470
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
6674
'
6775

6876
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
7080
'
7181

7282
test_expect_success 'repack for next test' '
7383
git repack -a -d
7484
'
7585

7686
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%?}"
8489
'
8590

8691
test_done

0 commit comments

Comments
 (0)