Subject: [PATCH v2 0/2] Fix trailers atom bug and improved tests

From: "Hariom Verma via GitGitGadget" <[email-masked]>
Date: Fri, 21 Aug 2020 10:11:00 +0000

Currently, there exists a bug in 'contents' atom. It does not show any error
if used with modifier 'trailers' and semicolon is missing before trailers
arguments. This small patch series is focused on fixing that bug and also
unified 'trailers' and 'contents:trailers' tests. Thus, removed duplicate
code from t6300 and made tests more compact.

Hariom Verma (2):
  t6300: unify %(trailers) and %(contents:trailers) tests
  ref-filter: 'contents:trailers' show error if `:` is missing

 ref-filter.c            | 21 +++++++++++++---
 t/t6300-for-each-ref.sh | 55 ++++++++++++++---------------------------
 2 files changed, 36 insertions(+), 40 deletions(-)

base-commit: 675a4aaf3b226c0089108221b96559e0baae5de9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-707%2Fharry-hov%2Ffix-trailers-atom-bug-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-707/harry-hov/fix-trailers-atom-bug-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/707

Range-diff vs v1:

 1:  bd0bb8d0ef ! 1:  4816aa3cfa t6300: unify %(trailers) and %(contents:trailers) tests
     @@ t/t6300-for-each-ref.sh: test_expect_success 'set up trailers for next test' '
      -
      -test_expect_success '%(contents:trailers:only) and %(contents:trailers:unfold) work together' '
      +	git for-each-ref --format="%(trailers:only,unfold)" refs/heads/master >actual &&
     -+	git for-each-ref --format="%(trailers:unfold,only)" refs/heads/master >reverse &&
     -+	test_cmp actual reverse &&
      +	test_cmp expect actual &&
     ++	git for-each-ref --format="%(trailers:unfold,only)" refs/heads/master >actual &&
     ++	test_cmp actual actual &&
       	git for-each-ref --format="%(contents:trailers:only,unfold)" refs/heads/master >actual &&
     - 	git for-each-ref --format="%(contents:trailers:unfold,only)" refs/heads/master >reverse &&
     - 	test_cmp actual reverse &&
     +-	git for-each-ref --format="%(contents:trailers:unfold,only)" refs/heads/master >reverse &&
     +-	test_cmp actual reverse &&
      -	{
      -		grep -v patch.description <trailers | unfold &&
      -		echo
      -	} >expect &&
     - 	test_cmp expect actual
     +-	test_cmp expect actual
     ++	test_cmp expect actual &&
     ++	git for-each-ref --format="%(contents:trailers:unfold,only)" refs/heads/master >actual &&
     ++	test_cmp actual actual
       '
       
     + test_expect_success '%(trailers) rejects unknown trailers arguments' '
      @@ t/t6300-for-each-ref.sh: test_expect_success '%(trailers) rejects unknown trailers arguments' '
       	fatal: unknown %(trailers) argument: unsupported
       	EOF
 2:  7daf9335a5 ! 2:  39aa46bce7 ref-filter: 'contents:trailers' show error if `:` is missing
     @@ ref-filter.c: static int trailers_atom_parser(const struct ref_format *format, s
      +			return 1;
      +		}
      +		else if (*opt == ':') {
     -+			*option = ++opt;
     ++			*option = opt + 1;
      +			return 1;
      +		}
      +	}

-- 
gitgitgadget