git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Test failures in t4034

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 3, 2012, 01:53 UTC
Message-ID
<7vehmjg9di.fsf@alter.siamese.dyndns.org>
In-Reply-To
<5042494D.9040401@ramsay1.demon.co.uk>
Ramsay Jones <ramsay@ramsay1.demon.co.uk> writes:
Show 6 quoted lines
> Yes, there was a net increase in the line count when I introduced
> die(), but the main program flow was less cluttered by error handling.
> The net result looked much better, so I thought it was worth it.
>
> What may not be too obvious, however, is that test-regex.c was written
> to be independent of git.

That part I was very aware of actually; it it is a bit tricky to tell what the right thing to do, though. Your test itself needs to be pretty much portable without the portability help you would get git-compat-util.h, but the point of this kind of test is to tell if you want to define preprocessor macros that may affect the behaviour of such compatibility layer ;-)

> Given that I'm now building it as part of git, I should have simply
> #included <git-compat-util.h> and used the die() routine from libgit.a
> (since I'm now *relying* on test-regex being linked with libgit.a).
OK.
Show 23 quoted lines
>>> +int main(int argc, char **argv)
>>> +{
>>> +	char *pat = "[^={} \t]+";
>>> +	char *str = "={}\nfred";
>>> +	regex_t r;
>>> +	regmatch_t m[1];
>>> +
>>> +	if (regcomp(&r, pat, REG_EXTENDED | REG_NEWLINE))
>>> +		die("failed regcomp() for pattern '%s'", pat);
>>> +	if (regexec(&r, str, 1, m, 0))
>>> +		die("no match of pattern '%s' to string '%s'", pat, str);
>>> +
>>> +	/* http://sourceware.org/bugzilla/show_bug.cgi?id=3957  */
>>> +	if (m[0].rm_so == 3) /* matches '\n' when it should not */
>>> +		exit(1);
>> 
>> This could be the third call site of die() that tells the user to
>> build with NO_REGEX=1.  Then "cd t && sh t0070-fundamental.sh -i -v" would
>> give that message directly to the user.
>
> Hmm, even without "-i -v", it's *very* clear what is going on, but sure
> it wouldn't hurt either. (Also, I wanted to be able to distinguish an exit
> via die() from a "test failed" error return).
OK.
Thanks.
Previous: Ramsay JonesNext: Junio C Hamano
Message 9 of 10 in “Test failures in t4034”
  1. Brian GernhardtAug 18, 2012
  2. Junio C HamanoAug 19, 2012
  3. Ramsay JonesAug 19, 2012
  4. Johannes SixtAug 19, 2012
  5. Junio C HamanoAug 20, 2012
  6. Ramsay JonesAug 21, 2012
  7. Junio C HamanoAug 21, 2012
  8. Ramsay JonesSep 1, 2012
  9. Junio C HamanoSep 3, 2012
  10. Junio C HamanoAug 19, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.