diff options
Diffstat (limited to 't/t5505-remote.sh')
-rwxr-xr-x | t/t5505-remote.sh | 155 |
1 files changed, 127 insertions, 28 deletions
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index 883b32efa0..eaa6e90220 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -145,8 +145,8 @@ test_expect_success 'remove remote protects local branches' ' test_expect_success 'remove errors out early when deleting non-existent branch' ' ( cd test && - echo "fatal: No such remote: '\''foo'\''" >expect && - test_must_fail git remote rm foo 2>actual && + echo "error: No such remote: '\''foo'\''" >expect && + test_expect_code 2 git remote rm foo 2>actual && test_i18ncmp expect actual ) ' @@ -173,24 +173,37 @@ test_expect_success 'remove remote with a branch without configured merge' ' test_expect_success 'rename errors out early when deleting non-existent branch' ' ( cd test && - echo "fatal: No such remote: '\''foo'\''" >expect && - test_must_fail git remote rename foo bar 2>actual && + echo "error: No such remote: '\''foo'\''" >expect && + test_expect_code 2 git remote rename foo bar 2>actual && test_i18ncmp expect actual ) ' +test_expect_success 'rename errors out early when when new name is invalid' ' + test_config remote.foo.vcs bar && + echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect && + test_must_fail git remote rename foo invalid...name 2>actual && + test_i18ncmp expect actual +' + test_expect_success 'add existing foreign_vcs remote' ' test_config remote.foo.vcs bar && - echo "fatal: remote foo already exists." >expect && - test_must_fail git remote add foo bar 2>actual && + echo "error: remote foo already exists." >expect && + test_expect_code 3 git remote add foo bar 2>actual && test_i18ncmp expect actual ' test_expect_success 'add existing foreign_vcs remote' ' test_config remote.foo.vcs bar && test_config remote.bar.vcs bar && - echo "fatal: remote bar already exists." >expect && - test_must_fail git remote rename foo bar 2>actual && + echo "error: remote bar already exists." >expect && + test_expect_code 3 git remote rename foo bar 2>actual && + test_i18ncmp expect actual +' + +test_expect_success 'add invalid foreign_vcs remote' ' + echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect && + test_must_fail git remote add invalid...name bar 2>actual && test_i18ncmp expect actual ' @@ -200,28 +213,28 @@ cat >test/expect <<EOF Push URL: $(pwd)/one HEAD branch: master Remote branches: - master new (next fetch will store in remotes/origin) - side tracked + main new (next fetch will store in remotes/origin) + side tracked Local branches configured for 'git pull': - ahead merges with remote master - master merges with remote master + ahead merges with remote main + main merges with remote main octopus merges with remote topic-a and with remote topic-b and with remote topic-c rebase rebases onto remote master Local refs configured for 'git push': - master pushes to master (local out of date) - master pushes to upstream (create) + main pushes to main (local out of date) + main pushes to upstream (create) * remote two Fetch URL: ../two Push URL: ../three HEAD branch: master Local refs configured for 'git push': - ahead forces to master (fast-forwardable) - master pushes to another (up to date) + ahead forces to main (fast-forwardable) + main pushes to another (up to date) EOF -test_expect_success 'show' ' +test_expect_success PREPARE_FOR_MAIN_BRANCH 'show' ' ( cd test && git config --add remote.origin.fetch refs/heads/master:refs/heads/upstream && @@ -264,15 +277,15 @@ cat >test/expect <<EOF master side Local branches configured for 'git pull': - ahead merges with remote master - master merges with remote master + ahead merges with remote main + main merges with remote main Local refs configured for 'git push' (status not queried): (matching) pushes to (matching) - refs/heads/master pushes to refs/heads/upstream + refs/heads/main pushes to refs/heads/upstream refs/tags/lastbackup forces to refs/tags/lastbackup EOF -test_expect_success 'show -n' ' +test_expect_success PREPARE_FOR_MAIN_BRANCH 'show -n' ' mv one one.unreachable && ( cd test && @@ -315,7 +328,7 @@ test_expect_success 'set-head --auto' ' ) ' -test_expect_success 'set-head --auto has no problem w/multiple HEADs' ' +test_expect_success PREPARE_FOR_MAIN_BRANCH 'set-head --auto has no problem w/multiple HEADs' ' ( cd test && git fetch two "refs/heads/*:refs/remotes/two/*" && @@ -734,15 +747,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 +835,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 @@ -902,7 +1001,7 @@ test_expect_success 'remote set-branches' ' +refs/heads/maint:refs/remotes/scratch/maint +refs/heads/master:refs/remotes/scratch/master +refs/heads/next:refs/remotes/scratch/next - +refs/heads/pu:refs/remotes/scratch/pu + +refs/heads/seen:refs/remotes/scratch/seen +refs/heads/t/topic:refs/remotes/scratch/t/topic EOF sort <<-\EOF >expect.setup-ffonly && @@ -912,7 +1011,7 @@ test_expect_success 'remote set-branches' ' sort <<-\EOF >expect.respect-ffonly && refs/heads/master:refs/remotes/scratch/master +refs/heads/next:refs/remotes/scratch/next - +refs/heads/pu:refs/remotes/scratch/pu + +refs/heads/seen:refs/remotes/scratch/seen EOF git clone .git/ setbranches && @@ -930,7 +1029,7 @@ test_expect_success 'remote set-branches' ' git config --get-all remote.scratch.fetch >config-result && sort <config-result >../actual.replace && - git remote set-branches --add scratch pu t/topic && + git remote set-branches --add scratch seen t/topic && git config --get-all remote.scratch.fetch >config-result && sort <config-result >../actual.add-two && @@ -942,7 +1041,7 @@ test_expect_success 'remote set-branches' ' git config --get-all remote.scratch.fetch >config-result && sort <config-result >../actual.setup-ffonly && - git remote set-branches --add scratch pu && + git remote set-branches --add scratch seen && git config --get-all remote.scratch.fetch >config-result && sort <config-result >../actual.respect-ffonly ) && @@ -1249,7 +1348,7 @@ test_expect_success 'unqualified <dst> refspec DWIM and advice' ' ) ' -test_expect_success 'refs/remotes/* <src> refspec and unqualified <dst> DWIM and advice' ' +test_expect_success PREPARE_FOR_MAIN_BRANCH 'refs/remotes/* <src> refspec and unqualified <dst> DWIM and advice' ' ( cd two && git tag -a -m "Some tag" my-tag master && |