On Sun, Jun 20, 2021 at 10:02:56PM +0200, SZEDER Gábor wrote: > It turned out that progress > counters can be checked easily and transparently in case of progress > lines that are shown in the tests, i.e. that are shown even when > stderr is not a terminal or are forced with '--progress'. (In other > cases it's still fairly easy but not quite transparent, as I think we > need changes to the progress API; more on that later in a separate > series.) So, the first patch in this WIP/POC series is my attempt at checking even those progress counters that are not shown in our test suite, either because stderr is not a terminal or because of an explicit '--no-progress' option. There are no usable commit messages yet, I just wanted to see whether it's possible to check all progress lines and whether it uncovers any more bugs; and the answer is yes to both. Anyway, the basic idea is that instead of checking isatty(2) in the caller, let's perform that check in start_progress() and let callers override it through an extra function parameter (e.g. when '--(no-)progress', '-v' or '--quiet' was given). This way start_progress() will always be called and it would then return NULL if the progress line should not be shown. Or, if GIT_TEST_CHECK_PROGRESS=1, then it would return a valid non-NULL progress instance even when the progress line should not be shown, but with the new 'progress->hidden' flag set, so subsequent display_progress() and stop_progress() calls won't print anything but will be able to perform all the checks and trigger BUG() if one is violated. However, after Ævar pointed out upthread that progress also generates trace2 regions, I think that it would be better if start_progress() always returned a valid progress instance, even without GIT_TEST_CHECK_PROGRESS but with 'progress->hidden' set as necessary, because that way we would always get that trace2 output, even with '--no-progress' or 'git cmd 2>log'. The first patch also converts a good couple of progress lines to this new approach, and the subsequent patches fix most of the uncovered buggy progress lines. SZEDER Gábor (4): WIP progress, isatty(2), hidden progress lnies for GIT_TEST_CHECK_PROGRESS blame: fix progress total with line ranges read-cache: avoid overlapping progress lines preload-index: fix "Refreshing index" progress line builtin/blame.c | 8 ++++---- builtin/fsck.c | 10 +++------- builtin/index-pack.c | 18 +++++++++--------- builtin/log.c | 4 ++-- builtin/prune.c | 5 +---- builtin/unpack-objects.c | 6 +++--- preload-index.c | 10 +++++----- progress.c | 26 +++++++++++++++++++------- progress.h | 6 ++++-- read-cache.c | 9 +++++---- 10 files changed, 55 insertions(+), 47 deletions(-) -- 2.32.0.289.g44fbea0957