git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Git Test Coverage Report (Thursday, June 6 2019)
@ 2019-06-07  1:19 Derrick Stolee
  2019-06-07 14:43 ` Derrick Stolee
  2019-06-08 22:15 ` Philip Oakley
  0 siblings, 2 replies; 3+ messages in thread
From: Derrick Stolee @ 2019-06-07  1:19 UTC (permalink / raw)
  To: git@vger.kernel.org

Here is today's test coverage report.

Thanks,
-Stolee

[1] https://derrickstolee.github.io/git-test-coverage/reports/2019-06-06.htm
[2] https://derrickstolee.github.io/git-test-coverage/reports/2019-06-06.txt

---

pu	4f91bbec8a3cc2fff435fb3dbb0dfa5f9d223141
jch	e1895a3c3b1fef6d1bc80251d09598e219d3908d
next	ee3066bb6536c68f973b3c0ffaaa13f4bfda5ea3
master	74583d89127e21255c12dd3c8a3bf60b497d7d03
master@{1}	aa25c82427ae70aebf3b8f970f2afd54e9a2a8c6


Uncovered code in 'pu' not in 'jch'
--------------------------------------------------------

blame.c
170072f9 846)     (result[i] >= most_certain_line_a ||
170072f9 847)      second_best_result[i] >= most_certain_line_a)) {
170072f9 848) certainties[i] = CERTAINTY_NOT_CALCULATED;
170072f9 951) max_search_distance_b = 0;
1fc73384 998) return;
8934ac8c 1190)     ent->ignored == next->ignored &&
8934ac8c 1191)     ent->unblamable == next->unblamable) {
43885768 1607) continue;
ae3f36de 2425) continue;

builtin/blame.c

builtin/cat-file.c

builtin/fetch-pack.c

builtin/pack-objects.c

builtin/remote.c
f39a9c65 1551) die(_("--save-to-push cannot be used with other options"));
f39a9c65 1575) die(_("--save-to-push can only be used when only one url is defined"));

fetch-pack.c

http-fetch.c

http.c
b472070f 2302) target ? hash_to_hex(target->hash) : base_url,

oidset.c

promisor-remote.c
0ba08c05 25) die(_("Remote with no URL"));
54248706 61) warning(_("promisor remote name cannot begin with '/': %s"),
54248706 63) return NULL;
7bdf0926 93) previous->next = r->next;
7b6e1b04 108) return git_config_string(&core_partial_clone_filter_default,
b21a55f3 139) return 0;
dcc8b4e9 202) static int remove_fetched_oids(struct object_id **oids, int oid_nr, int to_free)
dcc8b4e9 204) int i, missing_nr = 0;
dcc8b4e9 205) int *missing = xcalloc(oid_nr, sizeof(*missing));
dcc8b4e9 206) struct object_id *old_oids = *oids;
dcc8b4e9 208) int old_fetch_if_missing = fetch_if_missing;
dcc8b4e9 210) fetch_if_missing = 0;
dcc8b4e9 212) for (i = 0; i < oid_nr; i++)
dcc8b4e9 213) if (oid_object_info_extended(the_repository, &old_oids[i], NULL, 0)) {
dcc8b4e9 214) missing[i] = 1;
dcc8b4e9 215) missing_nr++;
dcc8b4e9 218) fetch_if_missing = old_fetch_if_missing;
dcc8b4e9 220) if (missing_nr) {
dcc8b4e9 221) int j = 0;
dcc8b4e9 222) new_oids = xcalloc(missing_nr, sizeof(*new_oids));
dcc8b4e9 223) for (i = 0; i < oid_nr; i++)
dcc8b4e9 224) if (missing[i])
dcc8b4e9 225) oidcpy(&new_oids[j++], &old_oids[i]);
dcc8b4e9 226) *oids = new_oids;
dcc8b4e9 227) if (to_free)
dcc8b4e9 228) free(old_oids);
dcc8b4e9 231) free(missing);
dcc8b4e9 233) return missing_nr;
dcc8b4e9 248) if (missing_nr == 1)
dcc8b4e9 249) continue;
dcc8b4e9 250) missing_nr = remove_fetched_oids(&missing_oids, missing_nr, to_free);
dcc8b4e9 251) if (missing_nr) {
dcc8b4e9 252) to_free = 1;
dcc8b4e9 253) continue;
dcc8b4e9 261) free(missing_oids);

