| #!/bin/sh |
| # |
| # Copyright (c) 2012 Daniel GraƱa |
| # |
| |
| test_description='Test submodules on detached working tree |
| |
| This test verifies that "git submodule" initialization, update and addition works |
| on detached working trees |
| ' |
| |
| TEST_NO_CREATE_REPO=1 |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
| |
| TEST_PASSES_SANITIZE_LEAK=true |
| . ./test-lib.sh |
| |
| test_expect_success 'setup' ' |
| git config --global protocol.file.allow always |
| ' |
| |
| test_expect_success 'submodule on detached working tree' ' |
| git init --bare remote && |
| test_create_repo bundle1 && |
| ( |
| cd bundle1 && |
| test_commit "shoot" && |
| git rev-parse --verify HEAD >../expect |
| ) && |
| mkdir home && |
| ( |
| cd home && |
| GIT_WORK_TREE="$(pwd)" && |
| GIT_DIR="$(pwd)/.dotfiles" && |
| export GIT_WORK_TREE GIT_DIR && |
| git clone --bare ../remote .dotfiles && |
| git submodule add ../bundle1 .vim/bundle/sogood && |
| test_commit "sogood" && |
| ( |
| unset GIT_WORK_TREE GIT_DIR && |
| cd .vim/bundle/sogood && |
| git rev-parse --verify HEAD >actual && |
| test_cmp ../../../../expect actual |
| ) && |
| git push origin main |
| ) && |
| mkdir home2 && |
| ( |
| cd home2 && |
| git clone --bare ../remote .dotfiles && |
| GIT_WORK_TREE="$(pwd)" && |
| GIT_DIR="$(pwd)/.dotfiles" && |
| export GIT_WORK_TREE GIT_DIR && |
| git checkout main && |
| git submodule update --init && |
| ( |
| unset GIT_WORK_TREE GIT_DIR && |
| cd .vim/bundle/sogood && |
| git rev-parse --verify HEAD >actual && |
| test_cmp ../../../../expect actual |
| ) |
| ) |
| ' |
| |
| test_expect_success 'submodule on detached working pointed by core.worktree' ' |
| mkdir home3 && |
| ( |
| cd home3 && |
| GIT_DIR="$(pwd)/.dotfiles" && |
| export GIT_DIR && |
| git clone --bare ../remote "$GIT_DIR" && |
| git config core.bare false && |
| git config core.worktree .. && |
| git checkout main && |
| git submodule add ../bundle1 .vim/bundle/dupe && |
| test_commit "dupe" && |
| git push origin main |
| ) && |
| ( |
| cd home && |
| GIT_DIR="$(pwd)/.dotfiles" && |
| export GIT_DIR && |
| git config core.bare false && |
| git config core.worktree .. && |
| git pull && |
| git submodule update --init && |
| test -f .vim/bundle/dupe/shoot.t |
| ) |
| ' |
| |
| test_done |