git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git@vger.kernel.org, "Jeff King" <peff@peff.net>,
	"Jeffrey Walton" <noloader@gmail.com>,
	"Michał Kiedrowicz" <michal.kiedrowicz@gmail.com>,
	"J Smith" <dark.panda@gmail.com>,
	"Victor Leschuk" <vleschuk@gmail.com>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
	"Fredrik Kuivinen" <frekui@gmail.com>,
	"Brandon Williams" <bmwill@google.com>
Subject: Re: [PATCH 04/29] log: add exhaustive tests for pattern style options & config
Date: Fri, 12 May 2017 13:48:24 +0900	[thread overview]
Message-ID: <xmqqwp9m7k9z.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20170511091829.5634-5-avarab@gmail.com> ("Ævar Arnfjörð Bjarmason"'s message of "Thu, 11 May 2017 09:18:04 +0000")

Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

> Add exhaustive tests for how the different grep.patternType options &
> the corresponding command-line options affect git-log.
> ...
> The patterns being passed to fixed/basic/extended/PCRE are carefully
> crafted to return the wrong thing if the grep engine were to pick any
> other matching method than the one it's told to use.

That is good; it may be even more helpful to the readers if they are
given a brief in-code comment.  I had to scratch head while reading
them.

>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  t/t4202-log.sh | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 76 insertions(+), 1 deletion(-)
>
> diff --git a/t/t4202-log.sh b/t/t4202-log.sh
> index f577990716..6d1411abea 100755
> --- a/t/t4202-log.sh
> +++ b/t/t4202-log.sh
> @@ -262,7 +262,23 @@ test_expect_success 'log --grep -i' '
>  
>  test_expect_success 'log -F -E --grep=<ere> uses ere' '
>  	echo second >expect &&
> -	git log -1 --pretty="tformat:%s" -F -E --grep=s.c.nd >actual &&
	# BRE would need \(s\) to do the same.
> +	git log -1 --pretty="tformat:%s" -F -E --grep="(s).c.nd" >actual &&
> +	test_cmp expect actual
> +'
> +
> +test_expect_success PCRE 'log -F -E --perl-regexp --grep=<pcre> uses PCRE' '
> +	test_when_finished "rm -rf num_commits" &&
> +	git init num_commits &&
> +	(
> +		cd num_commits &&
> +		test_commit 1d &&
> +		test_commit 2e
> +	) &&
> +	echo 2e >expect &&
	# In PCRE \d in [\d] is like saying "0-9", and match '2' in 2e
> +	git -C num_commits log -1 --pretty="tformat:%s" -F -E --perl-regexp --grep="[\d]" >actual &&
> +	test_cmp expect actual &&
> +	echo 1d >expect &&
	# In ERE [\d] is bs or letter 'd' and would not match '2' in '2e'
	# but does match 'd' in '1d'
> +	git -C num_commits log -1 --pretty="tformat:%s" -F -E --grep="[\d]" >actual &&
>  	test_cmp expect actual
>  '
>  
> @@ -280,6 +296,65 @@ test_expect_success 'log with grep.patternType configuration and command line' '
>  	test_cmp expect actual
>  '
>  
> +test_expect_success 'log with various grep.patternType configurations & command-lines' '
> +	git init pattern-type &&
> +	(
> +		cd pattern-type &&
> +		test_commit 1 file A &&
> +		test_commit "(1|2)" file B &&
> +
> +		echo "(1|2)" >expect.fixed &&
> +		cp expect.fixed expect.basic &&
> +		cp expect.fixed expect.extended &&
> +		cp expect.fixed expect.perl &&
> +
		# Fixed finds these literally
> +		git -c grep.patternType=fixed log --pretty=tformat:%s \
> +			--grep="(1|2)" >actual.fixed &&
		# BRE matches (, |, and ) literally
> +		git -c grep.patternType=basic log --pretty=tformat:%s \
> +			--grep="(.|.)" >actual.basic &&
		# ERE needs | quoted with bs to match | literally
> +		git -c grep.patternType=extended log --pretty=tformat:%s \
> +			--grep="\|2" >actual.extended &&

If we use BRE by mistake, wouldn't this pattern actually find
"(1|2)" anyway, without skipping it and show "1 file A" instead?

> +		if test_have_prereq PCRE
> +		then
> +			git -c grep.patternType=perl log --pretty=tformat:%s \
> +				--grep="[\d]\|" >actual.perl
			# Only PCRE would match [\d]\| with "(1|2)" due to [\d]
> +		fi &&
> +		test_cmp expect.fixed actual.fixed &&
> +		test_cmp expect.basic actual.basic &&
> +		test_cmp expect.extended actual.extended &&
> +		if test_have_prereq PCRE
> +		then
> +			test_cmp expect.perl actual.perl
> +		fi &&

It could be just a style thing, but I would actually find it easier
to follow if the above two "only with PCRE" tests, i.e. running test
and taking its output in actual.perl and comparing it with
expect.perl, were inside a single "if test_have_prereq PCRE" block.

  reply	other threads:[~2017-05-12  4:48 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-11  9:18 [PATCH 00/29] Easy to review grep & pre-PCRE changes Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 01/29] Makefile & configure: reword inaccurate comment about PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 02/29] grep & rev-list doc: stop promising libpcre for --perl-regexp Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 03/29] test-lib: rename the LIBPCRE prerequisite to PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 04/29] log: add exhaustive tests for pattern style options & config Ævar Arnfjörð Bjarmason
