merge-octopus: abort if index does not match HEAD
[gitweb.git] / t / t5505-remote.sh
index 8ca0b0e4b591bb3ba4b174585929c05f0440ffcf..dd2e6ce34e7dff0e59e917fd4e3aefa01181778c 100755 (executable)
@@ -90,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
@@ -144,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
@@ -584,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 &&
@@ -627,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 &&
@@ -647,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 &&
@@ -661,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 &&
@@ -924,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 &&
@@ -966,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 &&
@@ -1000,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 &&
@@ -1044,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 &&
@@ -1113,9 +1191,15 @@ 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
 # update takes any number of args
 
+test_expect_success 'add remote matching the "insteadOf" URL' '
+       git config url.xyz@example.com.insteadOf backup &&
+       git remote add backup xyz@example.com
+'
+
 test_done