[PATCH v2] t1401: check symbolic-ref exit codes and --quiet silence

"Nikolaus Schuetz via GitGitGadget" <[email protected]>
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
From: Nikolaus Schuetz <[email protected]>

git-symbolic-ref(1) documents that reading a name that is not a
symbolic ref exits non-zero, and that --quiet does so silently.
Tests such as t2020 and t5621 already rely on "symbolic-ref -q HEAD"
failing on a detached HEAD, but none pins the exact exit codes or
checks that --quiet actually suppresses the diagnostic.

Assert that a non-symbolic ref exits 128 with the "is not a symbolic
ref" message, and that --quiet instead exits 1 with no output.

Signed-off-by: Nikolaus Schuetz <[email protected]>
---
    t1401: test symbolic-ref exit codes on a non-symbolic ref
    
    git-symbolic-ref(1) documents that reading a name that is not a symbolic
    ref exits with a non-zero status, and that --quiet does so silently
    rather than printing a diagnostic. This exit-code contract was untested.
    
    This adds two tests: querying a non-symbolic ref exits 128 with the
    usual "is not a symbolic ref" message, and --quiet instead exits 1 with
    no output.
    
    Test-only; documents existing behaviour, in the spirit of 919eb8ace
    (t1402: check for refs ending with a dot).

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2204%2Fnikolauspschuetz%2Fns%2Ft1401-symbolic-ref-quiet-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2204/nikolauspschuetz/ns/t1401-symbolic-ref-quiet-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/2204

Range-diff vs v1:

 1:  345e664a52 ! 1:  22694da869 t1401: test symbolic-ref exit codes on a non-symbolic ref
     @@ Metadata
      Author: Nikolaus Schuetz <[email protected]>
      
       ## Commit message ##
     -    t1401: test symbolic-ref exit codes on a non-symbolic ref
     +    t1401: check symbolic-ref exit codes and --quiet silence
      
          git-symbolic-ref(1) documents that reading a name that is not a
     -    symbolic ref exits with a non-zero status, and that --quiet does so
     -    silently rather than printing a diagnostic.  This was not tested.
     +    symbolic ref exits non-zero, and that --quiet does so silently.
     +    Tests such as t2020 and t5621 already rely on "symbolic-ref -q HEAD"
     +    failing on a detached HEAD, but none pins the exact exit codes or
     +    checks that --quiet actually suppresses the diagnostic.
      
     -    Check that querying a non-symbolic ref exits 128 with the usual
     -    "is not a symbolic ref" message, and that --quiet instead exits 1
     -    with no output.
     +    Assert that a non-symbolic ref exits 128 with the "is not a symbolic
     +    ref" message, and that --quiet instead exits 1 with no output.
      
          Signed-off-by: Nikolaus Schuetz <[email protected]>
      
     @@ t/t1401-symbolic-ref.sh: test_expect_success 'symbolic-ref refuses bare sha1' '
       reset_to_sane
       
      +test_expect_success 'symbolic-ref reports a non-symbolic ref with exit code 128' '
     -+	test_expect_code 128 git symbolic-ref refs/heads/foo 2>err &&
     ++	test_expect_code 128 git symbolic-ref refs/heads/foo >out 2>err &&
     ++	test_must_be_empty out &&
      +	test_grep "is not a symbolic ref" err
      +'
      +
      +test_expect_success 'symbolic-ref -q is silent and exits 1 on a non-symbolic ref' '
     -+	test_expect_code 1 git symbolic-ref -q refs/heads/foo 2>err &&
     ++	test_expect_code 1 git symbolic-ref -q refs/heads/foo >out 2>err &&
     ++	test_must_be_empty out &&
      +	test_must_be_empty err
      +'
      +


 t/t1401-symbolic-ref.sh | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/t/t1401-symbolic-ref.sh b/t/t1401-symbolic-ref.sh
index a2a7e94716..6fad83ade8 100755
--- a/t/t1401-symbolic-ref.sh
+++ b/t/t1401-symbolic-ref.sh
@@ -38,6 +38,18 @@ test_expect_success 'symbolic-ref refuses bare sha1' '
 
 reset_to_sane
 
+test_expect_success 'symbolic-ref reports a non-symbolic ref with exit code 128' '
+	test_expect_code 128 git symbolic-ref refs/heads/foo >out 2>err &&
+	test_must_be_empty out &&
+	test_grep "is not a symbolic ref" err
+'
+
+test_expect_success 'symbolic-ref -q is silent and exits 1 on a non-symbolic ref' '
+	test_expect_code 1 git symbolic-ref -q refs/heads/foo >out 2>err &&
+	test_must_be_empty out &&
+	test_must_be_empty err
+'
+
 test_expect_success 'HEAD cannot be removed' '
 	test_must_fail git symbolic-ref -d HEAD
 '

base-commit: 745601a9a94110d74769ab605ccd4f61339758d2
-- 
gitgitgadget
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.