2017-05-12  4:48   ` Junio C Hamano [this message]
2017-05-13 18:02     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 05/29] grep: add a test asserting that --perl-regexp dies when !PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 06/29] grep: add a test for backreferences in PCRE patterns Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 07/29] grep: change non-ASCII -i test to stop using --debug Ævar Arnfjörð Bjarmason
2017-05-11 18:31   ` Brandon Williams
2017-05-11 18:35     ` Ævar Arnfjörð Bjarmason
2017-05-11 20:05       ` Brandon Williams
2017-05-11  9:18 ` [PATCH 08/29] grep: add tests for --threads=N and grep.threads Ævar Arnfjörð Bjarmason
2017-05-11 18:36   ` Brandon Williams
2017-05-11 19:22     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 09/29] grep: amend submodule recursion test for regex engine testing Ævar Arnfjörð Bjarmason
2017-05-12  4:59   ` Junio C Hamano
2017-05-13 17:33     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 10/29] grep: add tests for grep pattern types being passed to submodules Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 11/29] grep: add a test helper function for less verbose -f \0 tests Ævar Arnfjörð Bjarmason
2017-05-12  5:06   ` Junio C Hamano
2017-05-13 11:33     ` Ævar Arnfjörð Bjarmason
2017-05-15  1:29       ` Junio C Hamano
2017-05-11  9:18 ` [PATCH 12/29] grep: prepare for testing binary regexes containing rx metacharacters Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 13/29] grep: add tests to fix blind spots with \0 patterns Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 14/29] perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 15/29] perf: emit progress output when unpacking & building Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 16/29] perf: add a performance comparison test of grep -G, -E and -P Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 17/29] perf: add a performance comparison of fixed-string grep Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 18/29] grep: catch a missing enum in switch statement Ævar Arnfjörð Bjarmason
2017-05-11 20:08   ` Brandon Williams
2017-05-11 20:40     ` Stefan Beller
2017-05-11 20:50       ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 19/29] grep: remove redundant regflags assignment under PCRE Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 20/29] grep: remove redundant `regflags &= ~REG_EXTENDED` assignments Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 21/29] grep: factor test for \0 in grep patterns into a function Ævar Arnfjörð Bjarmason
2017-05-11 20:15   ` Brandon Williams
2017-05-11 20:22     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 22/29] grep: change the internal PCRE macro names to be PCRE1 Ævar Arnfjörð Bjarmason
2017-05-11 20:10   ` Brandon Williams
2017-05-11  9:18 ` [PATCH 23/29] grep: change internal *pcre* variable & function names to be *pcre1* Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 24/29] grep: move two functions to avoid forward declaration Ævar Arnfjörð Bjarmason
2017-05-11 20:14   ` Brandon Williams
2017-05-11 20:20     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 25/29] test-lib: add a PTHREADS prerequisite Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 26/29] pack-objects & index-pack: add test for --threads warning Ævar Arnfjörð Bjarmason
2017-05-11 20:17   ` Brandon Williams
2017-05-11 20:34     ` Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 27/29] pack-objects: fix buggy warning about threads Ævar Arnfjörð Bjarmason
2017-05-11  9:18 ` [PATCH 28/29] grep: given --threads with NO_PTHREADS=YesPlease, warn Ævar Arnfjörð Bjarmason
2017-05-11 20:21   ` Brandon Williams
2017-05-11 20:33     ` Ævar Arnfjörð Bjarmason
2017-05-11 20:43       ` Brandon Williams
2017-05-11 21:20         ` [PATCH] C style: use standard style for "TRANSLATORS" comments Ævar Arnfjörð Bjarmason
2017-05-11 21:41           ` Jonathan Nieder
2017-05-11 21:50             ` Brandon Williams
2017-05-12  5:20           ` Johannes Sixt
2017-05-30 16:02           ` Jiang Xin
2017-05-30 23:03             ` Junio C Hamano
2017-05-11  9:18 ` [PATCH 29/29] grep: assert that threading is enabled when calling grep_{lock,unlock} Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqwp9m7k9z.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=avarab@gmail.com \
    --cc=bmwill@google.com \
    --cc=dark.panda@gmail.com \
    --cc=frekui@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=michal.kiedrowicz@gmail.com \
    --cc=noloader@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=vleschuk@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).