Subject: Re: debugging git tests, was: Re: [PATCH v4 2/8] t5520: test no merge candidates cases

From: Jeff King <[email-masked]>
Date: Fri, 5 Jun 2015 06:44:41 -0400

On Tue, May 19, 2015 at 03:29:23PM +0200, Johannes Schindelin wrote:

> On 2015-05-18 20:55, Jeff King wrote:
> 
> > As a side note, I've also considered better support for running the
> > debugger on git commands inside a test (right now, I usually stick a
> > "gdb --args" in the pipeline, but you have to remember to run with "-v",
> > and to redirect stdin appropriately). Do other people have this
> > annoyance, too?
> 
> Yes, I have that annoyance, and I usually want to debug one very specific Git call in that script. Therefore, I made this patch:
> 
> https://github.com/git-for-windows/git/commit/0f50fd723beb5d27d2d799ef3a0cfc0b0bbd80a8
> 
> It really served me well during the past four months of Git for Windows 2.x work. Of course I also had to avoid the redirection:
> 
> https://github.com/git-for-windows/git/commit/d27cb6e0572475582677724545a71755d171ea76
> 
> So what I do these days is to run the failing test with `TEST_NO_REDIRECT=1` and with the Git call I want to debug prefixed with `TEST_GDB_GIT=1`.

Thanks for sharing this (I stuck it on my "to read" list and didn't get
to it until today).

This is definitely the direction I'd like to go in. I think it would be
cool to add in a test-harness option enable TEST_GIT_GDB for a specific
test. So something like:

  ./t1234-foo.sh --gdb=8

to just enable it for a particular test (of course some test snippets
run multiple git invocations, but in practice I think it is few enough
that you could just ask gdb to run to completion until you hit the
invocation you want).

I don't have any code to share yet. I'm still at the point of collecting
ideas like this, which I'll rage-implement next time I have to do a lot
of debugging. :)

-Peff