http: update base URLs when we see redirects
[gitweb.git] / t / t9800-git-p4-basic.sh
index 07c2e157cb3b2320e62618a7c387948749522b1a..665607c9cbe5a07f83d4ae4c769060108bddbd9c 100755 (executable)
@@ -30,6 +30,11 @@ test_expect_success 'basic git p4 clone' '
        )
 '
 
+test_expect_success 'depot typo error' '
+       test_must_fail git p4 clone --dest="$git" /depot 2>errs &&
+       grep "Depot paths must start with" errs
+'
+
 test_expect_success 'git p4 clone @all' '
        git p4 clone --dest="$git" //depot@all &&
        test_when_finished cleanup_git &&
@@ -143,23 +148,32 @@ test_expect_success 'exit when p4 fails to produce marshaled output' '
        ! test_i18ngrep Traceback errs
 '
 
-test_expect_success 'clone bare' '
+# Hide a file from p4d, make sure we catch its complaint.  This won't fail in
+# p4 changes, files, or describe; just in p4 print.  If P4CLIENT is unset, the
+# message will include "Librarian checkout".
+test_expect_success 'exit gracefully for p4 server errors' '
+       test_when_finished "mv \"$db\"/depot/file1,v,hidden \"$db\"/depot/file1,v" &&
+       mv "$db"/depot/file1,v "$db"/depot/file1,v,hidden &&
+       test_when_finished cleanup_git &&
+       test_expect_code 1 git p4 clone --dest="$git" //depot@1 >out 2>err &&
+       test_i18ngrep "Error from p4 print" err
+'
+
+test_expect_success 'clone --bare should make a bare repository' '
        rm -rf "$git" &&
        git p4 clone --dest="$git" --bare //depot &&
        test_when_finished cleanup_git &&
        (
                cd "$git" &&
-               test ! -d .git &&
-               bare=`git config --get core.bare` &&
-               test "$bare" = true
+               test_path_is_missing .git &&
+               git config --get --bool core.bare true &&
+               git rev-parse --verify refs/remotes/p4/master &&
+               git rev-parse --verify refs/remotes/p4/HEAD &&
+               git rev-parse --verify refs/heads/master &&
+               git rev-parse --verify HEAD
        )
 '
 
-marshal_dump() {
-       what=$1
-       "$PYTHON_PATH" -c 'import marshal, sys; d = marshal.load(sys.stdin); print d["'$what'"]'
-}
-
 # Sleep a bit so that the top-most p4 change did not happen "now".  Then
 # import the repo and make sure that the initial import has the same time
 # as the top-most change.
@@ -177,6 +191,18 @@ test_expect_success 'initial import time from top change time' '
        )
 '
 
+test_expect_success 'unresolvable host in P4PORT should display error' '
+       test_when_finished cleanup_git &&
+       git p4 clone --dest="$git" //depot &&
+       (
+               cd "$git" &&
+               P4PORT=nosuchhost:65537 &&
+               export P4PORT &&
+               test_expect_code 1 git p4 sync >out 2>err &&
+               grep "connect to nosuchhost" err
+       )
+'
+
 test_expect_success 'kill p4d' '
        kill_p4d
 '