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

Re: [GSoC][PATCH] t/: migrate helper/test-example-decorate to the unit testing framework

From
Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Date
Jun 3, 2024, 21:09 UTC
Message-ID
<dsdg4jeoog2awxtry64joaxt4dawwq3ajmm4pksy733vwbsvp7@fgkp7d76pp46>
In-Reply-To
<zeenwui37wk5ascgqw7kl6si7oyebn6kojidpevxuy2q4e45r4@sdxjxwn4657s>
On Mon, 03 Jun 2024, Josh Steadmon <steadmon@google.com> wrote:
Show 30 quoted lines
> On 2024.05.30 08:54, Junio C Hamano wrote:
> > Ghanshyam Thakkar <shyamthakkar001@gmail.com> writes:
> > 
> > > The latter provides much more context (we almost don't have to open
> > > t-example-decorate.c file itself in some cases to know what failed)
> > > than the former. Now, of course we can add more test_msg()s to the
> > > former to improve, but I feel that this approach of splitting them
> > > provides and improves the information provided on stdout _without_
> > > adding any of my own test_msg()s. And I think that this is a good
> > > middleground between cluttering the stdout vs providing very little
> > > context while also remaining a faithful copy of the original.
> > 
> > If so, why stop at having four, each of which has more than one step
> > that could further be split?  What's the downside?
> > 
> >     Note: Here in this review, I am not necessarily suggesting the
> >     tests in this patch to be further split into greater number of
> >     smaller helper functions.  I am primarily interested in finding
> >     out what the unit test framework can further do to help unit
> >     tests written using it (i.e., like this patch).  If using
> >     finer-grained tests gives you better diagnosis, but if it is too
> >     cumbersome to separate the tests out further, is it because the
> >     framework is inadequate in some way?  How can we improve it?
> 
> I'll try not to speak for anyone else here, but I think the test
> framework isn't causing much friction here in the decision of how to
> split the tests. [However, neither is it providing much guidance. At
> some point we should review the unit tests and see if we can extract a
> helpful style guide or best practices doc.] The setup for the cases is
> minimal and done through the main function.
Agreed about style guide/best practices doc.
Show 13 quoted lines
> I think the current split is reasonable as a first patch, as it mirrors
> the organization of the original test and makes it easier for reviewers
> to verify that it tests the same behaviors. If further simplification or
> reorganization is needed, I would like to see that as a separate patch
> on top of the more straightforward conversion.
> 
> The only part that bothers me a bit (and this is really more of a
> complaint about the framework than the patch itself) is the carryover of
> state between the different TEST() cases. We can't skip t_add and expect
> the other test cases to still pass, unfortunately. However, I don't
> think this patch needs to worry about that, since the framework doesn't
> restrict persistent state. [And we certainly don't restrict persistent
> state in the shell tests either.]

I talked about this in private with Christian, and we came to the same conclusion that having independent state would better. But seeing the original test-example-decorate, it would be a bit more boiler plate to produce the exact same checks, without relying on previous state. And seeing the lack of convention (written guideline) about independent state vs dependent, I decided to stick to having the tests rely on previous state, similar to the original, and see the mailing list response about what should be done.

Thanks.
Previous: Josh Steadmon
Message 8 of 8 in “t/: migrate helper/test-example-decorate to the unit testing framework”
  1. Ghanshyam ThakkarMay 28, 2024
  2. Junio C HamanoMay 29, 2024
  3. Christian CouderMay 30, 2024
  4. Ghanshyam ThakkarMay 30, 2024
  5. Junio C HamanoMay 30, 2024
  6. Ghanshyam ThakkarJun 3, 2024
  7. Josh SteadmonJun 3, 2024
  8. Ghanshyam ThakkarJun 3, 2024

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.