protocol.c

remote-curl.c

upload-pack.c
a8d662e3 130) return readsz;
820a5361 149) BUG("packfile_uris requires sideband-all");
a8d662e3 355) send_client_data(1, output_state.buffer, output_state.used);
820a5361 1386) string_list_clear(&data->uri_protocols, 0);

wrapper.c

Commits introducting uncovered code:
Barret Rhoden	1fc73384 blame: optionally track line fingerprints during fill_blame_origin()
Barret Rhoden	8934ac8c blame: add config options for the output of ignored or unblamable lines
Barret Rhoden	43885768 blame: use the fingerprint heuristic to match ignored lines
Barret Rhoden	ae3f36de blame: add the ability to ignore commits and their changes
Christian Couder	dcc8b4e9 promisor-remote: implement promisor_remote_get_direct()
Christian Couder	b21a55f3 promisor-remote: parse remote.*.partialclonefilter
Christian Couder	7bdf0926 promisor-remote: use repository_format_partial_clone
Christian Couder	0ba08c05 Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
Christian Couder	54248706 Add initial support for many promisor remotes
Christian Couder	7b6e1b04 Move core_partial_clone_filter_default to promisor-remote.c
Denton Liu	f39a9c65 remote: add --save-to-push option to git remote set-url
Jonathan Tan	a8d662e3 upload-pack: refactor reading of pack-objects out
Jonathan Tan	820a5361 upload-pack: send part of packfile response as uri
Junio C Hamano	b472070f Merge branch 'jt/fetch-cdn-offload' into pu
Michael Platings	170072f9 blame: add a fingerprint heuristic to match ignored lines


Uncovered code in 'jch' not in 'next'
--------------------------------------------------------

builtin/branch.c
1fde99cf 841) die(_("The -a, and -r, options to 'git branch' do not take a branch name.\n"

builtin/checkout.c

builtin/commit.c

builtin/gc.c

builtin/rebase.c
d559f502 759) ret = error(_("could not remove '%s'"),
526c03b5 1272) goto done;
10572de1 1288) goto done;
d559f502 1675) error(_("could not remove '%s'"),

commit-graph.c
a53af50b 269) chunk_repeated = 1;
a53af50b 339) warning(_("commit-graph has no base graphs chunk"));
a53af50b 340) return 0;
cd556367 344) n--;
a53af50b 346) if (!oideq(&oids[n], &cur_g->oid) ||
a53af50b 347)     !hasheq(oids[n].hash, g->chunk_base_graphs + g->hash_len * n)) {
a53af50b 348) warning(_("commit-graph chain does not match"));
a53af50b 349) return 0;
cd556367 353) cur_g = cur_g->base_graph;
cd556367 380) free(chain_name);
cd556367 381) return NULL;
cd556367 388) return NULL;
cd556367 396) warning(_("invalid commit-graph chain: line '%s' not a hash"),
cd556367 398) valid = 0;
cd556367 399) break;
c6b73769 414) valid = 0;
2d06258b 531) BUG("NULL commit-graph");
2d06258b 537) BUG("position %d is beyond the scope of this commit-graph (%d local + %d base commits)",
2d06258b 598) BUG("position %d is beyond the scope of this commit-graph (%d local + %d base commits)",
4ece4fc1 945) if (find_commit_in_graph(parent->item,
4ece4fc1 948) edge_value = pos;
4ece4fc1 1043) continue;
d83160e8 1165) error(_("error opening index for %s"), packname.buf);
d83160e8 1166) return 1;
63a8be62 1205) continue;
93ba1867 1228) display_progress(ctx->progress, ctx->approx_nr_objects);
4ece4fc1 1317) error(_("failed to write correct number of base graph ids"));
4ece4fc1 1318) return -1;
8520d7fc 1350) error(_("unable to create leading directories of %s"),
8520d7fc 1352) return errno;
4ece4fc1 1362) error(_("unable to create '%s'"), ctx->graph_name);
4ece4fc1 1363) return -1;
4ece4fc1 1437) return -1;
4ece4fc1 1463) error(_("unable to open commit-graph chain file"));
4ece4fc1 1464) return -1;
da09c6fe 1475) error(_("failed to rename base commit-graph file"));
4ece4fc1 1495) error(_("failed to rename temporary commit-graph file"));
4ece4fc1 1496) return -1;
00a8cb54 1523)     (max_commits && num_commits > max_commits))) {
c6b73769 1525) break;
c6b73769 1540) ctx->num_commit_graphs_after = 1;
c6b73769 1541) ctx->new_base_graph = NULL;
0e2ec504 1617) duplicates++;
0e2ec504 1620) ctx->commits.list[last_distinct + 1] = ctx->commits.list[i];
0e2ec504 1628) ctx->num_extra_edges += num_parents - 2;
00a8cb54 1788) ctx->oids.alloc = split_opts->max_commits;
efeb229e 1824) error(_("the commit graph format cannot write %d commits"), count_distinct);
efeb229e 1825) res = 1;
efeb229e 1826) goto cleanup;
efeb229e 1835) error(_("too many commits to write graph"));
efeb229e 1836) res = 1;
efeb229e 1837) goto cleanup;

