dd9005a0a ("fsmonitor: delay updating state until after split index is merged", 2017-10-27) began deferring the setting of the CE_FSMONITOR_VALID flag until later, such that do_read_index() does not perform those steps. This means that t/helper/test-dump-fsmonitor showed all bits as always unset. Split out the code which inflates the ewah into CE_FSMONITOR_VALID bits, and call that from t/helper/test-dump-fsmonitor. We cannot simply switch the code to call read_index_from or the more specific tweak_fsmonitor, because the latter would modify the extension state by calling add_fsmonitor. Signed-off-by: Alex Vandiver <alexmv@xxxxxxxxxxx> --- fsmonitor.c | 9 ++++++++- fsmonitor.h | 6 ++++++ t/helper/test-dump-fsmonitor.c | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/fsmonitor.c b/fsmonitor.c index 0af7c4edb..7011dff15 100644 --- a/fsmonitor.c +++ b/fsmonitor.c @@ -227,7 +227,7 @@ void remove_fsmonitor(struct index_state *istate) } } -void tweak_fsmonitor(struct index_state *istate) +void inflate_fsmonitor_ewah(struct index_state *istate) { int i; int fsmonitor_enabled = git_config_get_fsmonitor(); @@ -250,6 +250,13 @@ void tweak_fsmonitor(struct index_state *istate) ewah_free(istate->fsmonitor_dirty); istate->fsmonitor_dirty = NULL; } +} + +void tweak_fsmonitor(struct index_state *istate) +{ + int fsmonitor_enabled = git_config_get_fsmonitor(); + + inflate_fsmonitor_ewah(istate); switch (fsmonitor_enabled) { case -1: /* keep: do nothing */ diff --git a/fsmonitor.h b/fsmonitor.h index 5f68ca4d2..619852d4b 100644 --- a/fsmonitor.h +++ b/fsmonitor.h @@ -28,6 +28,12 @@ extern void write_fsmonitor_extension(struct strbuf *sb, struct index_state *ist extern void add_fsmonitor(struct index_state *istate); extern void remove_fsmonitor(struct index_state *istate); +/* + * Inflate the fsmonitor_dirty ewah into the CE_FSMONITOR_VALID bits. + * Called by tweak_fsmonitor. + */ +extern void inflate_fsmonitor_ewah(struct index_state *istate); + /* * Add/remove the fsmonitor index extension as necessary based on the current * core.fsmonitor setting. diff --git a/t/helper/test-dump-fsmonitor.c b/t/helper/test-dump-fsmonitor.c index ad452707e..53b19b39b 100644 --- a/t/helper/test-dump-fsmonitor.c +++ b/t/helper/test-dump-fsmonitor.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "fsmonitor.h" int cmd_main(int ac, const char **av) { @@ -8,6 +9,7 @@ int cmd_main(int ac, const char **av) setup_git_directory(); if (do_read_index(istate, get_index_file(), 0) < 0) die("unable to read index file"); + inflate_fsmonitor_ewah(istate); if (!istate->fsmonitor_last_update) { printf("no fsmonitor\n"); return 0; -- 2.15.1.626.gc4617b774