{"thread":{"id":"52530","subject":"Git Test Coverage Report (Dec. 27)","startedAt":"2019-12-27T16:18:53Z","lastAt":"2019-12-27T16:18:53Z","messageCount":1,"participants":["Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"388996","messageId":"a684bfb5-ed1e-6d69-93f6-b4a5f20ff953@gmail.com","threadId":"52530","inReplyTo":null,"subject":"Git Test Coverage Report (Dec. 27)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-12-27T16:18:48Z","receivedAt":"2019-12-27T16:18:53Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"Here is today's test coverage report [1][2][3]. I also got the\nsingle-branch build working with the commit view, so I have the\ncommit view available for the v2.25.0-rc0 report [4].\n\nThanks,\n-Stolee\n\n[1] https://derrickstolee.github.io/git-test-coverage/reports/2019-12-27-commits.txt\n[2] https://derrickstolee.github.io/git-test-coverage/reports/2019-12-27.txt\n[3] https://derrickstolee.github.io/git-test-coverage/reports/2019-12-27.htm\n[4] https://derrickstolee.github.io/git-test-coverage/reports/v2.25.0-rc0-commits.txt\n\n\n---\n\npu\t4da9d1ed5116f89b015c733206b4b7e61883f8bb\njch\t0001df5574e7f7a096d568fb64aeb26e5fe2757a\nnext\tca9f1ec99ff3ed584eec58c085a342c9c37d2919\nmaster\t0a76bd7381ec0dbb7c43776eb6d1ac906bca29e6\nmaster@{1}\tb02fd2accad4d48078671adf38fe5b5976d77304\n\n\nUncovered code in 'pu' not in 'jch'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nDenton Liu\tdaf6b9e4 sequencer: use file strbuf for read_oneliner()\nsequencer.c\ndaf6b9e4 439) goto done;\ndaf6b9e4 445) goto done;\n\nDenton Liu\tf2096173 reset: extract reset_head() from rebase\nreset.c\nf2096173 37) ret = -1;\nf2096173 38) goto leave_reset_head;\nf2096173 43) goto leave_reset_head;\nf2096173 65) goto leave_reset_head;\nf2096173 71) goto leave_reset_head;\nf2096173 76) goto leave_reset_head;\nf2096173 80) ret = -1;\nf2096173 81) goto leave_reset_head;\nf2096173 89) goto leave_reset_head;\nf2096173 108) } else if (old_orig)\nf2096173 109) delete_ref(NULL, \"ORIG_HEAD\", old_orig, 0);\n\nDenton Liu\tafc27b82 rebase: use read_oneliner()\nbuiltin/rebase.c\nafc27b82 648) } else if (!read_oneliner(&buf, state_dir_path(\"head\", opts), 0, 1))\n\nDenton Liu\td4e8a655 rebase: generify reset_head()\nbuiltin/rebase.c\nd4e8a655 904) reset_head(the_repository, &opts->orig_head, \"checkout\",\nd4e8a655 905)    opts->head_name, 0,\n\nDenton Liu\t82c638ef rebase: use apply_autostash() from sequencer.c\nbuiltin/rebase.c\n82c638ef 1065) apply_autostash(state_dir_path(\"autostash\", opts));\n\nJohannes Schindelin\t53fa2153 built-in add -p: handle Escape sequences in interactive.singlekey mode\ncompat/terminal.c\n53fa2153 330) if (ch == '\\033' /* ESC */) {\n53fa2153 338) strbuf_splice(buf, buf->len - 1, 1, \"^[\", 2);\n53fa2153 346) struct pollfd pfd = { .fd = 0, .events = POLLIN };\n53fa2153 348) if (poll(&pfd, 1, 500) < 1)\n53fa2153 349) break;\n53fa2153 351) ch = getchar();\n53fa2153 352) if (ch == EOF)\n53fa2153 353) return 0;\n53fa2153 354) strbuf_addch(buf, ch);\n\nJohannes Schindelin\t61131685 built-in add -p: handle Escape sequences more efficiently\ncompat/terminal.c\n61131685 255) static int sequence_entry_cmp(const void *hashmap_cmp_fn_data,\n61131685 260) return strcmp(e1->sequence, keydata ? keydata : e2->sequence);\n61131685 263) static int is_known_escape_sequence(const char *sequence)\n61131685 268) if (!initialized) {\n61131685 269) struct child_process cp = CHILD_PROCESS_INIT;\n61131685 270) struct strbuf buf = STRBUF_INIT;\n61131685 273) hashmap_init(&sequences, (hashmap_cmp_fn)sequence_entry_cmp,\n61131685 276) argv_array_pushl(&cp.args, \"infocmp\", \"-L\", \"-1\", NULL);\n61131685 277) if (pipe_command(&cp, NULL, 0, &buf, 0, NULL, 0))\n61131685 278) strbuf_setlen(&buf, 0);\n61131685 280) for (eol = p = buf.buf; *p; p = eol + 1) {\n61131685 281) p = strchr(p, '=');\n61131685 282) if (!p)\n61131685 283) break;\n61131685 284) p++;\n61131685 285) eol = strchrnul(p, '\\n');\n61131685 287) if (starts_with(p, \"\\\\E\")) {\n61131685 288) char *comma = memchr(p, ',', eol - p);\n61131685 291) p[0] = '^';\n61131685 292) p[1] = '[';\n61131685 293) FLEX_ALLOC_MEM(e, sequence, p, comma - p);\n61131685 294) hashmap_entry_init(&e->entry,\n61131685 295)    strhash(e->sequence));\n61131685 296) hashmap_add(&sequences, &e->entry);\n61131685 298) if (!*eol)\n61131685 299) break;\n61131685 301) initialized = 1;\n61131685 304) return !!hashmap_get_from_hash(&sequences, strhash(sequence), sequence);\n61131685 345) while (!is_known_escape_sequence(buf->buf)) {\n\nJohannes Schindelin\t74e42899 terminal: add a new function to read a single keystroke\ncompat/terminal.c\n74e42899 64) static int enable_non_canonical(void)\n74e42899 66) return disable_bits(ICANON | ECHO);\n74e42899 307) int read_key_without_echo(struct strbuf *buf)\n74e42899 312) if (warning_displayed || enable_non_canonical() < 0) {\n74e42899 313) if (!warning_displayed) {\n74e42899 316) warning_displayed = 1;\n74e42899 319) return strbuf_getline(buf, stdin);\n74e42899 322) strbuf_reset(buf);\n74e42899 323) ch = getchar();\n74e42899 324) if (ch == EOF) {\n74e42899 325) restore_term();\n74e42899 326) return EOF;\n74e42899 328) strbuf_addch(buf, ch);\n74e42899 358) restore_term();\n74e42899 359) return 0;\n\nJohannes Schindelin\taaafd603 terminal: make the code of disable_echo() reusable\ncompat/terminal.c\naaafd603 38) static int disable_bits(tcflag_t bits)\naaafd603 49) t.c_lflag &= ~bits;\naaafd603 59) static int disable_echo(void)\naaafd603 61) return disable_bits(ECHO);\n\nJohannes Schindelin\t6610e462 built-in stash: use the built-in `git add -p` if so configured\nbuiltin/stash.c\n6610e462 1026) setenv(INDEX_ENVIRONMENT, old_index_env, 1);\n\nJohannes Schindelin\t90a6bb98 legacy stash -p: respect the add.interactive.usebuiltin setting\nbuiltin/add.c\n90a6bb98 450) parse_pathspec(&pathspec, 0,\n90a6bb98 456) return run_add_interactive(NULL, \"--patch=stash\", &pathspec);\n\nJohannes Schindelin\td2a233cb built-in add -p: prepare for patch modes other than \"stage\"\nadd-patch.c\nd2a233cb 1567)       _(s->mode->help_patch_text));\n\nJohannes Schindelin\t52628f94 built-in add -p: implement the \"checkout\" patch modes\nadd-patch.c\n52628f94 1272) fwrite(diff->buf, diff->len, 1, stderr);\n\nJohannes Schindelin\t60b7e674 built-in add -p: respect the `interactive.singlekey` config setting\nadd-patch.c\n60b7e674 1156) int res = read_key_without_echo(&s->answer);\n60b7e674 1157) printf(\"%s\\n\", res == EOF ? \"\" : s->answer.buf);\n60b7e674 1158) return res;\n\nJonathan Nieder\tee70c128 index: offer advice for unknown index extensions\nread-cache.c\nee70c128 1761) if (advice_unknown_index_extension) {\n\nJosh Steadmon\t6da1f1a9 protocol: advertise multiple supported versions\nremote-curl.c\n6da1f1a9 354) return 0;\n\nMatheus Tavares\tbeebb9d2 object-store: allow threaded access to object reading\npackfile.c\nbeebb9d2 1453) return;\n\nsha1-file.c\nbeebb9d2 1431) return;\nbeebb9d2 1440) return;\n\nPhillip Wood\t430b75f7 commit: give correct advice for empty commit during a rebase\nsequencer.c\n430b75f7 1580)     return -1;\n\n\n\nUncovered code in 'jch' not in 'next'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nAlban Gruin\t0d50cf5e sequencer: move check_todo_list_from_file() to rebase-interactive.c\nrebase-interactive.c\n0d50cf5e 210) goto out;\n0d50cf5e 215) goto out;\n0d50cf5e 224) fprintf(stderr, _(edit_todo_list_advice));\n\nAlex Torok\tfed842f0 rebase: fix --fork-point with short refname\nbuiltin/merge-base.c\nfed842f0 128) return 1;\n\nElijah Newren\t4d861fad rebase, sequencer: remove the broken GIT_QUIET handling\nbuiltin/rebase.c\n4d861fad 725) write_file(state_dir_path(\"quiet\", opts), \"%s\", \"\");\n\nElijah Newren\t7ee11336 rebase: extend the options for handling of empty commits\nsequencer.c\n7ee11336 2055) res = allow;\n7ee11336 2056) goto leave;\n7ee11336 2515) opts->drop_redundant_commits =\n7ee11336 2516) git_config_bool_or_int(key, value, &error_flag);\n7ee11336 2521) opts->ask_on_initially_empty =\n7ee11336 2522) git_config_bool_or_int(key, value, &error_flag);\n7ee11336 3066) res |= git_config_set_in_file_gently(opts_file,\n7ee11336 3072) res |= git_config_set_in_file_gently(opts_file,\n7ee11336 4798) continue;\n\nHans Jerry Illikainen\t917ddb16 gpg-interface: add minTrustLevel as a configuration option\nbuiltin/pull.c\n917ddb16 374) return status;\n\ngpg-interface.c\n917ddb16 143) return 1;\n917ddb16 209) free(trust);\n917ddb16 210) goto error;\n917ddb16 399) return config_error_nonbool(var);\n\npretty.c\n917ddb16 1355) strbuf_addstr(sb, \"never\");\n917ddb16 1356) break;\n917ddb16 1358) strbuf_addstr(sb, \"marginal\");\n917ddb16 1359) break;\n917ddb16 1361) strbuf_addstr(sb, \"fully\");\n917ddb16 1362) break;\n\nMartin Ågren\t3bf986d6 builtin/config: collect \"value_regexp\" data in a struct\nbuiltin/config.c\n3bf986d6 329) FREE_AND_NULL(cmd_line_value.regexp);\n\nMartin Ågren\t3bcdd852 builtin/config: extract `handle_value_regex()` from `get_value()`\nbuiltin/config.c\n3bcdd852 330) return CONFIG_INVALID_PATTERN;\n3bcdd852 375) goto free_strings;\n\n\n\nUncovered code in 'next' not in 'master'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nElijah Newren\t4fe7e43c rebase: fix saving of --signoff state for am-based rebases\nbuiltin/rebase.c\n4fe7e43c 709) write_file(state_dir_path(\"signoff\", opts), \"--signoff\");\n\nJeff King\t4f0bd8b9 pack-objects: improve partial packfile reuse\nbuiltin/pack-objects.c\n4f0bd8b9 1124) return 1;\n4f0bd8b9 2681) (reuse_packfile_bitmap &&\n4f0bd8b9 2682)  bitmap_walk_contains(bitmap_git, reuse_packfile_bitmap, oid));\n\npack-bitmap.c\n4f0bd8b9 808) return;\n4f0bd8b9 811) return;\n4f0bd8b9 823) return;\n4f0bd8b9 861) i = bitmap_git->pack->num_objects / BITS_IN_EWORD;\n\nJeff King\t7cb9754e pack-objects: introduce pack.allowPackReuse\nbuiltin/pack-objects.c\n7cb9754e 2834) allow_pack_reuse = git_config_bool(k, v);\n7cb9754e 2835) return 0;\n\nJeff King\t7b143c16 pack-bitmap: introduce bitmap_walk_contains()\npack-bitmap.c\n7b143c16 903) return 0;\n\n\n\nUncovered code in 'master' not in 'master@{1}'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nDerrick Stolee\t96cc8ab5 sparse-checkout: use hashmaps for cone patterns\ndir.c\n96cc8ab5 663) pl->use_cone_patterns = 0;\n96cc8ab5 665) goto clear_hashmaps;\n96cc8ab5 689) hashmap_add(&pl->parent_hashmap, &translated->ent);\n96cc8ab5 690) hashmap_remove(&pl->recursive_hashmap, &translated->ent, &data);\n96cc8ab5 691) free(data);\n96cc8ab5 692) return;\n96cc8ab5 698) goto clear_hashmaps;\n96cc8ab5 716) hashmap_remove(&pl->parent_hashmap, &translated->ent, &data);\n96cc8ab5 717) free(data);\n96cc8ab5 718) free(translated);\n96cc8ab5 1280) return MATCHED;\n\nDerrick Stolee\taf09ce24 sparse-checkout: init and set in cone mode\nbuiltin/sparse-checkout.c\naf09ce24 352) return;\n\nDerrick Stolee\t190a65f9 sparse-checkout: respect core.ignoreCase in cone mode\nbuiltin/sparse-checkout.c\n190a65f9 337)    strihash(e->pattern) :\n\ndir.c\n190a65f9 676)    strihash(translated->pattern) :\n190a65f9 707)    strihash(translated->pattern) :\n\nDerrick Stolee\tbab3c359 sparse-checkout: create 'init' subcommand\nbuiltin/sparse-checkout.c\nbab3c359 221) return 1;\nbab3c359 275) return 1;\n\nDerrick Stolee\te091228e sparse-checkout: update working directory in-process\nbuiltin/sparse-checkout.c\ne091228e 85) return 0;\n\nDerrick Stolee\td89f09c8 clone: add --sparse mode\nbuiltin/clone.c\nd89f09c8 753) result = 1;\nd89f09c8 1132) return 1;\n\nJohannes Schindelin\t5906d5de built-in app -p: allow selecting a mode change as a \"hunk\"\nadd-patch.c\n5906d5de 146) return 0;\n5906d5de 150) return 0;\n5906d5de 277) file_diff->hunk->colored_start =\n5906d5de 278) colored_p - colored->buf;\n5906d5de 425) const char *p = s->colored.buf;\n5906d5de 427) strbuf_add(out, p + head->colored_start,\n5906d5de 428)     first->colored_start - head->colored_start);\n5906d5de 429) strbuf_add(out, p + first->colored_end,\n5906d5de 430)     head->colored_end - first->colored_end);\n\nJohannes Schindelin\t25ea47af built-in add -p: adjust hunk headers as needed\nadd-patch.c\n25ea47af 87) return -1;\n25ea47af 104) eol = s->plain.buf + s->plain.len;\n25ea47af 127) eol = s->colored.buf + s->colored.len;\n25ea47af 250) return -1;\n25ea47af 393) strbuf_addf(out, \"%s\\n\", GIT_COLOR_RESET);\n25ea47af 1296) repo_refresh_and_write_index(s->s.r, REFRESH_QUIET, 0,\n\nJohannes Schindelin\t7584dd3c built-in add -p: offer a helpful error message when hunk navigation failed\nadd-patch.c\n7584dd3c 52) static void err(struct add_p_state *s, const char *fmt, ...)\n7584dd3c 56) va_start(args, fmt);\n7584dd3c 57) fputs(s->s.error_color, stderr);\n7584dd3c 58) vfprintf(stderr, fmt, args);\n7584dd3c 59) fputs(s->s.reset_color, stderr);\n7584dd3c 60) fputc('\\n', stderr);\n7584dd3c 61) va_end(args);\n7584dd3c 62) }\n7584dd3c 1134) if (hunk_index)\n7584dd3c 1135) hunk_index--;\n7584dd3c 1137) err(s, _(\"No previous hunk\"));\n7584dd3c 1140) hunk_index++;\n7584dd3c 1142) err(s, _(\"No next hunk\"));\n7584dd3c 1144) if (undecided_previous >= 0)\n7584dd3c 1145) hunk_index = undecided_previous;\n7584dd3c 1147) err(s, _(\"No previous hunk\"));\n7584dd3c 1149) if (undecided_next >= 0)\n7584dd3c 1150) hunk_index = undecided_next;\n7584dd3c 1152) err(s, _(\"No next hunk\"));\n\nJohannes Schindelin\t54d9d9b2 built-in add -p: only show the applicable parts of the help text\nadd-patch.c\n54d9d9b2 1254) const char *p = _(help_patch_remainder), *eol = p;\n54d9d9b2 1256) color_fprintf(stdout, s->s.help_color, \"%s\",\n54d9d9b2 1263) for (; *p; p = eol + (*eol == '\\n')) {\n54d9d9b2 1264) eol = strchrnul(p, '\\n');\n54d9d9b2 1271) if (*p != '?' && !strchr(s->buf.buf, *p))\n54d9d9b2 1272) continue;\n54d9d9b2 1274) color_fprintf_ln(stdout, s->s.help_color,\n54d9d9b2 1275)  \"%.*s\", (int)(eol - p), p);\n\nJohannes Schindelin\td6cf8733 built-in add -p: implement the '/' (\"search regex\") command\nadd-patch.c\nd6cf8733 1195) err(s, _(\"No other hunks to search\"));\nd6cf8733 1196) continue;\nd6cf8733 1201) printf(\"%s\", _(\"search for regex? \"));\nd6cf8733 1202) fflush(stdout);\nd6cf8733 1203) if (strbuf_getline(&s->answer,\nd6cf8733 1205) break;\nd6cf8733 1206) strbuf_trim_trailing_newline(&s->answer);\nd6cf8733 1207) if (s->answer.len == 0)\nd6cf8733 1208) continue;\nd6cf8733 1216) err(s, _(\"Malformed search regexp %s: %s\"),\nd6cf8733 1218) continue;\nd6cf8733 1233) err(s, _(\"No hunk matches the given pattern\"));\nd6cf8733 1234) break;\n\nJohannes Schindelin\t80399aec built-in add -p: support multi-file diffs\nadd-patch.c\n80399aec 1118) for (; hunk_index < file_diff->hunk_nr; hunk_index++) {\n80399aec 1119) hunk = file_diff->hunk + hunk_index;\n80399aec 1139) if (hunk_index + 1 < file_diff->hunk_nr)\n\nJohannes Schindelin\t9254bdfb built-in add -p: implement the 'g' (\"goto\") command\nadd-patch.c\n9254bdfb 981) strbuf_setlen(out, len + SUMMARY_LINE_WIDTH);\n9254bdfb 1158) err(s, _(\"No other hunks to goto\"));\n9254bdfb 1159) continue;\n9254bdfb 1174) break;\n9254bdfb 1181) err(s, _(\"Invalid number: '%s'\"),\n9254bdfb 1189)     (int)file_diff->hunk_nr);\n\nJohannes Schindelin\tbcdd297b built-in add -p: implement hunk editing\nadd-patch.c\nbcdd297b 770) hunk->colored_start = s->colored.len;\nbcdd297b 771) for (current = hunk->start; current < hunk->end; ) {\nbcdd297b 772) for (eol = current; eol < hunk->end; eol++)\nbcdd297b 773) if (plain[eol] == '\\n')\nbcdd297b 774) break;\nbcdd297b 775) next = eol + (eol < hunk->end);\nbcdd297b 776) if (eol > current && plain[eol - 1] == '\\r')\nbcdd297b 777) eol--;\nbcdd297b 779) strbuf_addstr(&s->colored,\nbcdd297b 780)       plain[current] == '-' ?\nbcdd297b 782)       plain[current] == '+' ?\nbcdd297b 785) strbuf_add(&s->colored, plain + current, eol - current);\nbcdd297b 786) strbuf_addstr(&s->colored, GIT_COLOR_RESET);\nbcdd297b 787) if (next > eol)\nbcdd297b 788) strbuf_add(&s->colored, plain + eol, next - eol);\nbcdd297b 789) current = next;\nbcdd297b 791) hunk->colored_end = s->colored.len;\nbcdd297b 825) return -1;\nbcdd297b 840) return 0;\nbcdd297b 906) return -1;\nbcdd297b 910) case 'y': return 1;\nbcdd297b 912) }\nbcdd297b 927) *hunk = backup;\nbcdd297b 928) return -1;\nbcdd297b 1248) err(s, _(\"Sorry, cannot edit this hunk\"));\n\nJohannes Schindelin\t11f2c0da built-in add -p: coalesce hunks after splitting them\nadd-patch.c\n11f2c0da 449) return 0;\n\nJohannes Schindelin\t510aeca1 built-in add -p: implement the hunk splitting feature\nadd-patch.c\n510aeca1 235) hunk->splittable_into++;\n510aeca1 356) return sb->len;\n510aeca1 618) return 0;\n510aeca1 629) memmove(file_diff->hunk + hunk_index + splittable_into,\n510aeca1 630) file_diff->hunk + hunk_index + 1,\n510aeca1 631) (file_diff->hunk_nr - hunk_index - splittable_into)\n510aeca1 642) colored_current = hunk->colored_start;\n510aeca1 660) hunk[1].colored_start = colored_current;\n510aeca1 675) ch = marker ? marker : ' ';\n510aeca1 689) colored_current =\n510aeca1 690) find_next_line(&s->colored,\n510aeca1 732) hunk->colored_end = colored_current;\n510aeca1 757) hunk->colored_end = colored_end;\n510aeca1 1240) err(s, _(\"Sorry, cannot split this hunk\"));\n\nJohannes Schindelin\tf6aa7ecc built-in add -i: start implementing the `patch` functionality in C\nadd-patch.c\nf6aa7ecc 209) eol = pend;\nf6aa7ecc 1051) undecided_previous = i;\nf6aa7ecc 1052) break;\nf6aa7ecc 1073) strbuf_addstr(&s->buf, \",k\");\nf6aa7ecc 1107) continue;\nf6aa7ecc 1120) if (hunk->use == UNDECIDED_HUNK)\nf6aa7ecc 1121) hunk->use = USE_HUNK;\nf6aa7ecc 1317) strbuf_release(&s.plain);\nf6aa7ecc 1319) return -1;\n\nJohannes Schindelin\te3bd11b4 built-in add -p: show colored hunks by default\nadd-patch.c\ne3bd11b4 175) argv_array_clear(&args);\ne3bd11b4 320) colored_p = colored_pend;\ne3bd11b4 1318) strbuf_release(&s.colored);\n\nJohannes Schindelin\tb38dd9e7 strbuf: add a helper function to call the editor \"on an strbuf\"\nstrbuf.c\nb38dd9e7 1140) res = error_errno(_(\"could not open '%s' for writing\"), path);\nb38dd9e7 1142) res = error_errno(_(\"could not write to '%s'\"), path);\nb38dd9e7 1143) close(fd);\nb38dd9e7 1145) res = error_errno(_(\"could not close '%s'\"), path);\nb38dd9e7 1149) res = error_errno(_(\"could not edit '%s'\"), path);\n\nTanushree Tumane\t51a0a4ed bisect--helper: avoid use-after-free\nbuiltin/bisect--helper.c\n51a0a4ed 177) return -1;\n\n\n"}]}