Subject: Re: t7900-*.sh tesr #5 failure

From: David Turner <[email-masked]>
Date: Thu, 05 May 2016 17:34:18 -0400

On Tue, 2016-05-03 at 22:34 +0100, Ramsay Jones wrote:
> Hi David,
> 
> Test t7900.5 fails for me, thus:
> 
>   $ ./t7900-index-helper.sh -i -v -x -d
>   
>   ...
>   
>   + test -S .git/index-helper.sock
>   + git status
>   On branch master
>   Untracked files:
>     (use "git add <file>..." to include in what will be committed)
>   
>   	err
>   
>   nothing added to commit but untracked files present (use "git add"
> to track)
>   + test -S .git/index-helper.sock
>   + grep -q . err
>   error: last command exited with $?=1
>   not ok 5 - index-helper autorun works
>   #	
>   #		rm -f .git/index-helper.sock &&
>   #		git status &&
>   #		test_path_is_missing .git/index-helper.sock &&
>   #		test_config indexhelper.autorun true &&
>   #		git status &&
>   #		test -S .git/index-helper.sock &&
>   #		git status 2>err &&
>   #		test -S .git/index-helper.sock &&
>   #		! grep -q . err &&
>   #		git index-helper --kill &&
>   #		test_config indexhelper.autorun false &&
>   #		git status &&
>   #		test_path_is_missing .git/index-helper.sock
>   #	
>   $ cd trash\ directory.t7900-index-helper/
>   $ ls
>   err  x.t
>   $ cat err
>   warning: We requested watchman support from index-helper, but it
> doesn't support it. Please use a version of git index-helper with
> watchman support.
>   $ 
> 
> [Yes, that is one long line in err!]

OK, the failure here is due to a bad check in the code -- it's intended
that index-helper work without watchman.  Will re-roll with a fix.

> [At least, this is one of the failures, I have also seen git status
> failing
> with a SIGPIPE.]

I'll add in a sig_ign on that.

> Note that I do not have the watchman libraries etc., so USE_WATCHMAN
> is
> not defined. Note also, that I had an instance of git-index-helper
> still
> running after the test failure (which I kill-ed).

I missed a test_when_finished (note that in the case of test failures
in debug mode, test_when_finished statements are not executed on
failing tests, so you would still see an index-helper in that case;
since test failures are not expected, that shouldn't be a problem).

Will fix, thanks.

> I haven't spent any time debuging this, but some questions spring to
> mind:
> 
>     - can index-helper be used without watchman support?

Yes (once I re-roll with the bug fix).

>     - why is index-helper requesting watchman support, when it was
>       built without USE_WATCHMAN being defined?

It's not; the code that checks for that request is mistakenly detecting
that it is.

>     - why is read-cache.o exporting hte verify_index and
>       write_watchman_ext symbols?

verify_index should be used in index-helper but that somehow got lost
in v3.  Will fix on reroll.
write_watchman_ext is exported because index-helper currently uses it.

>     - is index-helper any use/help without watchman support?

Yes for large indexes -- see the measurements in patch v3 (which is
earlier in the series than watchman is introduced).

>     - is '! grep -q . err' meant to determine if the err file is
>       empty (ie git status did not issue an error message)?
>       [if yes, maybe 'test_must_be_empty err &&' would read better!]

Will fix, thanks.