Hello Tom,
> I took a look at this. I have no quibble with the proposed feature,
> and the implementation is certainly simple enough. But I'm unconvinced
> about the proposed test scaffolding. Spinning up a new PG instance is a
> *hell* of a lot of overhead to pay for testing something that could be
> tested as per attached.
> Admittedly, the attached doesn't positively prove which pipe each output
> string went down, but that does not strike me as a concern large enough
> to justify adding a TAP test for.
Sure.
The point is that there would be at least *one* TAP tests so that many
other features of psql, although not all, can be tested. I have been
reviewing quite a few patches without tests because of this lack of
infrastructure, and no one patch is ever going to justify a TAP test on
its own. It has to start somewhere. Currently psql coverage is abysmal,
around 40% of lines & functions are called by the whole non regression
tests, despite the hundreds of psql-relying tests. Pg is around 80%
coverage overall.
Basically, I really thing that one psql dedicated TAP test should be
added, not for \warn per se, but for other features.
> I'd be happier about adding TAP infrastructure if it looked like it'd
> be usable to test some of the psql areas that are unreachable by the
> existing test methodology, particularly tab-complete.c and prompt.c.
> But I don't see anything here that looks like it'll work for that.
The tab complete and prompt are special interactive cases and probably
require special infrastructure to make a test believe it is running
against a tty while it is not. The point of this proposal is not to
address these special needs, but to lay a basic infra.
> I don't like what you did to command_checks_all,
Yeah, probably my fault, not David.
> either --- it could hardly say "bolted on after the fact" more clearly
> if you'd written that in <blink><red> text. If we need an input-stream
> argument, let's just add it in a rational place and adjust the callers.
> There aren't that many of 'em, nor has the subroutine been around all
> that long.
I wanted to avoid breaking the function signature of it is used by some
external packages. Not caring is an option.
--
Fabien.