Re: [PATCH 6/6] builtin/reflog: introduce subcommand to list reflogs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 20, 2024, 00:32 UTC
- Message-ID
- <xmqq7cj0ynys.fsf@gitster.g>
- In-Reply-To
- <cddb2de9394a07e405682e9ccdfdf5de92bb9092.1708353264.git.ps@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 34 quoted lines
> diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh > index d2f5f42e67..6d8d5a253d 100755 > --- a/t/t1410-reflog.sh > +++ b/t/t1410-reflog.sh > @@ -436,4 +436,73 @@ test_expect_success 'empty reflog' ' > test_must_be_empty err > ' > > +test_expect_success 'list reflogs' ' > + test_when_finished "rm -rf repo" && > + git init repo && > + ( > + cd repo && > + git reflog list >actual && > + test_must_be_empty actual && > + > + test_commit A && > + cat >expect <<-EOF && > + HEAD > + refs/heads/main > + EOF > + git reflog list >actual && > + test_cmp expect actual && > + > + git branch b && > + cat >expect <<-EOF && > + HEAD > + refs/heads/b > + refs/heads/main > + EOF > + git reflog list >actual && > + test_cmp expect actual > + ) > +'
OK. This is a quite boring baseline.
Show 7 quoted lines
> +test_expect_success 'reflog list returns error with additional args' '
> + cat >expect <<-EOF &&
> + error: list does not accept arguments: ${SQ}bogus${SQ}
> + EOF
> + test_must_fail git reflog list bogus 2>err &&
> + test_cmp expect err
> +'Makes sense.
Show 15 quoted lines
> +test_expect_success 'reflog for symref with unborn target can be listed' ' > + test_when_finished "rm -rf repo" && > + git init repo && > + ( > + cd repo && > + test_commit A && > + git symbolic-ref HEAD refs/heads/unborn && > + cat >expect <<-EOF && > + HEAD > + refs/heads/main > + EOF > + git reflog list >actual && > + test_cmp expect actual > + ) > +'
Should this be under REFFILES? Ah, no, "git symbolic-ref" is valid under reftable as well, so there is no need to.
Without [5/6], would it have failed to show the reflog for HEAD?
Show 17 quoted lines
> +test_expect_success 'reflog with invalid object ID can be listed' ' > + test_when_finished "rm -rf repo" && > + git init repo && > + ( > + cd repo && > + test_commit A && > + test-tool ref-store main update-ref msg refs/heads/missing \ > + $(test_oid deadbeef) "$ZERO_OID" REF_SKIP_OID_VERIFICATION && > + cat >expect <<-EOF && > + HEAD > + refs/heads/main > + refs/heads/missing > + EOF > + git reflog list >actual && > + test_cmp expect actual > + ) > +'
OK.
> test_done
It would have been "interesting" to see an example of "there is a reflog but the underlying ref for it is missing" case, but I think that falls into a minor repository corruption category, so lack of such a test is also fine.