Fix direct filesystem access in various test files.
cover Fix direct filesystem access in various test files.
This fixes a few test failures in the reftable series.
Han-Wen Nienhuys (6):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t7509: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t/t1503-rev-parse-verify.sh | 2 +- t/t2402-worktree-list.sh | 2 +- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- t/t6050-replace.sh | 2 +- t/t6120-describe.sh | 6 ++++-- t/t7509-commit-authorship.sh | 4 ++-- 6 files changed, 16 insertions(+), 12 deletions(-)
base-commit: 75ae10bc75336db031ee58d13c5037b929235912
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1052%2Fhanwen%2Ftest-fixes-v3-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1052/hanwen/test-fixes-v3-v1
Pull-Request: https://github.com/git/git/pull/1052
Signature · 1 line
gitgitgadget
PATCH 5/6 t3320: use git-symbolic-ref rather than filesystem access
From: Han-Wen Nienhuys <[email protected]>
--- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
t/t3320-notes-merge-worktrees.sh +7 -5
@@ -46,8 +46,9 @@ test_expect_success 'create some new worktrees' ' test_expect_success 'merge z into y fails and sets NOTES_MERGE_REF' ' git config core.notesRef refs/notes/y && test_must_fail git notes merge z && - echo "ref: refs/notes/y" >expect && - test_cmp expect .git/NOTES_MERGE_REF + echo "refs/notes/y" >expect && + git symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_expect_success 'merge z into y while mid-merge in another workdir fails' '
@@ -57,7 +58,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' ' test_must_fail git notes merge z 2>err && test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err ) && - test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF + test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF ' test_expect_success 'merge z into x while mid-merge on y succeeds' '
@@ -68,8 +69,9 @@ test_expect_success 'merge z into x while mid-merge on y succeeds' ' test_i18ngrep "Automatic notes merge failed" out && grep -v "A notes merge into refs/notes/x is already in-progress in" out ) && - echo "ref: refs/notes/x" >expect && - test_cmp expect .git/worktrees/worktree2/NOTES_MERGE_REF + echo "refs/notes/x" >expect && + git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_done
Signature · 1 line
gitgitgadget
PATCH 1/6 t6050: use git-update-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6050-replace.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t6050-replace.sh +1 -1
@@ -132,7 +132,7 @@ tagger T A Gger <> 0 +0000 EOF test_expect_success 'tag replaced commit' ' - git mktag <tag.sig >.git/refs/tags/mytag + git update-ref refs/tags/mytag $(git mktag <tag.sig) ' test_expect_success '"git fsck" works' '
Signature · 1 line
gitgitgadget
PATCH 2/6 t1503: mark symlink test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t1503-rev-parse-verify.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t1503-rev-parse-verify.sh +1 -1
@@ -142,7 +142,7 @@ test_expect_success 'main@{n} for various n' ' test_must_fail git rev-parse --verify main@{$Np1} ' -test_expect_success SYMLINKS 'ref resolution not confused by broken symlinks' ' +test_expect_success SYMLINKS,REFFILES 'ref resolution not confused by broken symlinks' ' ln -s does-not-exist .git/refs/heads/broken && test_must_fail git rev-parse --verify broken '
Signature · 1 line
gitgitgadget
PATCH 6/6 t2402: use ref-store test helper to create broken symlink
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t2402-worktree-list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t2402-worktree-list.sh +1 -1
@@ -230,7 +230,7 @@ test_expect_success 'broken main worktree still at the top' ' EOF cd linked && echo "worktree $(pwd)" >expected && - echo "ref: .broken" >../.git/HEAD && + (cd ../ && test-tool ref-store main create-symref HEAD .broken ) && git worktree list --porcelain >out && head -n 3 out >actual && test_cmp ../expected actual &&
Signature · 1 line
gitgitgadget
PATCH 3/6 t6120: use git-update-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6120-describe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
t/t6120-describe.sh +4 -2
@@ -107,7 +107,8 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' ' check_describe tags/A --all A^0 test_expect_success 'renaming tag A to Q locally produces a warning' " - mv .git/refs/tags/A .git/refs/tags/Q && + git update-ref refs/tags/Q $(git rev-parse refs/tags/A) && + git update-ref -d refs/tags/A && git describe HEAD 2>err >out && cat >expected <<-\EOF && warning: tag 'Q' is externally known as 'A'
@@ -135,7 +136,8 @@ test_expect_success 'abbrev=0 will not break misplaced tag (2)' ' ' test_expect_success 'rename tag Q back to A' ' - mv .git/refs/tags/Q .git/refs/tags/A + git update-ref refs/tags/A $(git rev-parse refs/tags/Q) && + git update-ref -d refs/tags/Q ' test_expect_success 'pack tag refs' 'git pack-refs'
Signature · 1 line
gitgitgadget
PATCH 4/6 t7509: use git-update-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t7509-commit-authorship.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
t/t7509-commit-authorship.sh +2 -2
@@ -147,7 +147,7 @@ test_expect_success 'commit respects CHERRY_PICK_HEAD and MERGE_MSG' ' test_tick && git commit -am "cherry-pick 1" --author="Cherry <[email protected]>" && git tag cherry-pick-head && - git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD && + git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) && echo "This is a MERGE_MSG" >.git/MERGE_MSG && echo "cherry-pick 1b" >>foo && test_tick &&
@@ -162,7 +162,7 @@ test_expect_success 'commit respects CHERRY_PICK_HEAD and MERGE_MSG' ' ' test_expect_success '--reset-author with CHERRY_PICK_HEAD' ' - git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD && + git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) && echo "cherry-pick 2" >>foo && test_tick && git commit -am "cherry-pick 2" --reset-author &&
Signature · 1 line
gitgitgadget
Re: [PATCH 4/6] t7509: use git-update-ref rather than filesystem access
Quoted 6 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
Signed-off-by Han-Wen Nienhuys <[email protected]>--- t/t7509-commit-authorship.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
This seems identical to one of the commits in hn/refs-test-cleanup that has already been merged to 'master', so I'll drop this copy.
Thanks.
Quoted 22 lines
t/t7509-commit-authorship.sh +2
-2@@ -147,7 +147,7 @@ test_expect_success 'commit respects CHERRY_PICK_HEAD and MERGE_MSG' ' test_tick && git commit -am "cherry-pick 1" --author="Cherry <[email protected]>" && git tag cherry-pick-head && - git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD && + git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) && echo "This is a MERGE_MSG" >.git/MERGE_MSG && echo "cherry-pick 1b" >>foo && test_tick &&@@ -162,7 +162,7 @@ test_expect_success 'commit respects CHERRY_PICK_HEAD and MERGE_MSG' ' ' test_expect_success '--reset-author with CHERRY_PICK_HEAD' ' - git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD && + git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) && echo "cherry-pick 2" >>foo && test_tick && git commit -am "cherry-pick 2" --reset-author &&
v2 cover Fix direct filesystem access in various test files.
In reply to Han-Wen Nienhuys via GitGitGadgetThis fixes a few test failures in the reftable series.
Han-Wen Nienhuys (11):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
t/t1405-main-ref-store.sh | 12 ++++++++---- t/t1410-reflog.sh | 4 +++- t/t1503-rev-parse-verify.sh | 2 +- t/t2402-worktree-list.sh | 2 +- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- t/t6001-rev-list-graft.sh | 3 ++- t/t6050-replace.sh | 2 +- t/t6120-describe.sh | 6 ++++-- t/t6500-gc.sh | 5 +++-- t/t7064-wtstatus-pv2.sh | 5 +---- 10 files changed, 31 insertions(+), 22 deletions(-)
base-commit: daab8a564f8bbac55f70f8bf86c070e001a9b006
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1052%2Fhanwen%2Ftest-fixes-v3-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1052/hanwen/test-fixes-v3-v2
Pull-Request: https://github.com/git/git/pull/1052
Range-diff vs v1:
1: 61a5c3718df = 1: d7616038d88 t6050: use git-update-ref rather than filesystem access 2: 49994a0d154 = 2: cbd2128c331 t1503: mark symlink test as REFFILES 3: 695921cacb6 = 3: cbf90c13e5b t6120: use git-update-ref rather than filesystem access 4: 94d7e144f54 < -: ----------- t7509: use git-update-ref rather than filesystem access 5: cc400e9131d = 4: 7b98d092811 t3320: use git-symbolic-ref rather than filesystem access 6: 4d83f70e133 = 5: 0047266de6b t2402: use ref-store test helper to create broken symlink -: ----------- > 6: eb2c53d19cf t1405: use 'git reflog exists' to check reflog existence -: ----------- > 7: 05dead16f1c t1405: mark test for 'git pack-refs' as REFFILES -: ----------- > 8: f931a26de58 t1410: mark test as REFFILES -: ----------- > 9: 3685ba90f60 t7064: use update-ref -d to remove upstream branch -: ----------- > 10: ccdbf3749fe t6500: use "ls -1" to snapshot ref database state -: ----------- > 11: 81e46f95536 t6001: avoid direct file system access
Signature · 1 line
gitgitgadget
PATCH v2 1/11 t6050: use git-update-ref rather than filesystem access
From: Han-Wen Nienhuys <[email protected]>
--- t/t6050-replace.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t6050-replace.sh +1 -1
@@ -132,7 +132,7 @@ tagger T A Gger <> 0 +0000 EOF test_expect_success 'tag replaced commit' ' - git mktag <tag.sig >.git/refs/tags/mytag + git update-ref refs/tags/mytag $(git mktag <tag.sig) ' test_expect_success '"git fsck" works' '
Signature · 1 line
gitgitgadget
PATCH v2 3/11 t6120: use git-update-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6120-describe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
t/t6120-describe.sh +4 -2
@@ -107,7 +107,8 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' ' check_describe tags/A --all A^0 test_expect_success 'renaming tag A to Q locally produces a warning' " - mv .git/refs/tags/A .git/refs/tags/Q && + git update-ref refs/tags/Q $(git rev-parse refs/tags/A) && + git update-ref -d refs/tags/A && git describe HEAD 2>err >out && cat >expected <<-\EOF && warning: tag 'Q' is externally known as 'A'
@@ -135,7 +136,8 @@ test_expect_success 'abbrev=0 will not break misplaced tag (2)' ' ' test_expect_success 'rename tag Q back to A' ' - mv .git/refs/tags/Q .git/refs/tags/A + git update-ref refs/tags/A $(git rev-parse refs/tags/Q) && + git update-ref -d refs/tags/Q ' test_expect_success 'pack tag refs' 'git pack-refs'
Signature · 1 line
gitgitgadget
PATCH v2 2/11 t1503: mark symlink test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t1503-rev-parse-verify.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t1503-rev-parse-verify.sh +1 -1
@@ -142,7 +142,7 @@ test_expect_success 'main@{n} for various n' ' test_must_fail git rev-parse --verify main@{$Np1} ' -test_expect_success SYMLINKS 'ref resolution not confused by broken symlinks' ' +test_expect_success SYMLINKS,REFFILES 'ref resolution not confused by broken symlinks' ' ln -s does-not-exist .git/refs/heads/broken && test_must_fail git rev-parse --verify broken '
Signature · 1 line
gitgitgadget
PATCH v2 5/11 t2402: use ref-store test helper to create broken symlink
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t2402-worktree-list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t2402-worktree-list.sh +1 -1
@@ -230,7 +230,7 @@ test_expect_success 'broken main worktree still at the top' ' EOF cd linked && echo "worktree $(pwd)" >expected && - echo "ref: .broken" >../.git/HEAD && + (cd ../ && test-tool ref-store main create-symref HEAD .broken ) && git worktree list --porcelain >out && head -n 3 out >actual && test_cmp ../expected actual &&
Signature · 1 line
gitgitgadget
PATCH v2 4/11 t3320: use git-symbolic-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
t/t3320-notes-merge-worktrees.sh +7 -5
@@ -46,8 +46,9 @@ test_expect_success 'create some new worktrees' ' test_expect_success 'merge z into y fails and sets NOTES_MERGE_REF' ' git config core.notesRef refs/notes/y && test_must_fail git notes merge z && - echo "ref: refs/notes/y" >expect && - test_cmp expect .git/NOTES_MERGE_REF + echo "refs/notes/y" >expect && + git symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_expect_success 'merge z into y while mid-merge in another workdir fails' '
@@ -57,7 +58,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' ' test_must_fail git notes merge z 2>err && test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err ) && - test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF + test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF ' test_expect_success 'merge z into x while mid-merge on y succeeds' '
@@ -68,8 +69,9 @@ test_expect_success 'merge z into x while mid-merge on y succeeds' ' test_i18ngrep "Automatic notes merge failed" out && grep -v "A notes merge into refs/notes/x is already in-progress in" out ) && - echo "ref: refs/notes/x" >expect && - test_cmp expect .git/worktrees/worktree2/NOTES_MERGE_REF + echo "refs/notes/x" >expect && + git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_done
Signature · 1 line
gitgitgadget
PATCH v2 6/11 t1405: use 'git reflog exists' to check reflog existence
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
This fixes a test failure for reftable.
--- t/t1405-main-ref-store.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
t/t1405-main-ref-store.sh +2 -2
@@ -98,12 +98,12 @@ test_expect_success 'reflog_exists(HEAD)' ' test_expect_success 'delete_reflog(HEAD)' ' $RUN delete-reflog HEAD && - ! test -f .git/logs/HEAD + test_must_fail git reflog exists HEAD ' test_expect_success 'create-reflog(HEAD)' ' $RUN create-reflog HEAD 1 && - test -f .git/logs/HEAD + git reflog exists HEAD ' test_expect_success 'delete_ref(refs/heads/foo)' '
Signature · 1 line
gitgitgadget
PATCH v2 7/11 t1405: mark test for 'git pack-refs' as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
The outcome of the pack-refs operation is not checked. This was apparently forgotten in the commit introducing this test: 16feb99d (Mar 26 2017, "t1405:
some basic tests on main ref store").
I tried adding the obvious check this, but it seems to fail on the freebsd_12 builder.
--- t/t1405-main-ref-store.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
t/t1405-main-ref-store.sh +6 -2
@@ -9,8 +9,12 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME RUN="test-tool ref-store main" -test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' ' - test_commit one && + +test_expect_success 'setup' ' + test_commit one +' + +test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' ' N=`find .git/refs -type f | wc -l` && test "$N" != 0 && $RUN pack-refs 3 &&
Signature · 1 line
gitgitgadget
PATCH v2 8/11 t1410: mark test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
In reftable, one cannot take a lock on an individual ref.
--- t/t1410-reflog.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
t/t1410-reflog.sh +3 -1
@@ -374,7 +374,9 @@ test_expect_failure 'reflog with non-commit entries displays all entries' ' test_line_count = 3 actual ' -test_expect_success 'reflog expire operates on symref not referrent' ' +# This test takes a lock on an individual ref; this is not supported in +# reftable. +test_expect_success REFFILES 'reflog expire operates on symref not referrent' ' git branch --create-reflog the_symref && git branch --create-reflog referrent && git update-ref referrent HEAD &&
Signature · 1 line
gitgitgadget
PATCH v2 9/11 t7064: use update-ref -d to remove upstream branch
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
The previous code tested this by writing $ZERO_OID explicitly in the packed-refs file. This is a type of corruption that doesn't reflect realistic use-cases. In addition, even the ref-store test-tool refuses to write invalid OIDs. (update-ref interprets $ZERO_OID is deleting the ref).
--- t/t7064-wtstatus-pv2.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
t/t7064-wtstatus-pv2.sh +1 -4
@@ -373,10 +373,7 @@ test_expect_success 'verify upstream fields in branch header' ' ## Test upstream-gone case. Fake this by pointing ## origin/initial-branch at a non-existing commit. - OLD=$(git rev-parse origin/initial-branch) && - NEW=$ZERO_OID && - mv .git/packed-refs .git/old-packed-refs && - sed "s/$OLD/$NEW/g" <.git/old-packed-refs >.git/packed-refs && + git update-ref -d refs/remotes/origin/initial-branch && HUF=$(git rev-parse HEAD) &&
Signature · 1 line
gitgitgadget
PATCH v2 10/11 t6500: use "ls -1" to snapshot ref database state
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
By doing ls -1 .git/{reftable,refs/heads}, we can capture changes to both reftable and packed/loose ref storage.
--- t/t6500-gc.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
t/t6500-gc.sh +3 -2
@@ -241,7 +241,7 @@ test_expect_success 'background auto gc respects lock for all operations' ' # create a ref whose loose presence we can use to detect a pack-refs run git update-ref refs/heads/should-be-loose HEAD && - test_path_is_file .git/refs/heads/should-be-loose && + (ls -1 .git/refs/heads .git/reftable >expect || true) && # now fake a concurrent gc that holds the lock; we can use our # shell pid so that it looks valid.
@@ -258,7 +258,8 @@ test_expect_success 'background auto gc respects lock for all operations' ' # our gc should exit zero without doing anything run_and_wait_for_auto_gc && - test_path_is_file .git/refs/heads/should-be-loose + (ls -1 .git/refs/heads .git/reftable >actual || true) && + test_cmp expect actual ' # DO NOT leave a detached auto gc process running near the end of the
Signature · 1 line
gitgitgadget
PATCH v2 11/11 t6001: avoid direct file system access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6001-rev-list-graft.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
t/t6001-rev-list-graft.sh +2 -1
@@ -23,7 +23,8 @@ test_expect_success setup ' git commit -a -m "Third in one history." && A2=$(git rev-parse --verify HEAD) && - rm -f .git/refs/heads/main .git/index && + git update-ref -d refs/heads/main && + rm -f .git/index && echo >fileA fileA again && echo >subdir/fileB fileB again &&
Signature · 1 line
gitgitgadget
Quoted 9 lines · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
Han-Wen Nienhuys (6):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t7509: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
Modulo for the duplicated one, the other 5 looked all sensible and are now part of 'next'.
Thanks.
Re: [PATCH v2 06/11] t1405: use 'git reflog exists' to check reflog existence
In reply to Han-Wen Nienhuys via GitGitGadgetQuoted 16 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
This fixes a test failure for reftable.
Signed-off-by Han-Wen Nienhuys <[email protected]>--- t/t1405-main-ref-store.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)t/t1405-main-ref-store.sh +0
-0@@ -98,12 +98,12 @@ test_expect_success 'reflog_exists(HEAD)' ' test_expect_success 'delete_reflog(HEAD)' '
t/t1405-main-ref-store.sh test_expect_success 'reflog_exists(HEAD)' ' · line 107
Quoted 10 lines
t/t1405-main-ref-store.sh +2
-2$RUN delete-reflog HEAD && - ! test -f .git/logs/HEAD + test_must_fail git reflog exists HEAD ' test_expect_success 'create-reflog(HEAD)' ' $RUN create-reflog HEAD 1 && - test -f .git/logs/HEAD + git reflog exists HEAD '
Obviously more logical. Thanks.
Re: [PATCH v2 07/11] t1405: mark test for 'git pack-refs' as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetQuoted 8 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
The outcome of the pack-refs operation is not checked. This was apparently forgotten in the commit introducing this test:
16feb99d(Mar 26 2017, "t1405:
some basic tests on main ref store").I tried adding the obvious check this, but it seems to fail on the
freebsd_12builder.
These two paragraphs may state the truth, but readers would appreciate if it is clarified that they are both side notes that do not necessarily help understanding the change being made with the patch. Something like this
The number of loose ref files under .git/refs/ directory before and after running the "git pack-refs" command only matter when the files ref-backend is in use, so hide the test behind the REFFILES prerequisite.
would be needed before these sidenotes.
With a larger context, as you said,
diff --git a/t/t1405-main-ref-store.sh b/t/t1405-main-ref-store.sh
index 92b0487324..3517f54961 100755
--- a/t/t1405-main-ref-store.sh
+++ b/t/t1405-main-ref-store.sh
@@ -9,10 +9,14 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
RUN="test-tool ref-store main"
-test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
- test_commit one &&
+
+test_expect_success 'setup' '
+ test_commit one
+'
+
+test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
N=`find .git/refs -type f | wc -l` &&
test "$N" != 0 &&
$RUN pack-refs 3 &&
N=`find .git/refs -type f | wc -l`
'we do count the number of regular files in .git/refs hierarchy after running "test-tool ref-store main pack-refs 3" (whatever that means).
I think your "obvious check" would have been something like the attached? How would that break? It is not the "'wc -l' pads the output with extra spaces" we often see on macOS, is it?
Thanks.
t/t1405-main-ref-store.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
t/t1405-main-ref-store.sh +4 -3
@@ -15,10 +15,11 @@ test_expect_success 'setup' ' ' test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' ' - N=`find .git/refs -type f | wc -l` && - test "$N" != 0 && + N=$(find .git/refs -type f | wc -l) && + test $N -ne 0 && $RUN pack-refs 3 && - N=`find .git/refs -type f | wc -l` + N=$(find .git/refs -type f | wc -l) && + test $N -eq 0 ' test_expect_success 'create_symref(FOO, refs/heads/main)' '
Re: [PATCH v2 08/11] t1410: mark test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetQuoted 8 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
In reftable, one cannot take a lock on an individual ref.
Signed-off-by Han-Wen Nienhuys <[email protected]>--- t/t1410-reflog.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
Makes sense, I guess, but it makes it sound as if you can only take a big single lock to freeze everything (as opposed to being able to work on independent refs in parallel). Is that what you meant to say?
A file somewhere in .git/refs/ directory shouldn't be a way to lock a ref in the reftable world, either, so it doubly makes sense.
Quoted 15 lines
t/t1410-reflog.sh +3
-1@@ -374,7 +374,9 @@ test_expect_failure 'reflog with non-commit entries displays all entries' ' test_line_count = 3 actual ' -test_expect_success 'reflog expire operates on symref not referrent' ' +# This test takes a lock on an individual ref; this is not supported in +# reftable. +test_expect_success REFFILES 'reflog expire operates on symref not referrent' ' git branch --create-reflog the_symref && git branch --create-reflog referrent && git update-ref referrent HEAD &&
Re: [PATCH v2 09/11] t7064: use update-ref -d to remove upstream branch
In reply to Han-Wen Nienhuys via GitGitGadgett/t7064-wtstatus-pv2.sh test_expect_success 'verify upstream fields in branch header' ' · line 376
Quoted 7 lines · Han-Wen Nienhuys via GitGitGadget
t/t7064-wtstatus-pv2.sh +1
-4## Test upstream-gone case. Fake this by pointing ## origin/initial-branch at a non-existing commit. - OLD=$(git rev-parse origin/initial-branch) && - NEW=$ZERO_OID && - mv .git/packed-refs .git/old-packed-refs && - sed "s/$OLD/$NEW/g" <.git/old-packed-refs >.git/packed-refs && + git update-ref -d refs/remotes/origin/initial-branch &&
OK, so we now "fake" upstream-gone by making the upstream actually gone ;-) OK.
Quoted 2 lines
HUF=$(git rev-parse HEAD) &&
Re: [PATCH v2 11/11] t6001: avoid direct file system access
In reply to Han-Wen Nienhuys via GitGitGadgetQuoted 12 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
Signed-off-by Han-Wen Nienhuys <[email protected]>--- t/t6001-rev-list-graft.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)t/t6001-rev-list-graft.sh +0
-0
t/t6001-rev-list-graft.sh test_expect_success setup ' · line 27
Quoted 6 lines
t/t6001-rev-list-graft.sh +2
-1@@ -23,7 +23,8 @@ test_expect_success setup ' git commit -a -m "Third in one history." && A2=$(git rev-parse --verify HEAD) && - rm -f .git/refs/heads/main .git/index && + git update-ref -d refs/heads/main && + rm -f .git/index &&
Makes sense. We might want a further clean-up to avoid removing the index file by hand but that is totally outside the scope of the "refs" series.
Thanks.
Quoted 1 line · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
The early part is already in 'next', and the new ones looked mostly good.
I didn't quite understand what was going on with "ls -1" though (what does it even mean to "ls -1" enumerate only the filenames in .git/reftable directory)?
Thanks.
Quoted 11 lines · Junio C Hamano
Quoted 1 line · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
The early part is already in 'next', and the new ones looked mostly good.
I didn't quite understand what was going on with "ls -1" though (what does it even mean to "ls -1" enumerate only the filenames in .git/reftable directory)?
By listing the files before and after, we can make sure that the ref storage wasn't changed.
(perhaps "find -type f" is a better way to do this, though).
Signature · 7 lines
Han-Wen Nienhuys - Google Munich I work 80%. Don't expect answers from me on Fridays. -- Google Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Quoted 9 lines · Han-Wen Nienhuys
Quoted 8 lines · Junio C Hamano
Quoted 1 line · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
The early part is already in 'next', and the new ones looked mostly good.
Quoted 7 lines
Quoted 3 lines
I didn't quite understand what was going on with "ls -1" though (what does it even mean to "ls -1" enumerate only the filenames in .git/reftable directory)?
By listing the files before and after, we can make sure that the ref storage wasn't changed.
Meaning that we rely on the fact that we never append to an existing file?
Thanks.
Quoted 9 lines · Han-Wen Nienhuys
Quoted 8 lines · Junio C Hamano
Quoted 1 line · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
The early part is already in 'next', and the new ones looked mostly good.
Quoted 7 lines
Quoted 3 lines
I didn't quite understand what was going on with "ls -1" though (what does it even mean to "ls -1" enumerate only the filenames in .git/reftable directory)?
By listing the files before and after, we can make sure that the ref storage wasn't changed.
Meaning that we rely on the fact that we never append to an existing file? A comment here would have helped.
Thanks.
v3 cover Fix direct filesystem access in various test files.
In reply to Han-Wen Nienhuys via GitGitGadgetThis fixes a few test failures in the reftable series.
Han-Wen Nienhuys (11):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
t/t1405-main-ref-store.sh | 18 ++++++++++++------ t/t1410-reflog.sh | 4 +++- t/t1503-rev-parse-verify.sh | 2 +- t/t2402-worktree-list.sh | 2 +- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- t/t6001-rev-list-graft.sh | 3 ++- t/t6050-replace.sh | 2 +- t/t6120-describe.sh | 6 ++++-- t/t6500-gc.sh | 5 +++-- t/t7064-wtstatus-pv2.sh | 5 +---- 10 files changed, 35 insertions(+), 24 deletions(-)
base-commit: 940fe202adcbf9fa1825c648d97cbe1b90d26aec
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1052%2Fhanwen%2Ftest-fixes-v3-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1052/hanwen/test-fixes-v3-v3
Pull-Request: https://github.com/git/git/pull/1052
Range-diff vs v2:
1: d7616038d88 = 1: ad9fd570024 t6050: use git-update-ref rather than filesystem access 2: cbd2128c331 = 2: b03be9ede7f t1503: mark symlink test as REFFILES 3: cbf90c13e5b = 3: b62c3175c4c t6120: use git-update-ref rather than filesystem access 4: 7b98d092811 = 4: 22bff0b0791 t3320: use git-symbolic-ref rather than filesystem access 5: 0047266de6b = 5: ceca139bcfc t2402: use ref-store test helper to create broken symlink 6: eb2c53d19cf = 6: add97ad8d0b t1405: use 'git reflog exists' to check reflog existence 7: 05dead16f1c ! 7: 5f9a01fd86a t1405: mark test for 'git pack-refs' as REFFILES
@@ Metadata
## Commit message ##
t1405: mark test for 'git pack-refs' as REFFILES
- The outcome of the pack-refs operation is not checked. This was apparently
- forgotten in the commit introducing this test: 16feb99d (Mar 26 2017, "t1405:
- some basic tests on main ref store").
+ The tests verifies that "pack-refs" causes loose refs to be packed. As both
+ loose and packed refs are concepts specific to the files backend, mark the test
+ as REFFILES.
- I tried adding the obvious check this, but it seems to fail on the freebsd_12
- builder.
+ Check the outcome of the pack-refs operation. This was apparently forgotten in
+ the commit introducing this test: 16feb99d (Mar 26 2017, "t1405: some basic
+ tests on main ref store").
@@ t/t1405-main-ref-store.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
N=find .git/refs -type f | wc -l &&
test "$N" != 0 &&
- $RUN pack-refs 3 &&
+- $RUN pack-refs 3 &&
+- N=find .git/refs -type f | wc -l
++ ALL_OR_PRUNE_FLAG=3 &&
++ $RUN pack-refs ${ALL_OR_PRUNE_FLAG} &&
++ N=find .git/refs -type f &&
++ test -z "$N"
+ '
+
+ test_expect_success 'create_symref(FOO, refs/heads/main)' '
8: f931a26de58 ! 8: 45bc0772c64 t1410: mark test as REFFILES
@@ Metadata
## Commit message ##
t1410: mark test as REFFILES
- In reftable, one cannot take a lock on an individual ref.
+ This test takes a lock on the target of a symref, and then verifies that it is
+ possible to expire the symref's reflog. In reftable, one can only take a global
+ lock (which would prevent the symref reflog from being expired altogether.)
9: 3685ba90f60 = 9: 1326e99a1fd t7064: use update-ref -d to remove upstream branch 10: ccdbf3749fe ! 10: 55eb2094811 t6500: use "ls -1" to snapshot ref database state
@@ Commit message
By doing ls -1 .git/{reftable,refs/heads}, we can capture changes to both reftable and packed/loose ref storage.
+ This relies on the fact that git-pack-refs (which we're looking for here)
+ changes the number (loose/packed storage) and/or names (reftable) files used for
+ ref storage.
+
## t/t6500-gc.sh ##
11: 81e46f95536 = 11: 4a3418b7954 t6001: avoid direct file system access
Signature · 1 line
gitgitgadget
PATCH v3 1/11 t6050: use git-update-ref rather than filesystem access
From: Han-Wen Nienhuys <[email protected]>
--- t/t6050-replace.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t6050-replace.sh +1 -1
@@ -132,7 +132,7 @@ tagger T A Gger <> 0 +0000 EOF test_expect_success 'tag replaced commit' ' - git mktag <tag.sig >.git/refs/tags/mytag + git update-ref refs/tags/mytag $(git mktag <tag.sig) ' test_expect_success '"git fsck" works' '
Signature · 1 line
gitgitgadget
PATCH v3 2/11 t1503: mark symlink test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t1503-rev-parse-verify.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t1503-rev-parse-verify.sh +1 -1
@@ -142,7 +142,7 @@ test_expect_success 'main@{n} for various n' ' test_must_fail git rev-parse --verify main@{$Np1} ' -test_expect_success SYMLINKS 'ref resolution not confused by broken symlinks' ' +test_expect_success SYMLINKS,REFFILES 'ref resolution not confused by broken symlinks' ' ln -s does-not-exist .git/refs/heads/broken && test_must_fail git rev-parse --verify broken '
Signature · 1 line
gitgitgadget
PATCH v3 3/11 t6120: use git-update-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6120-describe.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
t/t6120-describe.sh +4 -2
@@ -107,7 +107,8 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' ' check_describe tags/A --all A^0 test_expect_success 'renaming tag A to Q locally produces a warning' " - mv .git/refs/tags/A .git/refs/tags/Q && + git update-ref refs/tags/Q $(git rev-parse refs/tags/A) && + git update-ref -d refs/tags/A && git describe HEAD 2>err >out && cat >expected <<-\EOF && warning: tag 'Q' is externally known as 'A'
@@ -135,7 +136,8 @@ test_expect_success 'abbrev=0 will not break misplaced tag (2)' ' ' test_expect_success 'rename tag Q back to A' ' - mv .git/refs/tags/Q .git/refs/tags/A + git update-ref refs/tags/A $(git rev-parse refs/tags/Q) && + git update-ref -d refs/tags/Q ' test_expect_success 'pack tag refs' 'git pack-refs'
Signature · 1 line
gitgitgadget
PATCH v3 4/11 t3320: use git-symbolic-ref rather than filesystem access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t3320-notes-merge-worktrees.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
t/t3320-notes-merge-worktrees.sh +7 -5
@@ -46,8 +46,9 @@ test_expect_success 'create some new worktrees' ' test_expect_success 'merge z into y fails and sets NOTES_MERGE_REF' ' git config core.notesRef refs/notes/y && test_must_fail git notes merge z && - echo "ref: refs/notes/y" >expect && - test_cmp expect .git/NOTES_MERGE_REF + echo "refs/notes/y" >expect && + git symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_expect_success 'merge z into y while mid-merge in another workdir fails' '
@@ -57,7 +58,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' ' test_must_fail git notes merge z 2>err && test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err ) && - test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF + test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF ' test_expect_success 'merge z into x while mid-merge on y succeeds' '
@@ -68,8 +69,9 @@ test_expect_success 'merge z into x while mid-merge on y succeeds' ' test_i18ngrep "Automatic notes merge failed" out && grep -v "A notes merge into refs/notes/x is already in-progress in" out ) && - echo "ref: refs/notes/x" >expect && - test_cmp expect .git/worktrees/worktree2/NOTES_MERGE_REF + echo "refs/notes/x" >expect && + git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual && + test_cmp expect actual ' test_done
Signature · 1 line
gitgitgadget
PATCH v3 5/11 t2402: use ref-store test helper to create broken symlink
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t2402-worktree-list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
t/t2402-worktree-list.sh +1 -1
@@ -230,7 +230,7 @@ test_expect_success 'broken main worktree still at the top' ' EOF cd linked && echo "worktree $(pwd)" >expected && - echo "ref: .broken" >../.git/HEAD && + (cd ../ && test-tool ref-store main create-symref HEAD .broken ) && git worktree list --porcelain >out && head -n 3 out >actual && test_cmp ../expected actual &&
Signature · 1 line
gitgitgadget
PATCH v3 7/11 t1405: mark test for 'git pack-refs' as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
The tests verifies that "pack-refs" causes loose refs to be packed. As both loose and packed refs are concepts specific to the files backend, mark the test as REFFILES.
Check the outcome of the pack-refs operation. This was apparently forgotten in the commit introducing this test: 16feb99d (Mar 26 2017, "t1405: some basic tests on main ref store").
--- t/t1405-main-ref-store.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
t/t1405-main-ref-store.sh +10 -4
@@ -9,12 +9,18 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME RUN="test-tool ref-store main" -test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' ' - test_commit one && + +test_expect_success 'setup' ' + test_commit one +' + +test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' ' N=`find .git/refs -type f | wc -l` && test "$N" != 0 && - $RUN pack-refs 3 && - N=`find .git/refs -type f | wc -l` + ALL_OR_PRUNE_FLAG=3 && + $RUN pack-refs ${ALL_OR_PRUNE_FLAG} && + N=`find .git/refs -type f` && + test -z "$N" ' test_expect_success 'create_symref(FOO, refs/heads/main)' '
Signature · 1 line
gitgitgadget
PATCH v3 8/11 t1410: mark test as REFFILES
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
This test takes a lock on the target of a symref, and then verifies that it is possible to expire the symref's reflog. In reftable, one can only take a global lock (which would prevent the symref reflog from being expired altogether.)
--- t/t1410-reflog.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
t/t1410-reflog.sh +3 -1
@@ -374,7 +374,9 @@ test_expect_failure 'reflog with non-commit entries displays all entries' ' test_line_count = 3 actual ' -test_expect_success 'reflog expire operates on symref not referrent' ' +# This test takes a lock on an individual ref; this is not supported in +# reftable. +test_expect_success REFFILES 'reflog expire operates on symref not referrent' ' git branch --create-reflog the_symref && git branch --create-reflog referrent && git update-ref referrent HEAD &&
Signature · 1 line
gitgitgadget
PATCH v3 9/11 t7064: use update-ref -d to remove upstream branch
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
The previous code tested this by writing $ZERO_OID explicitly in the packed-refs file. This is a type of corruption that doesn't reflect realistic use-cases. In addition, even the ref-store test-tool refuses to write invalid OIDs. (update-ref interprets $ZERO_OID is deleting the ref).
--- t/t7064-wtstatus-pv2.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
t/t7064-wtstatus-pv2.sh +1 -4
@@ -373,10 +373,7 @@ test_expect_success 'verify upstream fields in branch header' ' ## Test upstream-gone case. Fake this by pointing ## origin/initial-branch at a non-existing commit. - OLD=$(git rev-parse origin/initial-branch) && - NEW=$ZERO_OID && - mv .git/packed-refs .git/old-packed-refs && - sed "s/$OLD/$NEW/g" <.git/old-packed-refs >.git/packed-refs && + git update-ref -d refs/remotes/origin/initial-branch && HUF=$(git rev-parse HEAD) &&
Signature · 1 line
gitgitgadget
PATCH v3 6/11 t1405: use 'git reflog exists' to check reflog existence
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
This fixes a test failure for reftable.
--- t/t1405-main-ref-store.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
t/t1405-main-ref-store.sh +2 -2
@@ -98,12 +98,12 @@ test_expect_success 'reflog_exists(HEAD)' ' test_expect_success 'delete_reflog(HEAD)' ' $RUN delete-reflog HEAD && - ! test -f .git/logs/HEAD + test_must_fail git reflog exists HEAD ' test_expect_success 'create-reflog(HEAD)' ' $RUN create-reflog HEAD 1 && - test -f .git/logs/HEAD + git reflog exists HEAD ' test_expect_success 'delete_ref(refs/heads/foo)' '
Signature · 1 line
gitgitgadget
PATCH v3 11/11 t6001: avoid direct file system access
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
--- t/t6001-rev-list-graft.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
t/t6001-rev-list-graft.sh +2 -1
@@ -23,7 +23,8 @@ test_expect_success setup ' git commit -a -m "Third in one history." && A2=$(git rev-parse --verify HEAD) && - rm -f .git/refs/heads/main .git/index && + git update-ref -d refs/heads/main && + rm -f .git/index && echo >fileA fileA again && echo >subdir/fileB fileB again &&
Signature · 1 line
gitgitgadget
PATCH v3 10/11 t6500: use "ls -1" to snapshot ref database state
In reply to Han-Wen Nienhuys via GitGitGadgetFrom: Han-Wen Nienhuys <[email protected]>
By doing ls -1 .git/{reftable,refs/heads}, we can capture changes to both reftable and packed/loose ref storage.
This relies on the fact that git-pack-refs (which we're looking for here) changes the number (loose/packed storage) and/or names (reftable) files used for ref storage.
--- t/t6500-gc.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
t/t6500-gc.sh +3 -2
@@ -241,7 +241,7 @@ test_expect_success 'background auto gc respects lock for all operations' ' # create a ref whose loose presence we can use to detect a pack-refs run git update-ref refs/heads/should-be-loose HEAD && - test_path_is_file .git/refs/heads/should-be-loose && + (ls -1 .git/refs/heads .git/reftable >expect || true) && # now fake a concurrent gc that holds the lock; we can use our # shell pid so that it looks valid.
@@ -258,7 +258,8 @@ test_expect_success 'background auto gc respects lock for all operations' ' # our gc should exit zero without doing anything run_and_wait_for_auto_gc && - test_path_is_file .git/refs/heads/should-be-loose + (ls -1 .git/refs/heads .git/reftable >actual || true) && + test_cmp expect actual ' # DO NOT leave a detached auto gc process running near the end of the
Signature · 1 line
gitgitgadget
Quoted 5 lines · Junio C Hamano
Quoted 2 lines
By listing the files before and after, we can make sure that the ref storage wasn't changed.
Meaning that we rely on the fact that we never append to an existing file? A comment here would have helped.
Added some more explanation.
I addressed your comments for the other changes (but forgot to update the cover letter :-/ )
Signature · 11 lines
Han-Wen Nienhuys - Google Munich I work 80%. Don't expect answers from me on Fridays. -- Google Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Quoted 14 lines · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
Han-Wen Nienhuys (11):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
Thanks.
Unfortunately all of these are already in 'next', so I'll revert the merge(s) to eliminate what has been in 'next' and queue this round to 'seen', hoping that we can merge the new one back to 'next' soonish.
Quoted 17 lines · Junio C Hamano
Quoted 14 lines · Han-Wen Nienhuys via GitGitGadget
This fixes a few test failures in the reftable series.
Han-Wen Nienhuys (11):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
Quoted 6 lines
Thanks.
Unfortunately all of these are already in 'next', so I'll revert the merge(s) to eliminate what has been in 'next' and queue this round to 'seen', hoping that we can merge the new one back to 'next' soonish.
Sorry, but I changed my mind. On the day for -rc0, I do not have time to deal with this right now, so I'll keep a bookmark on this round for now, but will keep what has been on 'next' there for now.
Will revisit this new round of patches later.
Thanks.
Quoted 10 lines · Junio C Hamano
Quoted 4 lines
Unfortunately all of these are already in 'next', so I'll revert the merge(s) to eliminate what has been in 'next' and queue this round to 'seen', hoping that we can merge the new one back to 'next' soonish.
Sorry, but I changed my mind. On the day for -rc0, I do not have time to deal with this right now, so I'll keep a bookmark on this round for now, but will keep what has been on 'next' there for now.
Will revisit this new round of patches later.
No worries: I'll fix up whatever is necessary once the changes hit master.
Signature · 11 lines
Han-Wen Nienhuys - Google Munich I work 80%. Don't expect answers from me on Fridays. -- Google Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Paul Manicle, Halimah DeLaine Prado