Re: TAP output format in pg_regress

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Andres Freund <andres@anarazel.de>
Cc: Nikolay Shaplov <dhyan@nataraj.su>, Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>, Andrew Dunstan <andrew@dunslane.net>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Date: 2022-11-24T21:20:01Z
Lists: pgsql-hackers

Attachments

> On 24 Nov 2022, at 20:32, Andres Freund <andres@anarazel.de> wrote:
> 
> On November 24, 2022 11:07:43 AM PST, Daniel Gustafsson <daniel@yesql.se> wrote:
>>> On 24 Nov 2022, at 18:07, Nikolay Shaplov <dhyan@nataraj.su> wrote:
>> One option could be to redefine bail() to take the exit function as a parameter
>> and have the caller pass the preferred exit handler.
>> 
>> -bail_out(bool non_rec, const char *fmt,...)
>> +bail(void (*exit_func)(int), const char *fmt,...)
>> 
>> The callsites would then look like the below, which puts a reference to the
>> actual exit handler used in the code where it is called.
> 
> I'd just rename _bail to bail_noatexit().

That's probably the best option, done in the attached along with the comment
fixup to mention the recursion issue.

>>> This magic spell "...%-5i %s%-*s %8.0f ms\n" is too dark to repeat it even two 
>>> times. I understand problems with spaces... But may be it would be better 
>>> somehow narrow it to one ugly print... Print "ok %-5i    "|"not ok %-5i" to 
>>> buffer first, and then have one "%s%-*s %8.0f ms%s\n" print or something like 
>>> that...
>> 
>> I'm not convinced that this printf format is that hard to read (which may well
>> be attributed to Stockholm Syndrome), and I do think that breaking it up and
>> adding more code to print the line will make it less readable instead.
> 
> I don't think it's terrible either. I do think it'd also be ok to switch between ok / not ok within a single printf, making it easier to keep them in sync.

I made it into a single printf to see what it would look like, with some
additional comments to make it more readable (I'm not a fan of where pgindent
moves those but..).

--
Daniel Gustafsson		https://vmware.com/

Commits

  1. pg_regress: Emit TAP compliant output

  2. Consider a failed process as a failed test in pg_regress

  3. Avoid reference to nonexistent array element in ExecInitAgg().