config.c
07b2c0ea 283) return 0;

read-cache.c
ee70c128 1723) if (advice_unknown_index_extension) {
ee70c128 1724) warning(_("ignoring optional %.4s index extension"), ext);
ee70c128 1725) advise(_("This is likely due to the file having been written by a newer\n"

ref-filter.c
2582083f 93) keydata_aka_refname ? keydata_aka_refname : k->wt->head_ref);

sequencer.c
37e9ee5c 293) ret = -1;
37e9ee5c 311) ret = error(_("could not remove '%s'"), buf.buf);

Commits introducting uncovered code:
Denton Liu	07b2c0ea config: learn the "onbranch:" includeIf condition
Denton Liu	526c03b5 rebase: refactor can_fast_forward into goto tower
Denton Liu	10572de1 rebase: fast-forward --onto in more cases
Derrick Stolee	0e2ec504 commit-graph: merge commit-graph chains
Derrick Stolee	efeb229e commit-graph: return with errors during write
Derrick Stolee	00a8cb54 commit-graph: create options for split files
Derrick Stolee	da09c6fe commit-graph: add --split option to builtin
Derrick Stolee	8520d7fc commit-graph: extract write_commit_graph_file()
Derrick Stolee	63a8be62 commit-graph: extract fill_oids_from_commit_hex()
Derrick Stolee	93ba1867 commit-graph: extract fill_oids_from_all_packs()
Derrick Stolee	4ece4fc1 commit-graph: write commit-graph chains
Derrick Stolee	2d06258b commit-graph: prepare for commit-graph chains
Derrick Stolee	c6b73769 commit-graph: allow cross-alternate chains
Derrick Stolee	cd556367 commit-graph: load commit-graph chains
Derrick Stolee	a53af50b commit-graph: add base graphs chunk
Derrick Stolee	d83160e8 commit-graph: extract fill_oids_from_packs()
Jonathan Nieder	ee70c128 index: offer advice for unknown index extensions
Nickolai Belakovski	2582083f ref-filter: add worktreepath atom
Philip Oakley	1fde99cf doc branch: provide examples for listing remote tracking branches
Phillip Wood	37e9ee5c sequencer: return errors from sequencer_remove_state()
Phillip Wood	d559f502 rebase --abort/--quit: cleanup refs/rewritten


Uncovered code in 'next' not in 'master'
--------------------------------------------------------

builtin/am.c
97387c8b 1662) die("unable to read from stdin; aborting");
6e7baf24 2336) die(_("interactive mode requires patches on the command line"));

builtin/bisect--helper.c
7877ac3d 574) retval = error(_("invalid ref: '%s'"), start_head.buf);
7877ac3d 575) goto finish;

