{"thread":{"id":"53149","subject":"Git Test Coverage Report (March 31, 2020)","startedAt":"2020-04-01T01:58:23Z","lastAt":"2020-04-14T15:52:09Z","messageCount":4,"participants":["Derrick Stolee","Jeff King","Taylor Blau"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"394451","messageId":"e7e15fd8-01fa-61df-830d-04e4882adc38@gmail.com","threadId":"53149","inReplyTo":null,"subject":"Git Test Coverage Report (March 31, 2020)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-04-01T01:58:17Z","receivedAt":"2020-04-01T01:58:23Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"Here is today's test coverage report. Stay safe, everyone!\n\n-Stolee\n\n[1] https://derrickstolee.github.io/git-test-coverage/reports/2020-03-31-commits.txt\n[2] https://derrickstolee.github.io/git-test-coverage/reports/2020-03-31.txt\n[3] https://derrickstolee.github.io/git-test-coverage/reports/2020-03-31.htm\n\n---\n\npu\tad1641bbcd3c56bafe85ff7e56606b8aa0169211\njch\ta85ddbbb106edaaaeca34295a86aebd422479ed2\nnext\t2183baf09cb5d1e1dd473e6d197893cd5e1c99ca\nmaster\t9fadedd637b312089337d73c3ed8447e9f0aa775\nmaster@{1}\ta7d14a44285d3ec4b25bf9e3b7df701221350661\n\n\nUncovered code in 'pu' not in 'jch'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nDenton Liu\tce6521e4 Lib-ify fmt-merge-msg\nfmt-merge-msg.c\nce6521e4 24) use_branch_desc = git_config_bool(key, value);\nce6521e4 75) continue;\nce6521e4 107) return 1;\nce6521e4 113) return 2;\nce6521e4 117) return 3;\nce6521e4 126) line[len - 1] = 0;\nce6521e4 167) origin = src;\nce6521e4 168) string_list_append(&src_data->generic, line);\nce6521e4 169) src_data->head_status |= 2;\nce6521e4 188) return;\nce6521e4 201) static void add_branch_desc(struct strbuf *out, const char *name)\nce6521e4 203) struct strbuf desc = STRBUF_INIT;\nce6521e4 205) if (!read_branch_desc(&desc, name)) {\nce6521e4 206) const char *bp = desc.buf;\nce6521e4 207) while (*bp) {\nce6521e4 208) const char *ep = strchrnul(bp, '\\n');\nce6521e4 209) if (*ep)\nce6521e4 210) ep++;\nce6521e4 211) strbuf_addf(out, \"  : %.*s\", (int)(ep - bp), bp);\nce6521e4 212) bp = ep;\nce6521e4 214) strbuf_complete_line(out);\nce6521e4 216) strbuf_release(&desc);\nce6521e4 217) }\nce6521e4 231) return;\nce6521e4 239) return;\nce6521e4 276) else if (people->nr)\nce6521e4 277) strbuf_addf(out, \"%s (%d) and others\",\nce6521e4 278)     people->items[0].string,\nce6521e4 279)     (int)util_as_integral(&people->items[0]));\nce6521e4 342) return;\nce6521e4 355) if (opts->credit_people)\nce6521e4 356) record_person('c', &committers, commit);\nce6521e4 372) string_list_append(&subjects,\nce6521e4 373)    oid_to_hex(&commit->object.oid));\nce6521e4 387) add_branch_desc(out, name);\nce6521e4 425) subsep = \", \";\nce6521e4 426) strbuf_addstr(out, \"HEAD\");\nce6521e4 446) strbuf_addstr(out, subsep);\nce6521e4 447) print_joined(\"commit \", \"commits \", &src_data->generic,\nce6521e4 507) if (tag_number == 2) {\nce6521e4 508) struct strbuf tagline = STRBUF_INIT;\nce6521e4 509) strbuf_addch(&tagline, '\\n');\nce6521e4 510) strbuf_add_commented_lines(&tagline,\nce6521e4 511) origins.items[first_tag].string,\nce6521e4 512) strlen(origins.items[first_tag].string));\nce6521e4 513) strbuf_insert(&tagbuf, 0, tagline.buf,\nce6521e4 515) strbuf_release(&tagline);\nce6521e4 517) strbuf_addch(&tagbuf, '\\n');\nce6521e4 518) strbuf_add_commented_lines(&tagbuf,\nce6521e4 519) origins.items[i].string,\nce6521e4 520) strlen(origins.items[i].string));\nce6521e4 521) fmt_tag_signature(&tagbuf, &sig, buf, len);\nce6521e4 566) continue;\n\nDenton Liu\t9460fd48 Lib-ify prune-packed\nprune-packed.c\n9460fd48 26) printf(\"rm -f %s\\n\", path);\n9460fd48 35) progress = start_delayed_progress(_(\"Removing duplicate objects\"), 256);\n\nDenton Liu\t7cd76158 reset: extract reset_head() from rebase\nreset.c\n7cd76158 37) ret = -1;\n7cd76158 38) goto leave_reset_head;\n7cd76158 43) goto leave_reset_head;\n7cd76158 66) goto leave_reset_head;\n7cd76158 72) goto leave_reset_head;\n7cd76158 77) goto leave_reset_head;\n7cd76158 81) ret = -1;\n7cd76158 82) goto leave_reset_head;\n7cd76158 90) goto leave_reset_head;\n7cd76158 109) } else if (old_orig)\n7cd76158 110) delete_ref(NULL, \"ORIG_HEAD\", old_orig, 0);\n\nDenton Liu\te743716a sequencer: use file strbuf for read_oneliner()\nsequencer.c\ne743716a 434) goto done;\ne743716a 440) goto done;\n\nDenton Liu\tdcf14833 rebase: use apply_autostash() from sequencer.c\nbuiltin/rebase.c\ndcf14833 1038) apply_autostash(state_dir_path(\"autostash\", opts));\n\nDenton Liu\t54ab5233 sequencer: make apply_rebase() accept a path\nsequencer.c\n54ab5233 5168) apply_autostash(rebase_path_autostash());\n\nDenton Liu\t92470920 rebase: use read_oneliner()\nbuiltin/rebase.c\n92470920 623) } else if (!read_oneliner(&buf, state_dir_path(\"head\", opts),\n\nDenton Liu\t796ff68d rebase: generify reset_head()\nbuiltin/rebase.c\n796ff68d 878) reset_head(the_repository, &opts->orig_head, \"checkout\",\n796ff68d 879)    opts->head_name, 0,\n\nDerrick Stolee\te3696980 diff: halt tree-diff early after max_changes\ntree-diff.c\ne3696980 438) break;\n\nElijah Newren\tbb8f652e dir: replace exponential algorithm with a linear one\ndir.c\nbb8f652e 1863) state = excluded ? path_excluded : path_untracked;\n\nEmily Shaffer\tdd763e68 help: move list_config_help to builtin/help\nbuiltin/help.c\ndd763e68 123) puts(var);\ndd763e68 124) continue;\n\nEmily Shaffer\tf0b79bb2 bugreport: add uname info\nbugreport.c\nf0b79bb2 20) strbuf_addf(sys_info, _(\"uname() failed with error '%s' (%d)\\n\"),\nf0b79bb2 22)     errno);\n\nEmily Shaffer\t765e8219 bugreport: gather git version and build info\nhelp.c\n765e8219 641) strbuf_addstr(buf, \"no commit associated with this build\\n\");\n\nGarima Singh\t749d958c revision.c: add trace2 stats around Bloom filter usage\nrevision.c\n749d958c 717) count_bloom_filter_length_zero++;\n\nGarima Singh\tf1294eaf bloom.c: introduce core Bloom filter constructs\nt/helper/test-bloom.c\nf1294eaf 25) printf(\"No filter.\\n\");\nf1294eaf 26) return;\n\nGarima Singh\t52480757 commit-graph: write Bloom filters to commit graph file\ncommit-graph.c\n52480757 328) chunk_repeated = 1;\n52480757 335) chunk_repeated = 1;\n52480757 342) break;\n52480757 1085) progress = start_delayed_progress(\n52480757 1087) ctx->commits.nr);\n52480757 1110) progress = start_delayed_progress(\n52480757 1112) ctx->commits.nr);\n\nGarima Singh\t3d112755 commit-graph: examine commits by generation number\ncommit-graph.c\n3d112755 88) return -1;\n3d112755 91) return 0;\n3d112755 1294) QSORT(sorted_commits, ctx->commits.nr, commit_pos_cmp);\n\nGarima Singh\tfa63c5b3 revision.c: use Bloom filters to speed up path based revision walks\nbloom.c\nfa63c5b3 266) return -1;\n\nrevision.c\nfa63c5b3 704) return -1;\nfa63c5b3 707) return -1;\nfa63c5b3 718) return -1;\n\nGarima Singh\tf97b9325 commit-graph: compute Bloom filters for changed paths\ncommit-graph.c\nf97b9325 1286) progress = start_delayed_progress(\nf97b9325 1288) ctx->commits.nr);\n\nGarima Singh\ted591feb bloom.c: core Bloom filter implementation for changed paths.\nbloom.c\ned591feb 172) return NULL;\ned591feb 246) for (i = 0; i < diff_queued_diff.nr; i++)\ned591feb 247) diff_free_filepair(diff_queued_diff.queue[i]);\ned591feb 248) filter->data = NULL;\ned591feb 249) filter->len = 0;\n\nJeff King\td21ee7d1 commit-graph: examine changed-path objects in pack order\ncommit-graph.c\nd21ee7d1 62) return; /* should never happen, but be lenient */\nd21ee7d1 67) static int commit_pos_cmp(const void *va, const void *vb)\nd21ee7d1 69) const struct commit *a = *(const struct commit **)va;\nd21ee7d1 70) const struct commit *b = *(const struct commit **)vb;\nd21ee7d1 71) return commit_pos_at(&commit_pos, a) -\nd21ee7d1 72)        commit_pos_at(&commit_pos, b);\n\nJiang Xin\tc7ea37de receive-pack: add new proc-receive hook\nbuiltin/receive-pack.c\nc7ea37de 960) return code;\nc7ea37de 963) proc.err = 0;\nc7ea37de 968) if (use_sideband)\nc7ea37de 969) finish_async(&muxer);\nc7ea37de 970) return code;\n\nt/helper/test-proc-receive.c\nc7ea37de 127) usage_msg_opt(\"Too many arguments.\", proc_receive_usage, options);\n\nJiang Xin\t9f699cce receive-pack: new config receive.procReceiveRefs\nbuiltin/receive-pack.c\n9f699cce 237) return config_error_nonbool(var);\n9f699cce 1743) continue;\n\nJiang Xin\t43feef4a receive-pack: refactor report for proc-receive\ntransport-helper.c\n43feef4a 756) status = REF_STATUS_UPTODATE;\n43feef4a 757) FREE_AND_NULL(msg);\n43feef4a 764) status = REF_STATUS_REJECT_ALREADY_EXISTS;\n43feef4a 765) FREE_AND_NULL(msg);\n43feef4a 768) status = REF_STATUS_REJECT_FETCH_FIRST;\n43feef4a 769) FREE_AND_NULL(msg);\n43feef4a 772) status = REF_STATUS_REJECT_NEEDS_FORCE;\n43feef4a 773) FREE_AND_NULL(msg);\n43feef4a 776) status = REF_STATUS_REJECT_STALE;\n43feef4a 777) FREE_AND_NULL(msg);\n43feef4a 780) forced = 1;\n\ntransport.c\n43feef4a 473) fprintf(stdout, \"%c\\t:%s\\t\", flag, target_refname);\n43feef4a 556) print_ref_status('X', \"[no match]\", NULL, ref, NULL, NULL,\n43feef4a 560) print_ref_status('!', \"[rejected]\", NULL, ref, NULL,\n43feef4a 565) print_ref_status('=', \"[up to date]\", NULL, ref,\n43feef4a 581) print_ref_status('!', \"[rejected]\", NULL, ref, ref->peer_ref,\n43feef4a 589) print_ref_status('!', \"[rejected]\", NULL, ref, ref->peer_ref,\n43feef4a 599) print_ref_status('!', \"[remote failure]\", NULL, ref,\n\nJunio C Hamano\te261ddc5 Merge branch 'dl/libify-a-few' into pu\nfmt-merge-msg.c\ne261ddc5 498) strbuf_addstr(&sig, \"gpg verification failed.\\n\");\n\nPatrick Steinhardt\tedc30691 refs: fix segfault when aborting empty transaction\nrefs/files-backend.c\nedc30691 2572) strbuf_release(&err);\n\nPatrick Steinhardt\t1f2a79ad update-ref: organize commands in an array\nbuiltin/update-ref.c\n1f2a79ad 438) continue;\n\n\n\nUncovered code in 'jch' not in 'next'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nÆvar Arnfjörð Bjarmason\t5cc044e0 get_short_oid: sort ambiguous objects by type, then SHA-1\noid-array.c\n5cc044e0 56) return ret;\n\nbrian m. carlson\t910650d2 Rename sha1_array to oid_array\nt/helper/test-oid-array.c\n910650d2 29) oid_array_clear(&array);\n\nDamien Robert\ta761fb70 remote.c: fix handling of %(push:remoteref)\nremote.c\na761fb70 1649) return NULL;\na761fb70 1656) return branch->refname;\na761fb70 1671) return NULL;\na761fb70 1785) return NULL;\n\nDenton Liu\t7cd54d37 wrapper: indent with tabs\nwrapper.c\n7cd54d37 221) len = MAX_IO_SIZE;\n7cd54d37 243) len = MAX_IO_SIZE;\n\nElijah Newren\t7af7a258 unpack-trees: add a new update_sparsity() function\nunpack-trees.c\n7af7a258 1847) ret = UPDATE_SPARSITY_WORKTREE_UPDATE_FAILURES;\n\nJeff King\t16ddcd40 sha1_array: let callbacks interrupt iteration\noid-array.c\n16ddcd40 76) return ret;\n\nJosh Steadmon\t3d3adaad trace2: teach Git to log environment variables\ntrace2/tr2_cfg.c\n3d3adaad 63) return tr2_cfg_env_vars_count;\n\n\n\nUncovered code in 'next' not in 'master'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nTaylor Blau\ta599e2c9 builtin/commit-graph.c: introduce '--input=<source>'\nbuiltin/commit-graph.c\na599e2c9 75) *to = 0;\na599e2c9 76) return 0;\na599e2c9 86) *to |= COMMIT_GRAPH_INPUT_APPEND;\n\nTaylor Blau\t5d5916fd builtin/commit-graph.c: support '--split[=<strategy>]'\ncommit-graph.c\n5d5916fd 1557) break;\n\n\n\nUncovered code in 'master' not in 'master@{1}'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nbrian m. carlson\t13e7ed6a builtin/checkout: compute checkout metadata for checkouts\nbuiltin/checkout.c\n13e7ed6a 625)        is_null_oid(&info->oid) ? &tree->object.oid :\n\nbrian m. carlson\tefa7ae36 init-db: move writing repo version into a function\nbuiltin/init-db.c\nefa7ae36 192) repo_version = GIT_REPO_VERSION_READ;\nefa7ae36 200) git_config_set(\"extensions.objectformat\",\n\nbrian m. carlson\t8b8f7189 builtin/init-db: allow specifying hash algorithm on command line\nbuiltin/init-db.c\n8b8f7189 376) repo_fmt->hash_algo = hash;\n8b8f7189 599) hash_algo = hash_algo_by_name(object_format);\n8b8f7189 600) if (hash_algo == GIT_HASH_UNKNOWN)\n\nbrian m. carlson\t3c9331a1 builtin/init-db: add environment variable for new repo hash\nbuiltin/init-db.c\n3c9331a1 378) int env_algo = hash_algo_by_name(env);\n3c9331a1 379) if (env_algo == GIT_HASH_UNKNOWN)\n3c9331a1 381) repo_fmt->hash_algo = env_algo;\n\nbrian m. carlson\tab90ecae convert: permit passing additional metadata to filter processes\nconvert.c\nab90ecae 862) goto done;\nab90ecae 868) goto done;\nab90ecae 874) goto done;\n\nbrian m. carlson\tddddf8d7 fast-import: permit reading multiple marks files\nfast-import.c\nddddf8d7 1149) insert_mark(marks, mark, e);\n\nbrian m. carlson\t1bdca816 fast-import: add options for rewriting submodules\nfast-import.c\n1bdca816 2183) return -1;\n1bdca816 3058) return;\n1bdca816 3316) die_errno(\"cannot read '%s'\", f);\n\nbrian m. carlson\t768e30ea hash: implement and use a context cloning function\nsha1-file.c\n768e30ea 98) static void git_hash_sha256_clone(git_hash_ctx *dst, const git_hash_ctx *src)\n768e30ea 100) git_SHA256_Clone(&dst->sha256, &src->sha256);\n768e30ea 101) }\n768e30ea 118) static void git_hash_unknown_clone(git_hash_ctx *dst, const git_hash_ctx *src)\n\nbrian m. carlson\te02a7141 worktree: allow repository version 1\nworktree.c\ne02a7141 476) strbuf_release(&err);\n\nHans Jerry Illikainen\t67948981 gpg-interface: prefer check_signature() for GPG verification\nbuiltin/fmt-merge-msg.c\n67948981 508) strbuf_addstr(&sig, \"gpg verification failed.\\n\");\n\ngpg-interface.c\n67948981 275) error_errno(_(\"failed writing detached signature to '%s'\"),\n67948981 277) delete_tempfile(&temp);\n67948981 278) return -1;\n67948981 293) gpg_status = &buf;\n\nlog-tree.c\n67948981 461) show_sig_lines(opt, status, \"No signature\\n\");\n\n\n"},{"id":"394472","messageId":"20200401095635.GB60227@coredump.intra.peff.net","threadId":"53149","inReplyTo":"e7e15fd8-01fa-61df-830d-04e4882adc38@gmail.com","subject":"Re: Git Test Coverage Report (March 31, 2020)","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2020-04-01T09:56:35Z","receivedAt":"2020-04-01T09:56:38Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Mar 31, 2020 at 09:58:17PM -0400, Derrick Stolee wrote:\n\n> Uncovered code in 'jch' not in 'next'\n> --------------------------------------------------------\n> [...]\n> Jeff King\t16ddcd40 sha1_array: let callbacks interrupt iteration\n> oid-array.c\n> 16ddcd40 76) return ret;\n\nHmm, that commit is from 2016. I guess it was triggered now because I\nrenamed sha1-array.c to oid-array.c recently. I'm not sure what the\nright thing is here. Following the movement via blames a long-ago commit\n(I just happen to be the author of both in this case). But not following\nthe movement means that my rename would get blamed for code that isn't\nactually new.\n\n-Peff\n"},{"id":"394491","messageId":"064fe1c7-3c93-fd82-ad78-92f800713462@gmail.com","threadId":"53149","inReplyTo":"20200401095635.GB60227@coredump.intra.peff.net","subject":"Re: Git Test Coverage Report (March 31, 2020)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-04-01T13:27:38Z","receivedAt":"2020-04-01T13:27:43Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 4/1/2020 5:56 AM, Jeff King wrote:\n> On Tue, Mar 31, 2020 at 09:58:17PM -0400, Derrick Stolee wrote:\n> \n>> Uncovered code in 'jch' not in 'next'\n>> --------------------------------------------------------\n>> [...]\n>> Jeff King\t16ddcd40 sha1_array: let callbacks interrupt iteration\n>> oid-array.c\n>> 16ddcd40 76) return ret;\n> \n> Hmm, that commit is from 2016. I guess it was triggered now because I\n> renamed sha1-array.c to oid-array.c recently. I'm not sure what the\n> right thing is here. Following the movement via blames a long-ago commit\n> (I just happen to be the author of both in this case). But not following\n> the movement means that my rename would get blamed for code that isn't\n> actually new.\n\nInteresting. The test-coverage tool is checking blame after checking a\ndiff, so the two are not as linked as they could be. The diff tries to\nfind all modified lines in the files that were updated, and filters the\nblame output based on those. I suspect this will happen whenever we\nrename a file.\n\nThe \"real\" fix would be to filter out the blame lines for commits that\ndon't actually fit in the commit range we are considering.\n\nThanks for looking closely!\n\n-Stolee\n"},{"id":"395419","messageId":"20200414155156.GC93424@syl.local","threadId":"53149","inReplyTo":"e7e15fd8-01fa-61df-830d-04e4882adc38@gmail.com","subject":"Re: Git Test Coverage Report (March 31, 2020)","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2020-04-14T15:51:56Z","receivedAt":"2020-04-14T15:52:09Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Hi Stolee,\n\nApologies for digging up an older report.\n\nOn Tue, Mar 31, 2020 at 09:58:17PM -0400, Derrick Stolee wrote:\n> Uncovered code in 'next' not in 'master'\n> --------------------------------------------------------\n>\n> Commits introducing uncovered code:\n> Taylor Blau\ta599e2c9 builtin/commit-graph.c: introduce '--input=<source>'\n> builtin/commit-graph.c\n> a599e2c9 75) *to = 0;\n> a599e2c9 76) return 0;\n> a599e2c9 86) *to |= COMMIT_GRAPH_INPUT_APPEND;\n>\n> Taylor Blau\t5d5916fd builtin/commit-graph.c: support '--split[=<strategy>]'\n> commit-graph.c\n> 5d5916fd 1557) break;\n\nI was leaving this in my inbox as a reminder to address these two\nuncovered hunks, but they have gone away in the backlog of commit-graph\npatches I sent to the list last night.\n\nThanks again for running these.\n\nThanks,\nTaylor\n"}]}