|  | #!/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_NO_CREATE_REPO=1 | 
|  | . ./test-lib.sh | 
|  |  | 
|  | 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 | 
|  | ) && | 
|  | mkdir super && | 
|  | (cd super && | 
|  | git init && | 
|  | git submodule add ../submodule && | 
|  | git commit -m "add submodule" | 
|  | ) | 
|  | ' | 
|  |  | 
|  | test_expect_success 'ensure submodule branch is unset' ' | 
|  | (cd super && | 
|  | ! grep branch .gitmodules | 
|  | ) | 
|  | ' | 
|  |  | 
|  | test_expect_success 'test submodule set-branch --branch' ' | 
|  | (cd super && | 
|  | git submodule set-branch --branch topic submodule && | 
|  | grep "branch = topic" .gitmodules && | 
|  | 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' ' | 
|  | test_commit -C submodule c && | 
|  | (cd super && | 
|  | git submodule set-branch --default submodule && | 
|  | ! grep branch .gitmodules && | 
|  | git submodule update --remote && | 
|  | cat <<-\EOF >expect && | 
|  | c | 
|  | EOF | 
|  | git -C submodule show -s --pretty=%s >actual && | 
|  | test_cmp expect actual | 
|  | ) | 
|  | ' | 
|  |  | 
|  | test_expect_success 'test submodule set-branch -b' ' | 
|  | test_commit -C submodule b && | 
|  | (cd super && | 
|  | git submodule set-branch -b topic submodule && | 
|  | grep "branch = topic" .gitmodules && | 
|  | 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' ' | 
|  | test_commit -C submodule d && | 
|  | (cd super && | 
|  | git submodule set-branch -d submodule && | 
|  | ! grep branch .gitmodules && | 
|  | git submodule update --remote && | 
|  | cat <<-\EOF >expect && | 
|  | d | 
|  | EOF | 
|  | git -C submodule show -s --pretty=%s >actual && | 
|  | test_cmp expect actual | 
|  | ) | 
|  | ' | 
|  |  | 
|  | test_done |