t1500: avoid setting configuration options outside of tests
[gitweb.git] / t / t5505-remote.sh
index 17c6330f988ecc98735307fbfd8bded5283feb61..dd2e6ce34e7dff0e59e917fd4e3aefa01181778c 100755 (executable)
@@ -51,6 +51,11 @@ test_expect_success setup '
        git clone one test
 '
 
+test_expect_success 'add remote whose URL agrees with url.<...>.insteadOf' '
+       test_config url.git@host.com:team/repo.git.insteadOf myremote &&
+       git remote add myremote git@host.com:team/repo.git
+'
+
 test_expect_success C_LOCALE_OUTPUT 'remote information for the origin' '
        (
                cd test &&
@@ -85,7 +90,7 @@ test_expect_success C_LOCALE_OUTPUT 'check remote-tracking' '
 test_expect_success 'remote forces tracking branches' '
        (
                cd test &&
-               case `git config remote.second.fetch` in
+               case $(git config remote.second.fetch) in
                +*) true ;;
                 *) false ;;
                esac
@@ -139,6 +144,39 @@ 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 &&
+               test_i18ncmp expect actual
+       )
+'
+
+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 &&
+               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 &&
+       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 &&
+       test_i18ncmp expect actual
+'
+
 cat >test/expect <<EOF
 * remote origin
   Fetch URL: $(pwd)/one
@@ -579,7 +617,7 @@ test_expect_success 'update with arguments' '
                cd one &&
                for b in $(git branch -r)
                do
-               git branch -r -d $b || break
+               git branch -r -d $b || exit 1
                done &&
                git remote add manduca ../mirror &&
                git remote add megaloprepus ../mirror &&
@@ -622,7 +660,7 @@ test_expect_success 'update default' '
                cd one &&
                for b in $(git branch -r)
                do
-               git branch -r -d $b || break
+               git branch -r -d $b || exit 1
                done &&
                git config remote.drosophila.skipDefaultUpdate true &&
                git remote update default &&
@@ -642,7 +680,7 @@ test_expect_success 'update default (overridden, with funny whitespace)' '
                cd one &&
                for b in $(git branch -r)
                do
-               git branch -r -d $b || break
+               git branch -r -d $b || exit 1
                done &&
                git config remotes.default "$(printf "\t drosophila  \n")" &&
                git remote update default &&
@@ -656,7 +694,7 @@ test_expect_success 'update (with remotes.default defined)' '
                cd one &&
                for b in $(git branch -r)
                do
-               git branch -r -d $b || break
+               git branch -r -d $b || exit 1
                done &&
                git config remotes.default "drosophila" &&
                git remote update &&
@@ -919,6 +957,28 @@ test_expect_success 'new remote' '
        cmp expect actual
 '
 
+get_url_test () {
+       cat >expect &&
+       git remote get-url "$@" >actual &&
+       test_cmp expect actual
+}
+
+test_expect_success 'get-url on new remote' '
+       echo foo | get_url_test someremote &&
+       echo foo | get_url_test --all someremote &&
+       echo foo | get_url_test --push someremote &&
+       echo foo | get_url_test --push --all someremote
+'
+
+test_expect_success 'remote set-url with locked config' '
+       test_when_finished "rm -f .git/config.lock" &&
+       git config --get-all remote.someremote.url >expect &&
+       >.git/config.lock &&
+       test_must_fail git remote set-url someremote baz &&
+       git config --get-all remote.someremote.url >actual &&
+       cmp expect actual
+'
+
 test_expect_success 'remote set-url bar' '
        git remote set-url someremote bar &&
        echo bar >expect &&
@@ -961,6 +1021,13 @@ test_expect_success 'remote set-url --push zot' '
        cmp expect actual
 '
 
+test_expect_success 'get-url with different urls' '
+       echo baz | get_url_test someremote &&
+       echo baz | get_url_test --all someremote &&
+       echo zot | get_url_test --push someremote &&
+       echo zot | get_url_test --push --all someremote
+'
+
 test_expect_success 'remote set-url --push qux zot' '
        git remote set-url --push someremote qux zot &&
        echo qux >expect &&
@@ -995,6 +1062,14 @@ test_expect_success 'remote set-url --push --add aaa' '
        cmp expect actual
 '
 
+test_expect_success 'get-url on multi push remote' '
+       echo foo | get_url_test --push someremote &&
+       get_url_test --push --all someremote <<-\EOF
+       foo
+       aaa
+       EOF
+'
+
 test_expect_success 'remote set-url --push bar aaa' '
        git remote set-url --push someremote bar aaa &&
        echo foo >expect &&
@@ -1039,6 +1114,14 @@ test_expect_success 'remote set-url --add bbb' '
        cmp expect actual
 '
 
+test_expect_success 'get-url on multi fetch remote' '
+       echo baz | get_url_test someremote &&
+       get_url_test --all someremote <<-\EOF
+       baz
+       bbb
+       EOF
+'
+
 test_expect_success 'remote set-url --delete .*' '
        test_must_fail git remote set-url --delete someremote .\* &&
        echo "YYY" >expect &&
@@ -1108,6 +1191,7 @@ test_extra_arg rename origin newname
 test_extra_arg remove origin
 test_extra_arg set-head origin master
 # set-branches takes any number of args
+test_extra_arg get-url origin newurl
 test_extra_arg set-url origin newurl oldurl
 # show takes any number of args
 # prune takes any number of args