]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t1506-rev-parse-diagnosis.sh
Merge branch 'en/ort-perf-batch-9'
[thirdparty/git.git] / t / t1506-rev-parse-diagnosis.sh
index dbf690b9c1ba492dff629ac75c9cadd5d4887095..65a154a8a20f8df27a3f0eaee9ff9b65d5132639 100755 (executable)
@@ -4,6 +4,9 @@ test_description='test git rev-parse diagnosis for invalid argument'
 
 exec </dev/null
 
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
 . ./test-lib.sh
 
 test_did_you_mean ()
@@ -12,7 +15,7 @@ test_did_you_mean ()
        fatal: path '$2$3' $4, but not ${5:-$SQ$3$SQ}
        hint: Did you mean '$1:$2$3'${2:+ aka $SQ$1:./$3$SQ}?
        EOF
-       test_i18ncmp expected error
+       test_cmp expected error
 }
 
 HASH_file=
@@ -137,10 +140,10 @@ test_expect_success 'incorrect file in :path and :N:path' '
 '
 
 test_expect_success 'invalid @{n} reference' '
-       test_must_fail git rev-parse master@{99999} >output 2>error &&
+       test_must_fail git rev-parse main@{99999} >output 2>error &&
        test_must_be_empty output &&
        test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error  &&
-       test_must_fail git rev-parse --verify master@{99999} >output 2>error &&
+       test_must_fail git rev-parse --verify main@{99999} >output 2>error &&
        test_must_be_empty output &&
        test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error
 '
@@ -190,6 +193,24 @@ test_expect_success 'dotdot is not an empty set' '
        test_cmp expect actual
 '
 
+test_expect_success 'dotdot does not peel endpoints' '
+       git tag -a -m "annote" annotated HEAD &&
+       A=$(git rev-parse annotated) &&
+       H=$(git rev-parse annotated^0) &&
+       {
+               echo $A && echo ^$A
+       } >expect-with-two-dots &&
+       {
+               echo $A && echo $A && echo ^$H
+       } >expect-with-merge-base &&
+
+       git rev-parse annotated..annotated >actual-with-two-dots &&
+       test_cmp expect-with-two-dots actual-with-two-dots &&
+
+       git rev-parse annotated...annotated >actual-with-merge-base &&
+       test_cmp expect-with-merge-base actual-with-merge-base
+'
+
 test_expect_success 'arg before dashdash must be a revision (missing)' '
        test_must_fail git rev-parse foobar -- 2>stderr &&
        test_i18ngrep "bad revision" stderr
@@ -236,4 +257,29 @@ test_expect_success 'escaped char does not trigger wildcard rule' '
        test_must_fail git rev-parse "foo\\*bar"
 '
 
+test_expect_success 'arg after dashdash not interpreted as option' '
+       cat >expect <<-\EOF &&
+       --
+       --local-env-vars
+       EOF
+       git rev-parse -- --local-env-vars >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'arg after end-of-options not interpreted as option' '
+       test_must_fail git rev-parse --end-of-options --not-real -- 2>err &&
+       test_i18ngrep bad.revision.*--not-real err
+'
+
+test_expect_success 'end-of-options still allows --' '
+       cat >expect <<-EOF &&
+       --end-of-options
+       $(git rev-parse --verify HEAD)
+       --
+       path
+       EOF
+       git rev-parse --end-of-options HEAD -- path >actual &&
+       test_cmp expect actual
+'
+
 test_done