Here is the latest test coverage report. Thanks, -Stolee [1] https://derrickstolee.github.io/git-test-coverage/reports/2020-01-22.htm [2] https://derrickstolee.github.io/git-test-coverage/reports/2020-01-22.txt [3] https://derrickstolee.github.io/git-test-coverage/reports/2020-01-22-commits.txt --- pu 93d4f0420cd84db6ba06dfde81314c8c5f328842 jch 75b0f54c274253cd9cb3395f261a70f4238a3e9a next 3f081b084b0e55662871946d66dab3696a46a22a master 232378479ee6c66206d47a9be175e3a39682aea6 master@{1} 8679ef24ed64018bb62170c43ce73e0261c0600a Uncovered code in 'pu' not in 'jch' -------------------------------------------------------- Commits introducing uncovered code: Denton Liu 186dbeed rebase: use read_oneliner() builtin/rebase.c 186dbeed 629) } else if (!read_oneliner(&buf, state_dir_path("head", opts), 0, 1)) Denton Liu 06ebea5c rebase: generify reset_head() builtin/rebase.c 06ebea5c 879) reset_head(the_repository, &opts->orig_head, "checkout", 06ebea5c 880) opts->head_name, 0, Denton Liu e71223c6 rebase: use apply_autostash() from sequencer.c builtin/rebase.c e71223c6 1039) apply_autostash(state_dir_path("autostash", opts)); Denton Liu 448bea61 sequencer: make apply_rebase() accept a path sequencer.c 448bea61 5157) apply_autostash(rebase_path_autostash()); Denton Liu fa717471 sequencer: use file strbuf for read_oneliner() sequencer.c fa717471 436) goto done; fa717471 442) goto done; Denton Liu b3137f2e reset: extract reset_head() from rebase reset.c b3137f2e 37) ret = -1; b3137f2e 38) goto leave_reset_head; b3137f2e 43) goto leave_reset_head; b3137f2e 65) goto leave_reset_head; b3137f2e 71) goto leave_reset_head; b3137f2e 76) goto leave_reset_head; b3137f2e 80) ret = -1; b3137f2e 81) goto leave_reset_head; b3137f2e 89) goto leave_reset_head; b3137f2e 108) } else if (old_orig) b3137f2e 109) delete_ref(NULL, "ORIG_HEAD", old_orig, 0); Elijah Newren 81f5bc1c rebase, sequencer: remove the broken GIT_QUIET handling builtin/rebase.c 81f5bc1c 698) write_file(state_dir_path("quiet", opts), "%s", ""); Elijah Newren 91e0ed22 rebase (interactive-backend): fix handling of commits that become empty sequencer.c 91e0ed22 2534) opts->keep_redundant_commits = 1; Elijah Newren 8ef6c12e rebase (interactive-backend): make --keep-empty the default sequencer.c 8ef6c12e 1539) return originally_empty; Jonathan Nieder ee70c128 index: offer advice for unknown index extensions read-cache.c ee70c128 1761) if (advice_unknown_index_extension) { Josh Steadmon 6da1f1a9 protocol: advertise multiple supported versions remote-curl.c 6da1f1a9 354) return 0; Kevin Willford 56c69100 fsmonitor: change last update timestamp on the index_state to opaque token fsmonitor.c 56c69100 62) timestamp = get_be64(index); 56c69100 63) strbuf_addf(&last_update, "%"PRIu64"", timestamp); 56c69100 64) index += sizeof(uint64_t); Kevin Willford 8da2c576 fsmonitor: handle version 2 of the hooks that will use opaque token fsmonitor.c 8da2c576 36) if (hook_version == HOOK_INTERFACE_VERSION1 || 8da2c576 37) hook_version == HOOK_INTERFACE_VERSION2) 8da2c576 38) return hook_version; 8da2c576 199) strbuf_addf(&last_update_token, "%"PRIu64"", last_update); Matheus Tavares 31877c9a object-store: allow threaded access to object reading packfile.c 31877c9a 1472) return; sha1-file.c 31877c9a 1431) return; 31877c9a 1440) return; Phillip Wood 430b75f7 commit: give correct advice for empty commit during a rebase sequencer.c 430b75f7 1472) return -1; Uncovered code in 'jch' not in 'next' -------------------------------------------------------- Commits introducing uncovered code: Alban Gruin 0d50cf5e sequencer: move check_todo_list_from_file() to rebase-interactive.c rebase-interactive.c 0d50cf5e 210) goto out; 0d50cf5e 215) goto out; 0d50cf5e 224) fprintf(stderr, _(edit_todo_list_advice)); Alex Torok fed842f0 rebase: fix --fork-point with short refname builtin/merge-base.c fed842f0 128) return 1; Hans Jerry Illikainen 54887b46 gpg-interface: add minTrustLevel as a configuration option builtin/pull.c 54887b46 374) return status; gpg-interface.c 54887b46 143) return 1; 54887b46 207) free(trust); 54887b46 208) goto error; 54887b46 397) return config_error_nonbool(var); pretty.c 54887b46 1355) strbuf_addstr(sb, "never"); 54887b46 1356) break; 54887b46 1358) strbuf_addstr(sb, "marginal"); 54887b46 1359) break; 54887b46 1361) strbuf_addstr(sb, "fully"); 54887b46 1362) break; Jeff King 7cb9754e pack-objects: introduce pack.allowPackReuse builtin/pack-objects.c 7cb9754e 2834) allow_pack_reuse = git_config_bool(k, v); 7cb9754e 2835) return 0; Jeff King 7b143c16 pack-bitmap: introduce bitmap_walk_contains() pack-bitmap.c 7b143c16 903) return 0; Jeff King 4f0bd8b9 pack-objects: improve partial packfile reuse builtin/pack-objects.c 4f0bd8b9 1124) return 1; 4f0bd8b9 2681) (reuse_packfile_bitmap && 4f0bd8b9 2682) bitmap_walk_contains(bitmap_git, reuse_packfile_bitmap, oid)); pack-bitmap.c 4f0bd8b9 808) return; 4f0bd8b9 811) return; 4f0bd8b9 823) return; 4f0bd8b9 861) i = bitmap_git->pack->num_objects / BITS_IN_EWORD; Johannes Schindelin e118f063 built-in add -p: handle Escape sequences in interactive.singlekey mode compat/terminal.c e118f063 330) if (ch == '\033' /* ESC */) { e118f063 338) strbuf_splice(buf, buf->len - 1, 1, "^[", 2); e118f063 346) struct pollfd pfd = { .fd = 0, .events = POLLIN }; e118f063 348) if (poll(&pfd, 1, 500) < 1) e118f063 349) break; e118f063 351) ch = getchar(); e118f063 352) if (ch == EOF) e118f063 353) return 0; e118f063 354) strbuf_addch(buf, ch); Johannes Schindelin 12acdf57 built-in add -p: handle Escape sequences more efficiently compat/terminal.c 12acdf57 255) static int sequence_entry_cmp(const void *hashmap_cmp_fn_data, 12acdf57 260) return strcmp(e1->sequence, keydata ? keydata : e2->sequence); 12acdf57 263) static int is_known_escape_sequence(const char *sequence) 12acdf57 268) if (!initialized) { 12acdf57 269) struct child_process cp = CHILD_PROCESS_INIT; 12acdf57 270) struct strbuf buf = STRBUF_INIT; 12acdf57 273) hashmap_init(&sequences, (hashmap_cmp_fn)sequence_entry_cmp, 12acdf57 276) argv_array_pushl(&cp.args, "infocmp", "-L", "-1", NULL); 12acdf57 277) if (pipe_command(&cp, NULL, 0, &buf, 0, NULL, 0)) 12acdf57 278) strbuf_setlen(&buf, 0); 12acdf57 280) for (eol = p = buf.buf; *p; p = eol + 1) { 12acdf57 281) p = strchr(p, '='); 12acdf57 282) if (!p) 12acdf57 283) break; 12acdf57 284) p++; 12acdf57 285) eol = strchrnul(p, '\n'); 12acdf57 287) if (starts_with(p, "\\E")) { 12acdf57 288) char *comma = memchr(p, ',', eol - p); 12acdf57 291) p[0] = '^'; 12acdf57 292) p[1] = '['; 12acdf57 293) FLEX_ALLOC_MEM(e, sequence, p, comma - p); 12acdf57 294) hashmap_entry_init(&e->entry, 12acdf57 295) strhash(e->sequence)); 12acdf57 296) hashmap_add(&sequences, &e->entry); 12acdf57 298) if (!*eol) 12acdf57 299) break; 12acdf57 301) initialized = 1; 12acdf57 304) return !!hashmap_get_from_hash(&sequences, strhash(sequence), sequence); 12acdf57 345) while (!is_known_escape_sequence(buf->buf)) { Johannes Schindelin a5e46e6b terminal: add a new function to read a single keystroke compat/terminal.c a5e46e6b 64) static int enable_non_canonical(void) a5e46e6b 66) return disable_bits(ICANON | ECHO); a5e46e6b 307) int read_key_without_echo(struct strbuf *buf) a5e46e6b 312) if (warning_displayed || enable_non_canonical() < 0) { a5e46e6b 313) if (!warning_displayed) { a5e46e6b 316) warning_displayed = 1; a5e46e6b 319) return strbuf_getline(buf, stdin); a5e46e6b 322) strbuf_reset(buf); a5e46e6b 323) ch = getchar(); a5e46e6b 324) if (ch == EOF) { a5e46e6b 325) restore_term(); a5e46e6b 326) return EOF; a5e46e6b 328) strbuf_addch(buf, ch); a5e46e6b 358) restore_term(); a5e46e6b 359) return 0; Johannes Schindelin 94ac3c31 terminal: make the code of disable_echo() reusable compat/terminal.c 94ac3c31 38) static int disable_bits(tcflag_t bits) 94ac3c31 49) t.c_lflag &= ~bits; 94ac3c31 59) static int disable_echo(void) 94ac3c31 61) return disable_bits(ECHO); Johannes Schindelin 180f48df built-in add -p: support interactive.diffFilter add-patch.c 180f48df 557) else if (p != pend) 180f48df 559) goto mismatched_output; 180f48df 590) return -1; Johannes Schindelin 90a6bb98 legacy stash -p: respect the add.interactive.usebuiltin setting builtin/add.c 90a6bb98 451) parse_pathspec(&pathspec, 0, 90a6bb98 457) return run_add_interactive(NULL, "--patch=stash", &pathspec); Johannes Schindelin d2a233cb built-in add -p: prepare for patch modes other than "stage" add-patch.c d2a233cb 1567) _(s->mode->help_patch_text)); Johannes Schindelin 52628f94 built-in add -p: implement the "checkout" patch modes add-patch.c 52628f94 1272) fwrite(diff->buf, diff->len, 1, stderr); Johannes Schindelin 04f816b1 built-in add -p: respect the `interactive.singlekey` config setting add-patch.c 04f816b1 1156) int res = read_key_without_echo(&s->answer); 04f816b1 1157) printf("%s\n", res == EOF ? "" : s->answer.buf); 04f816b1 1158) return res; Johannes Schindelin 6610e462 built-in stash: use the built-in `git add -p` if so configured builtin/stash.c 6610e462 1026) setenv(INDEX_ENVIRONMENT, old_index_env, 1); Martin Ågren 3bcdd852 builtin/config: extract `handle_value_regex()` from `get_value()` builtin/config.c 3bcdd852 330) return CONFIG_INVALID_PATTERN; 3bcdd852 375) goto free_strings; Martin Ågren 3bf986d6 builtin/config: collect "value_regexp" data in a struct builtin/config.c 3bf986d6 329) FREE_AND_NULL(cmd_line_value.regexp); Ralf Thielow a4ffbbbb submodule.c: mark more strings for translation submodule.c a4ffbbbb 1161) fprintf(stderr, _("Unable to push submodule '%s'\n"), path); Uncovered code in 'next' not in 'master' -------------------------------------------------------- Commits introducing uncovered code: brian m. carlson 63ab08fb run-command: avoid undefined behavior in exists_in_PATH run-command.c 63ab08fb 216) int found = r != NULL; 63ab08fb 218) return found; Jonathan Tan 9c8a294a sha1-file: remove OBJECT_INFO_SKIP_CACHED sha1-file.c 9c8a294a 1442) *(oi->disk_sizep) = 0; 9c8a294a 1444) hashclr(oi->delta_base_sha1); 9c8a294a 1446) strbuf_addstr(oi->type_name, type_name(co->type)); Uncovered code in 'master' not in 'master@{1}' -------------------------------------------------------- Commits introducing uncovered code: