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 a little 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.contre...@gmail.com>
Signed-off-by: Jonathan Nieder <jrnie...@gmail.com>
---
 t/t6101-rev-parse-parents.sh | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/t/t6101-rev-parse-parents.sh b/t/t6101-rev-parse-parents.sh
index 416067c..8a6ff66 100755
--- a/t/t6101-rev-parse-parents.sh
+++ b/t/t6101-rev-parse-parents.sh
@@ -8,6 +8,12 @@ test_description='Test git rev-parse with different parent 
options'
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions
 
+test_cmp_rev_output () {
+       git rev-parse --verify "$1" >expect &&
+       eval "$2" >actual &&
+       test_cmp expect actual
+}
+
 date >path0
 git update-index --add path0
 save_tag tree git write-tree
@@ -22,7 +28,7 @@ test_expect_success 'start is valid' '
 '
 
 test_expect_success 'start^0' '
-       test $(cat .git/refs/tags/start) = $(git rev-parse start^0)
+       test_cmp_rev_output tags/start "git rev-parse start^0"
 '
 
 test_expect_success 'start^1 not valid' '
@@ -30,19 +36,19 @@ test_expect_success 'start^1 not valid' '
 '
 
 test_expect_success 'second^1 = second^' '
-       test $(git rev-parse second^1) = $(git rev-parse second^)
+       test_cmp_rev_output second^ "git rev-parse second^1"
 '
 
 test_expect_success 'final^1^1^1' '
-       test $(git rev-parse start) = $(git rev-parse final^1^1^1)
+       test_cmp_rev_output start "git rev-parse final^1^1^1"
 '
 
 test_expect_success 'final^1^1^1 = final^^^' '
-       test $(git rev-parse final^1^1^1) = $(git rev-parse final^^^)
+       test_cmp_rev_output final^^^ "git rev-parse final^1^1^1"
 '
 
 test_expect_success 'final^1^2' '
-       test $(git rev-parse start2) = $(git rev-parse final^1^2)
+       test_cmp_rev_output start2 "git rev-parse final^1^2"
 '
 
 test_expect_success 'final^1^2 != final^1^1' '
@@ -62,11 +68,15 @@ test_expect_success '--verify start2^0' '
 '
 
 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)"
+       git rev-parse final^1^1 final^1^2 >expect &&
+       git rev-parse final^1^@ >actual &&
+       test_cmp expect actual
 '
 
 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)"
+       git rev-parse final^1 ^final^1^1 ^final^1^2 >expect &&
+       git rev-parse final^1^! >actual &&
+       test_cmp expect actual
 '
 
 test_expect_success 'repack for next test' '
@@ -74,13 +84,8 @@ test_expect_success 'repack for next test' '
 '
 
 test_expect_success 'short SHA-1 works' '
-       start=`git rev-parse --verify start` &&
-       echo $start &&
-       abbrv=`echo $start | sed s/.\$//` &&
-       echo $abbrv &&
-       abbrv=`git rev-parse --verify $abbrv` &&
-       echo $abbrv &&
-       test $start = $abbrv
+       start=$(git rev-parse --verify start) &&
+       test_cmp_rev_output start "git rev-parse ${start%?}"
 '
 
 test_done
-- 
1.8.4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to