All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: Stefan Beller <sbeller@google.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [PATCH 3/3] test-parse-options: --expect=<string> option to simplify tests
Date: Thu, 5 May 2016 21:27:47 -0400	[thread overview]
Message-ID: <CAPig+cQO_N=AM+YniXMKHOzvGy4JU=Sqxn+dGWuuqmc62s-qyA@mail.gmail.com> (raw)
In-Reply-To: <CAGZ79kY+9BUjcbpSA8sAqd=qZ5niZ2CDsPeGuXhK+yqZY4hL9Q@mail.gmail.com>

On Thu, May 5, 2016 at 8:41 PM, Stefan Beller <sbeller@google.com> wrote:
> On Thu, May 5, 2016 at 2:50 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> [...]
>> But the only thing this test cares about is if "quiet: 3" is in the
>> output.  We should be able to write the above 18 lines with just
>> four lines, like this:
>>
>>         test_expect_success 'multiple quiet levels' '
>>                 test-parse-options --expect="quiet: 3" -q -q -q
>>         '
>>
>> Teach the new --expect=<string> option to test-parse-options helper.
>>
>> Signed-off-by: Junio C Hamano <gitster@pobox.com>
>> ---
>> diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh
>> +/*
>> + * See if expect->string ("label: value") has a line in output that
>> + * begins with "label:", and if the line in output matches it.
>> + */
>> +static int match_line(struct string_list_item *expect, struct strbuf *output)
>> +{
>> +       [...]
>> +       const char *scan = output->buf;
>> +       [...]
>> +       while (scan < output->buf + output->len) {
>> +               const char *next;
>> +               scan = memmem(scan, output->buf + output->len - scan,
>> +                             label, label_len);
>> +               if (!scan)
>> +                       return 0;
>> +               if (scan == output->buf || scan[-1] == '\n')
>
> Does scan[-1] work for the first line?

Take note of the short-circuiting '||' operator.

> On a philosophical level this patch series is adding a
> trailing "|grep $X" for the test-parse-options.
> I think such a grep pattern is a good thing because it is
> cheap to implement in unix like environments.
>
> This however is a lot of C code for finding specific subsets
> in the output, so it is not quite cheap. Then we could also go
> the non-wasteful way and instead check what to add to the strbuf
> instead of filtering afterwards, i.e. each strbuf_add is guarded by
> an
>
>      if (is_interesting_output(...))
>         strbuf_add(...)

I agree that this is adds far more complexity than I had expected upon
reading Junio's suggestion about simplifying the t0040 tests. Patch 1
aside (which seems a desirable change), rather than patches 2 and 3, I
had expected to see only introduction of a minor helper function in
t0040; perhaps something like this:

    options_expect () {
        expect="$1" &&
        shift &&
        test-parse-options "$@" >actual &&
        grep "$expect" actual
    }

and tests updated like this:

    options_expect "quiet: 3" -q -q -q

  reply	other threads:[~2016-05-06  1:27 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-30 20:03 [PATCH v15 1/7] t0040-test-parse-options.sh: fix style issues Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 2/7] test-parse-options: print quiet as integer Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 3/7] t0040-parse-options: improve test coverage Pranit Bauva
2016-05-04  8:36   ` Eric Sunshine
2016-05-05  4:46     ` Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 4/7] parse-options.c: make OPTION_COUNTUP respect "unspecified" values Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 5/7] t7507-commit-verbose: improve test coverage by testing number of diffs Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 6/7] commit: add a commit.verbose config variable Pranit Bauva
2016-04-30 20:03 ` [PATCH v15 7/7] t/t7507: tests for broken behavior of status Pranit Bauva
2016-05-02 23:07   ` Junio C Hamano
2016-05-03  3:39     ` Pranit Bauva
2016-05-03  5:12       ` Eric Sunshine
2016-05-03  6:42         ` Pranit Bauva
2016-05-03  6:49           ` Eric Sunshine
2016-05-03  9:18             ` Pranit Bauva
2016-05-03 16:17               ` Eric Sunshine
2016-05-03 16:18                 ` Pranit Bauva
2016-05-03 15:47         ` Junio C Hamano
2016-05-05  9:49 ` [PATCH v16 0/7] config commit verbose Pranit Bauva
2016-05-05  9:49   ` [PATCH v16 1/7] t0040-test-parse-options.sh: fix style issues Pranit Bauva
2016-05-05  9:49   ` [PATCH v16 2/7] test-parse-options: print quiet as integer Pranit Bauva
2016-05-05  9:49   ` [PATCH v16 3/7] t0040-parse-options: improve test coverage Pranit Bauva
2016-05-05  9:49   ` [PATCH v16 4/7] t/t7507: " Pranit Bauva
2016-05-05  9:50   ` [PATCH v16 5/7] parse-options.c: make OPTION_COUNTUP respect "unspecified" values Pranit Bauva
2016-05-05  9:50   ` [PATCH v16 6/7] t7507-commit-verbose: improve test coverage by testing number of diffs Pranit Bauva
2016-05-05  9:50   ` [PATCH v16 7/7] commit: add a commit.verbose config variable Pranit Bauva
2016-05-05 19:14     ` Junio C Hamano
2016-05-06  5:05       ` Pranit Bauva
2016-05-06  6:40         ` Pranit Bauva
2016-05-06  5:07       ` Eric Sunshine
2016-05-05 19:21   ` [PATCH v16 0/7] config commit verbose Junio C Hamano
2016-05-05 21:50     ` [PATCH 0/3] test-parse-options update Junio C Hamano
2016-05-05 21:50       ` [PATCH 1/3] test-parse-options: fix output when callback option fails Junio C Hamano
2016-05-05 21:50       ` [PATCH 2/3] test-parse-options: hold output in a strbuf Junio C Hamano
2016-05-05 21:50       ` [PATCH 3/3] test-parse-options: --expect=<string> option to simplify tests Junio C Hamano
2016-05-06  0:41         ` Stefan Beller
2016-05-06  1:27           ` Eric Sunshine [this message]
2016-05-06  2:57           ` Junio C Hamano
2016-05-06  5:51             ` Stefan Beller
2016-05-06  7:18               ` Junio C Hamano
2016-05-06 17:34               ` Junio C Hamano
2016-05-06 18:00       ` [PATCH] t0040: remove unused test helpers Junio C Hamano
2016-05-06  5:30     ` [PATCH v16 0/7] config commit verbose Eric Sunshine
2016-05-06 14:20       ` SZEDER Gábor
2016-05-06 15:33         ` Junio C Hamano
2016-05-07  5:32           ` Jeff King
2016-05-07 19:28             ` Ævar Arnfjörð Bjarmason
2016-05-08 18:48               ` Junio C Hamano
2016-05-09 14:28                 ` Jeff King
2016-05-09 16:01                   ` Junio C Hamano
     [not found]   ` <CACBZZX5ssO2EiuxR7wotGowMaPhtioaJVSDpQDUwUkv1rLJJWw@mail.gmail.com>
2016-05-06 16:16     ` Pranit Bauva
2016-05-06 19:47       ` Ævar Arnfjörð Bjarmason
2016-05-06 20:51         ` Junio C Hamano

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

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

  git send-email \
    --in-reply-to='CAPig+cQO_N=AM+YniXMKHOzvGy4JU=Sqxn+dGWuuqmc62s-qyA@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=sbeller@google.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.