On 6/28/2019 5:47 AM, Duy Nguyen wrote: > On Fri, Jun 28, 2019 at 12:35 AM Derrick Stolee <stolee@xxxxxxxxx> wrote: >>> dir.c >>> 3b2385cf 2840) static void jw_object_untracked_cache_dir(struct json_writer *jw, >>> 3b2385cf 2845) jw_object_bool(jw, "valid", ucd->valid); >>> 3b2385cf 2846) jw_object_bool(jw, "check-only", ucd->check_only); >>> 3b2385cf 2847) jw_object_stat_data(jw, "stat", &ucd->stat_data); >>> 3b2385cf 2848) jw_object_string(jw, "exclude-oid", oid_to_hex(&ucd->exclude_oid)); >>> 3b2385cf 2849) jw_object_inline_begin_array(jw, "untracked"); >>> 3b2385cf 2850) for (i = 0; i < ucd->untracked_nr; i++) >>> 3b2385cf 2851) jw_array_string(jw, ucd->untracked[i]); >>> 3b2385cf 2852) jw_end(jw); >>> 3b2385cf 2854) jw_object_inline_begin_object(jw, "dirs"); >>> 3b2385cf 2855) for (i = 0; i < ucd->dirs_nr; i++) { >>> 3b2385cf 2856) jw_object_inline_begin_object(jw, ucd->dirs[i]->name); >>> 3b2385cf 2857) jw_object_untracked_cache_dir(jw, ucd->dirs[i]); >>> 3b2385cf 2858) jw_end(jw); >>> 3b2385cf 2860) jw_end(jw); >>> 3b2385cf 2861) } >>> 3b2385cf 2958) jw_object_inline_begin_object(jw, "root"); >>> 3b2385cf 2959) jw_object_untracked_cache_dir(jw, uc->root); >>> 3b2385cf 2960) jw_end(jw); >> >> Duy: I know you were working on some tests for these options. This is specifically >> in the "untracked cache" mode, so enabling the cache with at least one entry and >> running --debug-json should be sufficient. > > It's a bit more complicated than that, but I see your point. It usually is. I don't mean to underestimate the effort here. > I initially looked at the output and saw "something" and moved on. I > should have examined the json output more carefully. Thanks for taking a second look! >>> read-cache.c >>> 8eeabe15 1752) ret = error(_("index uses %.4s extension, which we do not understand"), >>> ee70c128 1754) if (advice_unknown_index_extension) { >>> ee70c128 1755) warning(_("ignoring optional %.4s index extension"), ext); >>> ee70c128 1756) advise(_("This is likely due to the file having been written by a newer\n" >>> 272b3f2a 2026) jw_object_true(jw, "assume_unchanged"); >>> 272b3f2a 2030) jw_object_true(jw, "skip_worktree"); >>> 272b3f2a 2032) jw_object_intmax(jw, "stage", ce_stage(ce)); >>> f0f544da 2309) ieot = read_ieot_extension(istate, mmap, mmap_size, extension_offset); >>> f0f544da 3651) static struct index_entry_offset_table *read_ieot_extension( >>> f0f544da 3673) return do_read_ieot_extension(istate, index, extsize); >> >> Duy: more JSON output cases that could be interesting to cover. > > This is because I changed the function signature, I think. Both IEOT > and EOIE extensions, if I'm not mistaken, are never tested in the test > suite. You need to set GIT_TEST_INDEX_THREADS, then the last three > lines should be covered. Thanks! Unfortunately, the threading is removed at compile-time in order to prevent race conditions with the gcov output. This means the report will never report the threading code as covered. :( Does that same reasoning apply to the assume_unchanged, skip_worktree, and "stage" lines? -Stolee