Subject: Re: [PATCH 0/3] t0000 cleanups

From: Junio C Hamano <[email-masked]>
Date: Mon, 30 Dec 2013 10:30:28 -0800

Jonathan Nieder <[email-masked]> writes:

> Jeff King wrote:
>
>> When I want to debug a failing test, I often end up doing:
>>
>>   cd t
>>   ./t4107-<tab> -v -i
>>   cd tra<tab>
>>
>> The test names are long, so tab-completing on the trash directory is
>> very helpful. Lately I've noticed that there are a bunch of crufty trash
>> directories in my t/ directory, which makes my tab-completion more
>> annoying.
>
> Ah, and if I'd read this then I wouldn't have had to be confused at
> all.  Would it work to replace the commit message with something like
> this?

The third paragraph of 1/3 sufficiently covers it, no?  We could add
"It makes it less convenient to use tab completion 'cd t/tra<TAB>'
to go to the trash directory of the failed test to inspect the
situation" after "... left in the t/ directory.", though.

    Once upon a time, the test-lib library would create trash
    directories in the current working directory, unless we were
    explicitly told to put it elsewhere via --root. As a result,
    t0000 created the sub-test trash directories inside its own
    trash directory.

    However, we noticed that this did not cover all cases, since
    we would need to respect $TEST_OUTPUT_DIRECTORY even if
    --root is not given (or is relative). Commit 38b074d fixed
    this to consistently use the full path.

    As a result, trash directories used by t0000's sub-tests are now
    created in git's original test output directory rather than in our
    trash directory. Furthermore, since some of the sub-tests simulate
    failures, the trash directories do not get cleaned up, and the cruft
    is left in the t/ directory.

    We could fix this by passing a new "--root=$TRASH_DIRECTORY"
    option to the sub-test. However, we do not want the sub-tests
    to write anything at all to git's directory (e.g., they
    should not be writing to t/test-results, either, although
    this is already handled by separate code).  So the best
    solution is to simply reset $TEST_OUTPUT_DIRECTORY entirely
    in the sub-test, which covers this case, as well as any
    future ones.