From: Fabian Stelzer <fs@gigacodes.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Adam Dinwoodie <adam@dinwoodie.org>, Jeff King <peff@peff.net>,
git@vger.kernel.org
Subject: Re: [RFC PATCH] lib-test: show failed prereq was Re: [PATCH] t/lib-git.sh: fix ACL-related permissions failure
Date: Sat, 13 Nov 2021 15:43:51 +0100 [thread overview]
Message-ID: <20211113144351.3rsbogowax36iatz@fs> (raw)
In-Reply-To: <xmqqk0hcmvql.fsf@gitster.g>
On 12.11.2021 22:10, Junio C Hamano wrote:
>Fabian Stelzer <fs@gigacodes.de> writes:
>
>> As for the general prereq issue i ran into that as well during
>> development. When you depend on other patches / a specific version of
>> ssh-keygen for git I always have to remember to set the path correctly
>> or the tests might silently be ignored by the missing prereq. Usually
>> not a problem for single test runs, but when i run the full suite before
>> sending something.
>
>This will become a handy tool for everybody, not just for those on
>minority and/or exotic platforms. When someone prepares a plain
>vanilla fresh box and build Git from the source for the first time
>on the box, it is fairly easy to end up with a castrated version of
>Git, without knowing what is missing. This is especially so when
>autoconf is used, but even without using autoconf, if you do not
>have libsvn Perl modules, svn binary, or cvs binary installed, our
>tests treat it as a signal that you are uninterested in SVN or CVS
>interop tests, rather than flagging it as an error. Being able to
>see what is automatically skipped would be a good way to sanity
>check what you actually have vs what you thought you had. For
>example, I just found out that I am still running CVS interop tests
>in my installation.
>
>> Subject: [RFC PATCH 1/2] test-lib: show failed prereq summary
>>
>> Add failed prereqs to the test results.
>> Aggregate and then show them with the totals.
>>
>
>> + sed -e 's/ //g' -e 's/^,//' -e 's/,$//' -e 's/,/\n/g' \
>> + | sort | uniq | paste -s -d ',')
>
>I suspect you are making more work than necessary for yourself by
>choosing to use SP when accumulating values in $missing_prereq
>variable. If you used comma instead, "tr -s ','" here will make a
>neat sequence of tokens separated with one comma each, possibly with
>one extra comma at the beginning and at the end if some $value were
>empty.
You are right. I'll change it to ',' as well. It makes the following
unique logic easier.
>
>Would something like this work better, I wonder?
>
> unique_missing_prereq=$(
> echo "$missing_prereq" |
> tr -s "," "\012" |
> grep -v "^$" |
> sort -u |
> paste -s -d ,
> )
>
Ok. Took me a moment to understand since i didn't realize tr did the
newline expansion as well. But yeah, this is nicer.
>> + printf "\nmissing prereq: $unique_missing_prereq\n\n"
>
>I think it is possible that a $missing_prereq that is not empty
>still yields an empty $unique_missing_prereq. If $value read from
>the files all are empty strings, $missing_prereq will have many SP
>(or comma if you take my earlier suggestion), but no actual prereq
>will remain after the "unique" thing is computed. I think this
>printf should be shown only when $unique_missing_prereq is not
>empty.
True. I'll add an if.
>> + test_missing_prereq="$missing_prereq,$test_missing_prereq"
>
>OK. We accumulate in $test_missing_prereq what is in missing_prereq
>(assigned in test_have_prereq check). I notice that over there, it
>takes pains to make sure it uses only one comma between each token,
>without excess leading or trailing comma, but we are not taking the
>same care here. It would be OK as we'd run "tr -s ," on the side
>that reads the output, but looks somewhat sloppy.
Ok, i'll use the same logic as in the test_have_prereq func here as
well.
>>
>> From d13d4c8ccbd832e1d62044b18b8b771f6586ee2a Mon Sep 17 00:00:00 2001
>> From: Fabian Stelzer <fs@gigacodes.de>
>> Date: Fri, 12 Nov 2021 16:43:18 +0100
>> Subject: [RFC PATCH 2/2] test-lib: introduce required prereq for test runs
>>
>> Allows setting GIT_TEST_REQUIRE_PREREQ to a number of prereqs that must
>> succeed for this run. Otherwise the test run will abort.
>
>I am not quite sure what the sentence means, so let me read the code
>first before commenting.
>
>At this point, we know $prerequisite we are looking at (note that
>what is written as a guard for a particular test might be negated,
>e.g. "test_expect_success !WINDOWS 'title' 'code'" that runs on
>non-WINDOWS platforms, but here the negation has been stripped away,
>so the test says "I require to be on non-Windows", but this new code
>only knows that WINDOWS prereq has failed)
I will write some clearer commit messages and then re-send as a normal
patch.
>
>> + if ! test -z $GIT_TEST_REQUIRE_PREREQ
>
>Why not
>
> if test -n "$GIT_TEST_REQUIRE_PREREQ"
>
>?
Obviously, yes...
>
>
>> + then
>> + case ",$GIT_TEST_REQUIRE_PREREQ," in
>> + *,$prerequisite,*)
>> + error "required prereq $prerequisite failed"
>> + ;;
>
>So GIT_TEST_REQUIRE_PREREQ could be set to a comma separated list of
>prerequisites, e.g. WINDOWS,PDP11,CRAY, and we see if $prerequisite
>we have just found out is missing is any one of them. And abort the
>test if that is true. Makes sense, except for the negation. You
>want to be able to say GIT_TEST_REQUIRE_PREREQ=!WINDOWS,PERL to
>require that you are not on Windows and have PERL, for example.
>
>Perhaps this new block should be moved a bit further down in the
>code, i.e.
Thanks, yes i did not notice the negation issue.
>Thanks for working on this.
>Looking good.
Thanks for your review.
next prev parent reply other threads:[~2021-11-13 14:44 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-04 19:25 [PATCH] t/lib-git.sh: fix ACL-related permissions failure Adam Dinwoodie
2021-11-04 19:49 ` Junio C Hamano
2021-11-04 20:03 ` Junio C Hamano
2021-11-04 22:36 ` Fabian Stelzer
2021-11-05 7:30 ` Junio C Hamano
2021-11-05 11:25 ` Adam Dinwoodie
2021-11-05 12:06 ` Jeff King
2021-11-05 12:13 ` Fabian Stelzer
2021-11-05 18:04 ` Junio C Hamano
2021-11-05 18:49 ` Adam Dinwoodie
2021-11-05 19:11 ` Junio C Hamano
2021-11-05 19:24 ` Adam Dinwoodie
2021-11-05 21:00 ` Carlo Arenas
2021-11-12 16:01 ` [RFC PATCH] lib-test: show failed prereq was " Fabian Stelzer
2021-11-13 6:10 ` Junio C Hamano
2021-11-13 14:43 ` Fabian Stelzer [this message]
2021-11-05 23:53 ` Jeff King
2021-11-05 23:39 ` Jeff King
2021-11-05 18:14 ` Junio C Hamano
2021-11-04 20:09 ` Ramsay Jones
2021-11-05 11:47 ` Adam Dinwoodie
2021-11-05 21:44 ` Ramsay Jones
2021-11-05 19:31 ` [PATCH v2] " Adam Dinwoodie
2021-11-05 21:03 ` Junio C Hamano
2021-11-08 16:40 ` Kerry, Richard
2021-11-08 19:14 ` Junio C Hamano
2021-11-09 17:23 ` Kerry, Richard
2021-11-09 18:19 ` 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
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=20211113144351.3rsbogowax36iatz@fs \
--to=fs@gigacodes.de \
--cc=adam@dinwoodie.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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).