Git fork
at reftables-rust 104 lines 3.3 kB view raw
1#!/bin/sh 2 3test_description='per-worktree refs' 4 5. ./test-lib.sh 6 7test_expect_success 'setup' ' 8 test_commit initial && 9 test_commit wt1 && 10 test_commit wt2 && 11 git worktree add wt1 wt1 && 12 git worktree add wt2 wt2 && 13 git checkout initial && 14 git update-ref refs/worktree/foo HEAD && 15 git -C wt1 update-ref refs/worktree/foo HEAD && 16 git -C wt2 update-ref refs/worktree/foo HEAD 17' 18 19test_expect_success 'refs/worktree are per-worktree' ' 20 test_cmp_rev worktree/foo initial && 21 ( cd wt1 && test_cmp_rev worktree/foo wt1 ) && 22 ( cd wt2 && test_cmp_rev worktree/foo wt2 ) 23' 24 25test_expect_success 'resolve main-worktree/HEAD' ' 26 test_cmp_rev main-worktree/HEAD initial && 27 ( cd wt1 && test_cmp_rev main-worktree/HEAD initial ) && 28 ( cd wt2 && test_cmp_rev main-worktree/HEAD initial ) 29' 30 31test_expect_success 'ambiguous main-worktree/HEAD' ' 32 test_when_finished git update-ref -d refs/heads/main-worktree/HEAD && 33 git update-ref refs/heads/main-worktree/HEAD $(git rev-parse HEAD) && 34 git rev-parse main-worktree/HEAD 2>warn && 35 grep "main-worktree/HEAD.*ambiguous" warn 36' 37 38test_expect_success 'resolve worktrees/xx/HEAD' ' 39 test_cmp_rev worktrees/wt1/HEAD wt1 && 40 ( cd wt1 && test_cmp_rev worktrees/wt1/HEAD wt1 ) && 41 ( cd wt2 && test_cmp_rev worktrees/wt1/HEAD wt1 ) 42' 43 44test_expect_success 'ambiguous worktrees/xx/HEAD' ' 45 git update-ref refs/heads/worktrees/wt1/HEAD $(git rev-parse HEAD) && 46 test_when_finished git update-ref -d refs/heads/worktrees/wt1/HEAD && 47 git rev-parse worktrees/wt1/HEAD 2>warn && 48 grep "worktrees/wt1/HEAD.*ambiguous" warn 49' 50 51test_expect_success 'reflog of main-worktree/HEAD' ' 52 git reflog HEAD | sed "s/HEAD/main-worktree\/HEAD/" >expected && 53 git reflog main-worktree/HEAD >actual && 54 test_cmp expected actual && 55 git -C wt1 reflog main-worktree/HEAD >actual.wt1 && 56 test_cmp expected actual.wt1 57' 58 59test_expect_success 'reflog of worktrees/xx/HEAD' ' 60 git -C wt2 reflog HEAD | sed "s/HEAD/worktrees\/wt2\/HEAD/" >expected && 61 git reflog worktrees/wt2/HEAD >actual && 62 test_cmp expected actual && 63 git -C wt1 reflog worktrees/wt2/HEAD >actual.wt1 && 64 test_cmp expected actual.wt1 && 65 git -C wt2 reflog worktrees/wt2/HEAD >actual.wt2 && 66 test_cmp expected actual.wt2 67' 68 69test_expect_success 'for-each-ref from main worktree' ' 70 mkdir fer1 && 71 git -C fer1 init repo && 72 test_commit -C fer1/repo initial && 73 git -C fer1/repo worktree add ../second && 74 git -C fer1/repo update-ref refs/bisect/first HEAD && 75 git -C fer1/repo update-ref refs/rewritten/first HEAD && 76 git -C fer1/repo update-ref refs/worktree/first HEAD && 77 git -C fer1/repo for-each-ref --format="%(refname)" | grep first >actual && 78 cat >expected <<-\EOF && 79 refs/bisect/first 80 refs/rewritten/first 81 refs/worktree/first 82 EOF 83 test_cmp expected actual 84' 85 86test_expect_success 'for-each-ref from linked worktree' ' 87 mkdir fer2 && 88 git -C fer2 init repo && 89 test_commit -C fer2/repo initial && 90 git -C fer2/repo worktree add ../second && 91 git -C fer2/second update-ref refs/bisect/second HEAD && 92 git -C fer2/second update-ref refs/rewritten/second HEAD && 93 git -C fer2/second update-ref refs/worktree/second HEAD && 94 git -C fer2/second for-each-ref --format="%(refname)" | grep second >actual && 95 cat >expected <<-\EOF && 96 refs/bisect/second 97 refs/heads/second 98 refs/rewritten/second 99 refs/worktree/second 100 EOF 101 test_cmp expected actual 102' 103 104test_done