On Fri, Dec 08, 2023 at 03:53:10PM +0100, Patrick Steinhardt wrote: > diff --git a/reftable/stack_test.c b/reftable/stack_test.c > index 0644c8ad2e..c979d177c2 100644 > --- a/reftable/stack_test.c > +++ b/reftable/stack_test.c > @@ -850,6 +850,52 @@ static void test_reftable_stack_auto_compaction(void) > clear_dir(dir); > } > > +static void test_reftable_stack_add_performs_auto_compaction(void) > +{ > + struct reftable_write_options cfg = { 0 }; > + struct reftable_stack *st = NULL; > + char *dir = get_tmp_dir(__LINE__); > + int err, i, n = 20; > + > + err = reftable_new_stack(&st, dir, cfg); > + EXPECT_ERR(err); > + > + for (i = 0; i <= n; i++) { > + struct reftable_ref_record ref = { > + .update_index = reftable_stack_next_update_index(st), > + .value_type = REFTABLE_REF_SYMREF, > + .value.symref = "master", > + }; > + char name[100]; > + > + /* > + * Disable auto-compaction for all but the last runs. Like this > + * we can ensure that we indeed honor this setting and have > + * better control over when exactly auto compaction runs. > + */ > + st->disable_auto_compact = i != n; > + > + snprintf(name, sizeof(name), "branch%04d", i); > + ref.refname = name; Is there a reason that we have to use snprintf() here and not a strbuf? I would have expected to see something like: struct strbuf buf = STRBUF_INIT; /* ... */ strbuf_addf(&buf, "branch%04d", i); ref.refname = strbuf_detach(&buf, NULL); I guess it doesn't matter too much, but I think if we can avoid using snprintf(), it's worth doing. If we must use snprintf() here, we should probably use Git's xsnprintf() instead. > + err = reftable_stack_add(st, &write_test_ref, &ref); > + EXPECT_ERR(err); > + > + /* > + * The stack length should grow continuously for all runs where > + * auto compaction is disabled. When enabled, we should merge > + * all tables in the stack. > + */ > + if (i != n) > + EXPECT(st->merged->stack_len == i + 1); > + else > + EXPECT(st->merged->stack_len == 1); You could shorten this to EXPECT(st->merged->stack_len == (i == n ? 1 : i + 1); But I like the version that you wrote here better, because it clearly indicates when we should and should not perform compaction. Thanks, Taylor