[PATCH v10 6/8] branch tests: test for errno propagating on failing read
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Aug 23, 2021, 11:52 UTC
- Message-ID
- <patch-v10-6.8-6dae8b643ad-20210823T114712Z-avarab@gmail.com>
- In-Reply-To
- <cover-v10-0.8-00000000000-20210823T114712Z-avarab@gmail.com>
From: Han-Wen Nienhuys <hanwen@google.com>
Add a test for "git branch" to cover the case where .git/refs is symlinked. To check availability, refs_verify_refname_available() will run refs_read_raw_ref() on each prefix, leading to a read() from .git/refs (which is a directory).
It would probably be more robust to re-issue the lstat() as a normal stat(), in which case, we would fall back to the directory case, but for now let's just test for the existing behavior as-is. This test covers a regression in a commit that only ever made it to "next", see [1].
1. http://lore.kernel.org/git/pull.1068.git.git.1629203489546.gitgitgadget@gmail.com
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- t/t3200-branch.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index cc4b10236e2..9fae13c2dea 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -731,6 +731,26 @@ test_expect_success SYMLINKS 'git branch -m u v should fail when the reflog for test_must_fail git branch -m u v ' +test_expect_success SYMLINKS 'git branch -m with symlinked .git/refs' ' + test_when_finished "rm -rf subdir" && + git init subdir && + + ( + cd subdir && + for d in refs objects packed-refs + do + rm -rf .git/$d && + ln -s ../../.git/$d .git/$d + done + ) && + git --git-dir subdir/.git/ branch rename-src && + git rev-parse rename-src >expect && + git --git-dir subdir/.git/ branch -m rename-src rename-dest && + git rev-parse rename-dest >actual && + test_cmp expect actual && + git branch -D rename-dest +' + test_expect_success 'test tracking setup via --track' ' git config remote.local.url . && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
-- 2.33.0.662.g438caf9576d