Re: [PATCH v4 1/3] stash: add tests to ensure reflog --rewrite --updatref behavior
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Mar 3, 2022, 16:11 UTC
- Message-ID
- <20334a5e-52b8-12a4-de93-a8baa5313858@gmail.com>
- In-Reply-To
- <xmqqlexsexse.fsf@gitster.g>
On 02/03/2022 23:32, Junio C Hamano wrote:
Show 33 quoted lines
> "John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:
> [...]
>> +test_expect_success REFFILES 'drop stash reflog updates refs/stash with rewrite' '
>> + git init repo &&
>> + (
>> + cd repo &&
>> + setup_stash
>> + ) &&
>
> Hmph, so this is done inside the subdirectory. The implementation
> of the helper in this iteration does look cleaner than in the
> previous iteration.
>
> But these many references to "repo/" and "-C repo" we see below
> makes me wonder why we do not put the whole thing inside the
> subshell we started earlier.
>
> i.e.
>
> git init repo &&
> (
> cd repo &&
> setup_stash_test &&
>
> echo 9 >file &&
> old=$(git rev-parse stash@{0}) &&
> git stash &&
> new=$(git rev-parse stash@{0}) &&
> ...
>
> test_cmp expect actual
> )
>I wonder if we could avoid the subshell entirely and avoid relying on REFFILES (assuming we're not trying to test the implementation details of that refs backend) by doing something like
test_expect_success 'drop stash reflog updates refs/stash with rewrite' '
old=$(git rev-parse stash@{0}) &&
setup_stash_test &&
git rev-list -g stash >tmp &&
sed /$old/d tmp >expect &&
git rev-list -g stash >actual &&
test_cmp expect actual
'Best Wishes
Phillip
Show 24 quoted lines
>> + echo 9 >repo/file &&
>> +
>> + old_oid="$(git -C repo rev-parse stash@{0})" &&
>> + git -C repo stash &&
>> + new_oid="$(git -C repo rev-parse stash@{0})" &&
>> +
>> + cat >expect <<-EOF &&
>> + $(test_oid zero) $old_oid
>> + $old_oid $new_oid
>> + EOF
>> + cut -d" " -f1-2 repo/.git/logs/refs/stash >actual &&
>> + test_cmp expect actual &&
>> +
>> + git -C repo stash drop stash@{1} &&
>> + cut -d" " -f1-2 repo/.git/logs/refs/stash >actual &&
>> + cat >expect <<-EOF &&
>> + $(test_oid zero) $new_oid
>> + EOF
>> + test_cmp expect actual
>> +'
>> +
>> test_expect_success 'stash pop' '
>> git reset --hard &&
>> git stash pop &&