builtin/fast-export.c
e80001f8 81) static int parse_opt_reencode_mode(const struct option *opt,
e80001f8 84) if (unset) {
e80001f8 85) reencode_mode = REENCODE_ABORT;
e80001f8 86) return 0;
e80001f8 89) switch (git_parse_maybe_bool(arg)) {
e80001f8 91) reencode_mode = REENCODE_NO;
e80001f8 92) break;
e80001f8 94) reencode_mode = REENCODE_YES;
e80001f8 95) break;
e80001f8 97) if (!strcasecmp(arg, "abort"))
e80001f8 98) reencode_mode = REENCODE_ABORT;
e80001f8 100) return error("Unknown reencoding mode: %s", arg);
e80001f8 103) return 0;
e80001f8 665) switch(reencode_mode) {
e80001f8 667) reencoded = reencode_string(message, "UTF-8", encoding);
e80001f8 668) break;
e80001f8 670) break;
e80001f8 672) die("Encountered commit-specific encoding %s in commit "
e80001f8 674)     encoding, oid_to_hex(&commit->object.oid));
ccbfc96d 686) printf("encoding %s\n", encoding);

builtin/index-pack.c
8a30a1ef 1365) continue;

builtin/log.c
13cdf780 873) return 0;

builtin/merge.c
f3f8311e 1290) usage_msg_opt(_("--quit expects no arguments"),

builtin/worktree.c
1de16aec 297) BUG("How come '%s' becomes empty after sanitization?", sb.buf);

builtin/write-tree.c
76a7bc09 53) die("%s: prefix %s not found", me, tree_prefix);

fast-import.c
3edfcc65 2612) read_next_command();
3edfcc65 2679) strbuf_addf(&new_data,

grep.c
de99eb0c 1784) BUG("grep call which could print a name requires "

list-objects-filter-options.c
5c03bc8b 94) strbuf_addf(errbuf, _("invalid filter-spec '%s'"), arg);

read-cache.c
7bd9631b 2201) src_offset += load_cache_entries_threaded(istate, mmap, mmap_size, nr_threads, ieot);

refs.c
1de16aec 111) sanitized->buf[sanitized->len-1] = '-';
1de16aec 170) if (sanitized)
1de16aec 171) strbuf_addch(sanitized, '-');
1de16aec 173) return -1;
1de16aec 178) strbuf_complete(sanitized, '/');
1de16aec 215) BUG("sanitizing refname '%s' check returned error", refname);

server-info.c
f4f476b6 110) ret = -1;
f4f476b6 111) goto out;
f4f476b6 123) goto out;
f4f476b6 125) goto out;
f4f476b6 134) if (uic.cur_fp)
f4f476b6 135) fclose(uic.cur_fp);

Commits introducting uncovered code:
Denton Liu	13cdf780 format-patch: teach format.notes config option
Elijah Newren	e80001f8 fast-export: do automatic reencoding of commit messages only if requested
Elijah Newren	ccbfc96d fast-export: avoid stripping encoding header if we cannot reencode
Elijah Newren	3edfcc65 fast-import: support 'encoding' commit header
Emily Shaffer	de99eb0c grep: fail if call could output and name is null
Eric Wong	f4f476b6 update-server-info: avoid needless overwrites
Jeff King	97387c8b am: read interactive input from stdin
Jeff King	6e7baf24 am: drop tty requirement for --interactive
Jeff King	76a7bc09 cmd_{read,write}_tree: rename "unused" variable that is used
Jeff King	7bd9631b read-cache: drop unused parameter from threaded load
Johannes Schindelin	7877ac3d bisect--helper: verify HEAD could be parsed before continuing
Jonathan Tan	8a30a1ef index-pack: prefetch missing REF_DELTA bases
Matthew DeVore	5c03bc8b list-objects-filter-options: error is localizeable
Nguyễn Thái Ngọc Duy	f3f8311e merge: add --quit
Nguyễn Thái Ngọc Duy	1de16aec worktree add: sanitize worktree names


Uncovered code in 'master' not in 'master@{1}'
--------------------------------------------------------

