| #!/bin/sh |
| |
| test_description='Test reflog interaction with detached HEAD' |
| . ./test-lib.sh |
| |
| reset_state () { |
| git checkout master && |
| cp saved_reflog .git/logs/HEAD |
| } |
| |
| test_expect_success setup ' |
| test_tick && |
| git commit --allow-empty -m initial && |
| git branch side && |
| test_tick && |
| git commit --allow-empty -m second && |
| cat .git/logs/HEAD >saved_reflog |
| ' |
| |
| test_expect_success baseline ' |
| reset_state && |
| git rev-parse master master^ >expect && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'switch to branch' ' |
| reset_state && |
| git rev-parse side master master^ >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 master side master master^ >expect && |
| git checkout side && |
| git checkout master^0 && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'detach to self' ' |
| reset_state && |
| git rev-parse master master master^ >expect && |
| git checkout master^0 && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'attach to self' ' |
| reset_state && |
| git rev-parse master master master master^ >expect && |
| git checkout master^0 && |
| git checkout master && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'attach to other' ' |
| reset_state && |
| git rev-parse side master master master^ >expect && |
| git checkout master^0 && |
| git checkout side && |
| git log -g --format=%H >actual && |
| test_cmp expect actual |
| ' |
| |
| test_done |