Re: [PATCH 0/1] contrib: Add script to show uncovered "new" lines

2018-09-12 Thread Junio C Hamano
"Derrick Stolee via GitGitGadget"  writes:

> There have been a few bugs in recent patches what would have been caught if
> the test suite covered those blocks (including a few of mine). I want to
> work towards a "sensible" amount of coverage on new topics. In my opinion,
> this means that any logic should be covered, but the 'die()' blocks in error
> cases do not need to be covered.

Nice.

> It is important to not measure the coverage of the codebase by what old code
> is not covered. To help, I created the 'contrib/coverage-diff.sh' script.
> After creating the coverage statistics at a version (say, 'topic') you can
> then run
>
> contrib/coverage-diff.sh base topic
> ...
> Using this 'git blame' output, we can quickly inspect whether the uncovered
> lines are appropriate. For instance:
> ...
> I used this approach for 'next' over 'master' and got a larger list, some of
> which I have already submitted tests to increase coverage [2] or will be
> covered by topics not in 'next' [3].
>
> Thanks, -Stolee

Thanks for working on this.


Re: [PATCH 0/1] contrib: Add script to show uncovered "new" lines

2018-09-12 Thread Ben Peart




On 9/12/2018 12:45 PM, Derrick Stolee via GitGitGadget wrote:

We have coverage targets in our Makefile for using gcov to display line
coverage based on our test suite. The way I like to do it is to run:

make coverage-test
make coverage-report



Very nice, I was unaware of the coverage test make targets.  I like the 
new report; it makes it easier to verify any new changes are actually 
tested.


 
  4. The lines in read-cache.c are part of a new block for the condition "if

 (expand_name_field)" as part of an optimization. These lines should
 probably be covered before that series is merged to 'next'. I understand
 that Ben and Duy are continuing work in this direction [1].
 


This code is only exercised when the index format is V4 but the default 
is version 2/3 [1].  To enable the test suite to use version 4 and test 
those code paths will require the addition of a new 
GIT_TEST_INDEX_VERSION environment variable.  I'll add that to my TODO list.


[1] https://git-scm.com/docs/git/2.1.0



Re: [PATCH 0/1] contrib: Add script to show uncovered "new" lines

2018-09-12 Thread Derrick Stolee

On 9/12/2018 12:45 PM, Derrick Stolee via GitGitGadget wrote:

For example, I ran this against the 'jch' branch (d3c0046)
versus 'next' (dd90340)


As another example, I ran this against the 'pu' branch (4c416a53) versus 
'jch' (d3c0046) and got the following output, submitted here without 
commentary:


builtin/bisect--helper.c
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
43) free((void *) terms->term_good);
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
162)    if (get_oid_commit(commit, &oid))
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
163)    return error(_("'%s' is not a valid commit"), 
commit);
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
164)    strbuf_addstr(&branch, commit);
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
172)    error(_("Could not check out original HEAD '%s'. 
Try "
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
174)    strbuf_release(&branch);
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
175)    argv_array_clear(&argv);
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
176)    return -1;
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
215)    error(_("Bad bisect_write argument: %s"), state);
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
216)    goto fail;
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
220)    error(_("couldn't get the oid of the rev '%s'"), rev);
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
221)    goto fail;
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
226)    goto fail;
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
230)    error_errno(_("couldn't open the file '%s'"), 
git_path_bisect_log());
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 
231)    goto fail;

0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 242)fail:
0b1f0fd910c (Pranit Bauva   2017-10-27 15:06:37 + 243)    retval 
= -1;
a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 
323)    yesno = git_prompt(_("Are you sure [Y/n]? "), PROMPT_ECHO);
a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 
324)    if (starts_with(yesno, "N") || starts_with(yesno, "n"))
a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 
327)    goto finish;
a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 
336)    error(_("You need to start by \"git bisect start\". You "
a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 
341)    goto fail;

a919f328ba3 (Pranit Bauva   2017-10-27 15:06:37 + 345)fail:
35f7ca528ae (Pranit Bauva   2017-10-27 15:06:37 + 
387)    return error(_("--bisect-term requires exactly one 
argument"));
35f7ca528ae (Pranit Bauva   2017-10-27 15:06:37 + 
400)    error(_("BUG: invalid argument %s for 'git 
bisect terms'.\n"
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
416)    return -1;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
419)    goto fail;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
423)    goto fail;

5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 427)fail:
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 428)    retval 
= -1;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
466)    no_checkout = 1;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
488) !one_of(arg, "--term-good", "--term-bad", NULL)) {
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
489)    return error(_("unrecognised option: '%s'"), arg);
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
523)    if (get_oid("HEAD", &head_oid))
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
524)    return error(_("Bad HEAD - I need a HEAD"));
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
539)    error(_("checking out '%s' failed. Try 
'git "
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
559)    return error(_("won't bisect on 
cg-seek'ed tree"));
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
562)    return error(_("Bad HEAD - strange symbolic ref"));
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
570)    return -1;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
588)    goto fail;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
598)    goto fail;
5dfeec316b8 (Pranit Bauva   2017-10-27 15:06:37 + 
606)    goto fail;
3d3237b0e6b (Pranit Bauva   2017-10-27 15:06:37 + 
686)    return error(_("--bisect-reset requires either 
no argument or