0ef67acdd7
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>
79 lines
1.5 KiB
Bash
Executable File
79 lines
1.5 KiB
Bash
Executable File
#!/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
|