#!/bin/sh # # Copyright (c) 2019 Denton Liu # test_description='Test submodules set-branch subcommand This test verifies that the set-branch subcommand of git-submodule is working as expected. ' TEST_PASSES_SANITIZE_LEAK=true TEST_NO_CREATE_REPO=1 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh test_expect_success 'setup' ' git config --global protocol.file.allow always ' test_expect_success 'submodule config cache setup' ' mkdir submodule && (cd submodule && git init && echo a >a && git add . && git commit -ma && git checkout -b topic && echo b >a && git add . && git commit -mb && git checkout main ) && mkdir super && (cd super && git init && git submodule add ../submodule && git submodule add --name thename ../submodule thepath && git commit -m "add submodules" ) ' test_expect_success 'ensure submodule branch is unset' ' (cd super && test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch ) ' test_expect_success 'test submodule set-branch --branch' ' (cd super && git submodule set-branch --branch topic submodule && test_cmp_config topic -f .gitmodules submodule.submodule.branch && git submodule update --remote && cat <<-\EOF >expect && b EOF git -C submodule show -s --pretty=%s >actual && test_cmp expect actual ) ' test_expect_success 'test submodule set-branch --default' ' (cd super && git submodule set-branch --default submodule && test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch && git submodule update --remote && cat <<-\EOF >expect && a EOF git -C submodule show -s --pretty=%s >actual && test_cmp expect actual ) ' test_expect_success 'test submodule set-branch -b' ' (cd super && git submodule set-branch -b topic submodule && test_cmp_config topic -f .gitmodules submodule.submodule.branch && git submodule update --remote && cat <<-\EOF >expect && b EOF git -C submodule show -s --pretty=%s >actual && test_cmp expect actual ) ' test_expect_success 'test submodule set-branch -d' ' (cd super && git submodule set-branch -d submodule && test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch && git submodule update --remote && cat <<-\EOF >expect && a EOF git -C submodule show -s --pretty=%s >actual && test_cmp expect actual ) ' test_expect_success 'test submodule set-branch --branch with named submodule' ' (cd super && git submodule set-branch --branch topic thepath && test_cmp_config topic -f .gitmodules submodule.thename.branch && test_cmp_config "" -f .gitmodules --default "" submodule.thepath.branch && git submodule update --remote && cat <<-\EOF >expect && b EOF git -C thepath show -s --pretty=%s >actual && test_cmp expect actual ) ' test_expect_success 'test submodule set-branch --default with named submodule' ' (cd super && git submodule set-branch --default thepath && test_cmp_config "" -f .gitmodules --default "" submodule.thename.branch && git submodule update --remote && cat <<-\EOF >expect && a EOF git -C thepath show -s --pretty=%s >actual && test_cmp expect actual ) ' test_done