Imported Upstream version 2.26.0
[platform/upstream/git.git] / t / t5505-remote.sh
index 883b32e..dda81b7 100755 (executable)
@@ -734,15 +734,53 @@ test_expect_success 'reject adding remote with an invalid name' '
 # the last two ones check if the config is updated.
 
 test_expect_success 'rename a remote' '
+       test_config_global remote.pushDefault origin &&
        git clone one four &&
        (
                cd four &&
+               git config branch.master.pushRemote origin &&
                git remote rename origin upstream &&
                test -z "$(git for-each-ref refs/remotes/origin)" &&
                test "$(git symbolic-ref refs/remotes/upstream/HEAD)" = "refs/remotes/upstream/master" &&
                test "$(git rev-parse upstream/master)" = "$(git rev-parse master)" &&
                test "$(git config remote.upstream.fetch)" = "+refs/heads/*:refs/remotes/upstream/*" &&
-               test "$(git config branch.master.remote)" = "upstream"
+               test "$(git config branch.master.remote)" = "upstream" &&
+               test "$(git config branch.master.pushRemote)" = "upstream" &&
+               test "$(git config --global remote.pushDefault)" = "origin"
+       )
+'
+
+test_expect_success 'rename a remote renames repo remote.pushDefault' '
+       git clone one four.1 &&
+       (
+               cd four.1 &&
+               git config remote.pushDefault origin &&
+               git remote rename origin upstream &&
+               test "$(git config --local remote.pushDefault)" = "upstream"
+       )
+'
+
+test_expect_success 'rename a remote renames repo remote.pushDefault but ignores global' '
+       test_config_global remote.pushDefault other &&
+       git clone one four.2 &&
+       (
+               cd four.2 &&
+               git config remote.pushDefault origin &&
+               git remote rename origin upstream &&
+               test "$(git config --global remote.pushDefault)" = "other" &&
+               test "$(git config --local remote.pushDefault)" = "upstream"
+       )
+'
+
+test_expect_success 'rename a remote renames repo remote.pushDefault but keeps global' '
+       test_config_global remote.pushDefault origin &&
+       git clone one four.3 &&
+       (
+               cd four.3 &&
+               git config remote.pushDefault origin &&
+               git remote rename origin upstream &&
+               test "$(git config --global remote.pushDefault)" = "origin" &&
+               test "$(git config --local remote.pushDefault)" = "upstream"
        )
 '
 
@@ -784,6 +822,54 @@ test_expect_success 'rename succeeds with existing remote.<target>.prune' '
        git -C four.four remote rename origin upstream
 '
 
+test_expect_success 'remove a remote' '
+       test_config_global remote.pushDefault origin &&
+       git clone one four.five &&
+       (
+               cd four.five &&
+               git config branch.master.pushRemote origin &&
+               git remote remove origin &&
+               test -z "$(git for-each-ref refs/remotes/origin)" &&
+               test_must_fail git config branch.master.remote &&
+               test_must_fail git config branch.master.pushRemote &&
+               test "$(git config --global remote.pushDefault)" = "origin"
+       )
+'
+
+test_expect_success 'remove a remote removes repo remote.pushDefault' '
+       git clone one four.five.1 &&
+       (
+               cd four.five.1 &&
+               git config remote.pushDefault origin &&
+               git remote remove origin &&
+               test_must_fail git config --local remote.pushDefault
+       )
+'
+
+test_expect_success 'remove a remote removes repo remote.pushDefault but ignores global' '
+       test_config_global remote.pushDefault other &&
+       git clone one four.five.2 &&
+       (
+               cd four.five.2 &&
+               git config remote.pushDefault origin &&
+               git remote remove origin &&
+               test "$(git config --global remote.pushDefault)" = "other" &&
+               test_must_fail git config --local remote.pushDefault
+       )
+'
+
+test_expect_success 'remove a remote removes repo remote.pushDefault but keeps global' '
+       test_config_global remote.pushDefault origin &&
+       git clone one four.five.3 &&
+       (
+               cd four.five.3 &&
+               git config remote.pushDefault origin &&
+               git remote remove origin &&
+               test "$(git config --global remote.pushDefault)" = "origin" &&
+               test_must_fail git config --local remote.pushDefault
+       )
+'
+
 cat >remotes_origin <<EOF
 URL: $(pwd)/one
 Push: refs/heads/master:refs/heads/upstream