| #!/bin/sh |
| |
| test_description='Test reflog interaction with detached HEAD' |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
| |
| TEST_PASSES_SANITIZE_LEAK=true |
| . ./test-lib.sh |
| |
| reset_state () { |
| rm -rf .git && "$TAR" xf .git-saved.tar |
| } |
| |
| test_expect_success setup ' |
| test_tick && |
| git commit --allow-empty -m initial && |
| git branch side && |
| test_tick && |
| git commit --allow-empty -m second && |
| "$TAR" cf .git-saved.tar .git |
| ' |
| |
| test_expect_success baseline ' |
| reset_state && |
| git rev-parse main main^ >expect && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'switch to branch' ' |
| reset_state && |
| git rev-parse side main main^ >expect && |
| git checkout side && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'detach to other' ' |
| reset_state && |
| git rev-parse main side main main^ >expect && |
| git checkout side && |
| git checkout main^0 && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'detach to self' ' |
| reset_state && |
| git rev-parse main main main^ >expect && |
| git checkout main^0 && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'attach to self' ' |
| reset_state && |
| git rev-parse main main main main^ >expect && |
| git checkout main^0 && |
| git checkout main && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'attach to other' ' |
| reset_state && |
| git rev-parse side main main main^ >expect && |
| git checkout main^0 && |
| git checkout side && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_done |