Thread: [PATCH] Add tests for psql tab completion

[PATCH] Add tests for psql tab completion

From
Matheus Alcantara
Date:
Hi hackers.

I'm attaching a patch that add some new test cases for tab completion of psql.

This is my first patch that I'm sending here so let me know if I'm doing something wrong.

--
Matheus Alcantara
Attachment

Re: [PATCH] Add tests for psql tab completion

From
Tom Lane
Date:
Matheus Alcantara <mths.dev@pm.me> writes:
> I'm attaching a patch that add some new test cases for tab completion of psql.

What exactly is the motivation for these particular tests?

I believe that most of tab-complete.c is already covered, outside
of the giant if-else chain at the heart of psql_completion().
It's hard to summon interest in trying to cover every branch of
that chain; but if we're to add coverage of just a few more,
which ones and why?  The ones you've chosen to hit in this
patch don't seem especially interesting.

            regards, tom lane



Re: [PATCH] Add tests for psql tab completion

From
Tom Lane
Date:
[ Please keep the mailing list cc'd ]

Matheus Alcantara <mths.dev@pm.me> writes:
> On Monday, February 14th, 2022 at 17:01, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> What exactly is the motivation for these particular tests?

> I was studying the source code and looking for projects that I could contribute so I decided
> to start with tests, so I ran coverage and started with files that had little coverage, realized
> that psql tab completion ones had little coverage so I decided to add some tests, I tried to
> start with the simplest.

> I understand that the patch may not be as much of a need, I just wanted to try and help with something.
> Do you think there would be other tests that should be done? I would like to try to contribute.

There's certainly lots of places that could use more test coverage.
But I think that making a meaningful difference in tab-complete.c
would require writing test cases to hit most of the if-else branches,
which doesn't seem very profitable either in terms of test-writing
effort or in terms of the cycles that'd be spent on running those
tests forevermore.  We try to be thrifty about how much work is
done by check-world, because it's a real advantage for development
that that takes a small number of minutes and not hours.  I'm not
really seeing that covering more of tab-complete would buy much.

As for areas that *do* need more coverage, the first one that
I come across in looking through the coverage report is GIST
index build: gistbuild.c is only showing 45% coverage, and
gistbuildbuffers.c a fat zero [1].  We've looked at that before [2]
but not made much progress on developing an adequately cheap test
case.  Maybe you could pick up where that thread left off?  Or if that
doesn't seem interesting to you, there's lots of other possibilities.
I'd suggest getting some buy-in from this list on what to work on
before you start, though.

            regards, tom lane

[1] https://coverage.postgresql.org/src/backend/access/gist/index.html

[2] https://www.postgresql.org/message-id/flat/10261.1588705157%40sss.pgh.pa.us#46b998e6585f0bf0fd7b75703b43decb