builtin/rebase.c
4c785c0e 1206) opts->flags &= ~REBASE_DIFFSTAT;

diff.c
8ef05193 5217) return error(_("%s expects a numerical value"), "--unified");

parse-options-cb.c
f7e68a08 20) return error(_("option `%s' expects a numerical value"),

parse-options.c
f7e68a08 199) return error(_("%s expects a numerical value"),

progress.c
1aed1a5f 131)     cols - progress->title_len - 1 : 0;

remote-curl.c
8a1569d6 1120) die(_("protocol error: expected sha/ref, got '%s'"), p);
8a1569d6 1126) die(_("protocol error: expected sha/ref, got '%s'"), p);

trace2/tr2_tls.c
5fdae9d3 87) return pthread_getspecific(tr2tls_key) == tr2tls_thread_main;

Commits introducting uncovered code:
Jeff Hostetler	5fdae9d3 trace2: fix tracing when NO_PTHREADS is defined
Jiang Xin	8a1569d6 i18n: fix typos found during l10n for git 2.22.0
Johannes Schindelin	4c785c0e rebase: replace incorrect logical negation by correct bitwise one
Nguyễn Thái Ngọc Duy	8ef05193 diff-parseopt: restore -U (no argument) behavior
Nguyễn Thái Ngọc Duy	f7e68a08 parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
SZEDER Gábor	1aed1a5f progress: avoid empty line when breaking the progress line


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Git Test Coverage Report (Thursday, June 6 2019)
  2019-06-07  1:19 Git Test Coverage Report (Thursday, June 6 2019) Derrick Stolee
@ 2019-06-07 14:43 ` Derrick Stolee
  2019-06-08 22:15 ` Philip Oakley
  1 sibling, 0 replies; 3+ messages in thread
From: Derrick Stolee @ 2019-06-07 14:43 UTC (permalink / raw)
  To: git@vger.kernel.org

On 6/6/2019 9:19 PM, Derrick Stolee wrote:
> commit-graph.c
> a53af50b 346) if (!oideq(&oids[n], &cur_g->oid) ||
> a53af50b 347)     !hasheq(oids[n].hash, g->chunk_base_graphs + g->hash_len * n)) {
> a53af50b 348) warning(_("commit-graph chain does not match"));
> a53af50b 349) return 0;

I'm calling myself out that this warning() should be hit by the "verify" checks, as
this is a critical behavior check.

> cd556367 353) cur_g = cur_g->base_graph;

Here is an example of a line where I definitely hit this block when I add a die()
statement.

I think I figured out the reason the coverage report was reporting coverage
incorrectly sometimes: I was accidentally running the test suite in parallel.
This causes lots of issues with how gcov tracks coverage as there are lots of
race conditions. Running without parallelism takes a LOT longer, so I'll need
to use my own machine instead of a hosted build.

> cd556367 396) warning(_("invalid commit-graph chain: line '%s' not a hash"),

I'm lukewarm on how important it is to test this, but I'll give it a try.

> 4ece4fc1 945) if (find_commit_in_graph(parent->item,
> 4ece4fc1 948) edge_value = pos;

This case is triggered by an octopus merge with a not-first parent being
in the base graph instead of in the tip file. I'll add a test that covers
this situation, as it could be prone to errors.

> 00a8cb54 1523)     (max_commits && num_commits > max_commits))) {

This is a reminder that I forgot to add tests for the '--max-commits' argument.

> c6b73769 1540) ctx->num_commit_graphs_after = 1;
> c6b73769 1541) ctx->new_base_graph = NULL;

This is another subtle case that I should test: we are writing a commit-graph
with the --split option and we think we should write a tip graph, but the
current file is the old (non-split) commit-graph file _and_ it is in an alternate.
This prevents us from trying to move the commit-graph in the alternate, and we
must write a single commit-graph file in our object directory.

> 0e2ec504 1617) duplicates++;
> 0e2ec504 1620) ctx->commits.list[last_distinct + 1] = ctx->commits.list[i];
> 0e2ec504 1628) ctx->num_extra_edges += num_parents - 2;

