git-p4: better error reporting when p4 fails
Currently when p4 fails to run, git-p4 just crashes with an obscure error message. For example, if the P4 ticket has expired, you get: Error: Cannot locate perforce checkout of <path> in client view This change checks whether git-p4 can talk to the Perforce server when the first P4 operation is attempted, and tries to print a meaningful error message if it fails. Signed-off-by: Luke Diamand <luke@diamand.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
b9d34db9a2
commit
0ef67acdd7
78
t/t9833-errors.sh
Executable file
78
t/t9833-errors.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='git p4 errors'
|
||||
|
||||
. ./lib-git-p4.sh
|
||||
|
||||
test_expect_success 'start p4d' '
|
||||
start_p4d
|
||||
'
|
||||
|
||||
test_expect_success 'add p4 files' '
|
||||
(
|
||||
cd "$cli" &&
|
||||
echo file1 >file1 &&
|
||||
p4 add file1 &&
|
||||
p4 submit -d "file1"
|
||||
)
|
||||
'
|
||||
|
||||
# after this test, the default user requires a password
|
||||
test_expect_success 'error handling' '
|
||||
git p4 clone --dest="$git" //depot@all &&
|
||||
(
|
||||
cd "$git" &&
|
||||
P4PORT=: test_must_fail git p4 submit 2>errmsg
|
||||
) &&
|
||||
p4 passwd -P newpassword &&
|
||||
(
|
||||
P4PASSWD=badpassword test_must_fail git p4 clone //depot/foo 2>errmsg &&
|
||||
grep -q "failure accessing depot.*P4PASSWD" errmsg
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'ticket logged out' '
|
||||
P4TICKETS="$cli/tickets" &&
|
||||
echo "newpassword" | p4 login &&
|
||||
(
|
||||
cd "$git" &&
|
||||
test_commit "ticket-auth-check" &&
|
||||
p4 logout &&
|
||||
test_must_fail git p4 submit 2>errmsg &&
|
||||
grep -q "failure accessing depot" errmsg
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'create group with short ticket expiry' '
|
||||
P4TICKETS="$cli/tickets" &&
|
||||
echo "newpassword" | p4 login &&
|
||||
p4_add_user short_expiry_user &&
|
||||
p4 -u short_expiry_user passwd -P password &&
|
||||
p4 group -i <<-EOF &&
|
||||
Group: testgroup
|
||||
Timeout: 3
|
||||
Users: short_expiry_user
|
||||
EOF
|
||||
|
||||
p4 users | grep short_expiry_user
|
||||
'
|
||||
|
||||
test_expect_success 'git operation with expired ticket' '
|
||||
P4TICKETS="$cli/tickets" &&
|
||||
P4USER=short_expiry_user &&
|
||||
echo "password" | p4 login &&
|
||||
(
|
||||
cd "$git" &&
|
||||
git p4 sync &&
|
||||
sleep 5 &&
|
||||
test_must_fail git p4 sync 2>errmsg &&
|
||||
grep "failure accessing depot" errmsg
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'kill p4d' '
|
||||
kill_p4d
|
||||
'
|
||||
|
||||
|
||||
test_done
|
||||
Reference in New Issue
Block a user