This code in deduplicate_commits() is doing somewhat important work: it takes
the combined commit lists from multiple levels of the commit-graph and then
de-duplicates the lists. However, if we are writing the commit-graphs properly
then they will never have duplicates at this point. I don't think it is valid
to have duplicates, either, as then a commit will have ambiguous graph position.

Perhaps deduplicate_commits() should remove the duplicate logic and replace it
with a BUG() or die() statement upon finding a duplicate. The sorting and
checking for octopus merges is still important.

Thanks,
-Stolee

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Git Test Coverage Report (Thursday, June 6 2019)
  2019-06-07  1:19 Git Test Coverage Report (Thursday, June 6 2019) Derrick Stolee
  2019-06-07 14:43 ` Derrick Stolee
@ 2019-06-08 22:15 ` Philip Oakley
  1 sibling, 0 replies; 3+ messages in thread
From: Philip Oakley @ 2019-06-08 22:15 UTC (permalink / raw)
  To: Derrick Stolee, git@vger.kernel.org

Hi Stollee

On 07/06/2019 02:19, Derrick Stolee wrote:
> Here is today's test coverage report.
>
> Thanks,
> -Stolee
>
> [1] https://derrickstolee.github.io/git-test-coverage/reports/2019-06-06.htm
> [2] https://derrickstolee.github.io/git-test-coverage/reports/2019-06-06.txt
>
> ---
>
> pu	4f91bbec8a3cc2fff435fb3dbb0dfa5f9d223141
> jch	e1895a3c3b1fef6d1bc80251d09598e219d3908d
> next	ee3066bb6536c68f973b3c0ffaaa13f4bfda5ea3
> master	74583d89127e21255c12dd3c8a3bf60b497d7d03
> master@{1}	aa25c82427ae70aebf3b8f970f2afd54e9a2a8c6
>
>
> Uncovered code in 'pu' not in 'jch'
> --------------------------------------------------------
>
> [snip]
>
>
> Uncovered code in 'jch' not in 'next'
> --------------------------------------------------------
>
> builtin/branch.c
> 1fde99cf 841) die(_("The -a, and -r, options to 'git branch' do not take a branch name.\n"
>
> [nip]
>
> Commits introducting uncovered code:
> ...
> Philip Oakley	1fde99cf doc branch: provide examples for listing remote tracking branches
> [snip rest]

The change was just a change to the die() message, but was not tested 
previously.

I've guessed that t3203 would be the right place for an extra test which 
I've hacked (but not yet tested) as

---
phili@Philip-Win10 MINGW64 /usr/src/git (branch-patterns-v2)
$ git show -1
commit d5a799d8833b0ae195915eefd5365f3fc4c7c0a4 (HEAD -> 
branch-patterns-v2, my/branch-patterns-v2)
Author: Philip Oakley <philipoakley@iee.org>
Date:   Sat Jun 8 22:50:06 2019 +0100

     t3203-branch-output: test -a & -r pattern options

     Users may wrongly use the -r and -a options with a branch pattern when
     looking for a remote tracking branch. Test that we fail for that 
misuse.

     Signed-off-by: Philip Oakley <philipoakley@iee.org>

diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh
index ee6787614c..e78bd1c56d 100755
--- a/t/t3203-branch-output.sh
+++ b/t/t3203-branch-output.sh
@@ -264,4 +264,9 @@ test_expect_success '--color overrides auto-color' '
         test_cmp expect.color actual
  '

+test_expect_success '-a & -r options do not take a branch name, without 
--list' '
+       test_must_fail git branch -a HEAD
+       test_must_fail git branch -r HEAD
+'
+
  test_done
---
https://github.com/PhilipOakley/git/commit/d5a799d8833b0ae195915eefd5365f3fc4c7c0a4

Not sure if that's the right way to do it (Its my first proper try at 
tests themselves..)

I'm going to be away for about a week with only intermittent internet 
hence the unfinished reply.
--
Philip

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-06-08 22:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-07  1:19 Git Test Coverage Report (Thursday, June 6 2019) Derrick Stolee
2019-06-07 14:43 ` Derrick Stolee
2019-06-08 22:15 ` Philip Oakley

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).