2011-12-05 01:22:45 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2012-04-09 02:18:02 +02:00
|
|
|
test_description='git p4 skipSubmitEdit config variables'
|
2011-12-05 01:22:45 +01:00
|
|
|
|
|
|
|
. ./lib-git-p4.sh
|
|
|
|
|
|
|
|
test_expect_success 'start p4d' '
|
|
|
|
start_p4d
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'init depot' '
|
|
|
|
(
|
|
|
|
cd "$cli" &&
|
|
|
|
echo file1 >file1 &&
|
|
|
|
p4 add file1 &&
|
|
|
|
p4 submit -d "change 1"
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
git p4 test: do not pollute /tmp
Generating the submit template for p4 uses tempfile.mkstemp(),
which by default puts files in /tmp. For a test that fails,
possibly on purpose, this is not cleaned up. Run with TMPDIR
pointing into the trash directory so the temp files go away
with the test results.
To do this required some other minor changes. First, the editor
is launched using system(editor + " " + template_file), using
shell expansion to build the command string. This doesn't work
if editor has a space in it. And is generally unwise as it's
easy to fool the shell into doing extra work. Exec the args
directly, without shell expansion.
Second, without shell expansion, the trick of "P4EDITOR=:" used
in the tests doesn't work. Use a real command, true, as the
non-interactive editor for testing.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-01-22 00:16:44 +01:00
|
|
|
# this works because P4EDITOR is set to true
|
2011-12-05 01:22:45 +01:00
|
|
|
test_expect_success 'no config, unedited, say yes' '
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 clone --dest="$git" //depot &&
|
2011-12-05 01:22:45 +01:00
|
|
|
test_when_finished cleanup_git &&
|
|
|
|
(
|
|
|
|
cd "$git" &&
|
|
|
|
echo line >>file1 &&
|
|
|
|
git commit -a -m "change 2" &&
|
2012-04-09 02:18:02 +02:00
|
|
|
echo y | git p4 submit &&
|
2011-12-05 01:22:45 +01:00
|
|
|
p4 changes //depot/... >wc &&
|
|
|
|
test_line_count = 2 wc
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'no config, unedited, say no' '
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 clone --dest="$git" //depot &&
|
2011-12-05 01:22:45 +01:00
|
|
|
test_when_finished cleanup_git &&
|
|
|
|
(
|
|
|
|
cd "$git" &&
|
|
|
|
echo line >>file1 &&
|
|
|
|
git commit -a -m "change 3 (not really)" &&
|
2012-09-09 22:16:06 +02:00
|
|
|
printf "bad response\nn\n" | test_expect_code 1 git p4 submit &&
|
2011-12-05 01:22:45 +01:00
|
|
|
p4 changes //depot/... >wc &&
|
|
|
|
test_line_count = 2 wc
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'skipSubmitEdit' '
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 clone --dest="$git" //depot &&
|
2011-12-05 01:22:45 +01:00
|
|
|
test_when_finished cleanup_git &&
|
|
|
|
(
|
|
|
|
cd "$git" &&
|
|
|
|
git config git-p4.skipSubmitEdit true &&
|
|
|
|
# will fail if editor is even invoked
|
|
|
|
git config core.editor /bin/false &&
|
|
|
|
echo line >>file1 &&
|
|
|
|
git commit -a -m "change 3" &&
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 submit &&
|
2011-12-05 01:22:45 +01:00
|
|
|
p4 changes //depot/... >wc &&
|
|
|
|
test_line_count = 3 wc
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'skipSubmitEditCheck' '
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 clone --dest="$git" //depot &&
|
2011-12-05 01:22:45 +01:00
|
|
|
test_when_finished cleanup_git &&
|
|
|
|
(
|
|
|
|
cd "$git" &&
|
|
|
|
git config git-p4.skipSubmitEditCheck true &&
|
|
|
|
echo line >>file1 &&
|
|
|
|
git commit -a -m "change 4" &&
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 submit &&
|
2011-12-05 01:22:45 +01:00
|
|
|
p4 changes //depot/... >wc &&
|
|
|
|
test_line_count = 4 wc
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
2011-12-17 18:39:03 +01:00
|
|
|
# check the normal case, where the template really is edited
|
|
|
|
test_expect_success 'no config, edited' '
|
2012-04-09 02:18:02 +02:00
|
|
|
git p4 clone --dest="$git" //depot &&
|
2011-12-17 18:39:03 +01:00
|
|
|
test_when_finished cleanup_git &&
|
2012-06-27 14:00:56 +02:00
|
|
|
test_when_finished "rm ed.sh" &&
|
|
|
|
cat >ed.sh <<-EOF &&
|
2011-12-17 18:39:03 +01:00
|
|
|
#!$SHELL_PATH
|
|
|
|
sleep 1
|
|
|
|
touch "\$1"
|
|
|
|
exit 0
|
|
|
|
EOF
|
2012-06-27 14:00:56 +02:00
|
|
|
chmod 755 ed.sh &&
|
2011-12-17 18:39:03 +01:00
|
|
|
(
|
|
|
|
cd "$git" &&
|
|
|
|
echo line >>file1 &&
|
|
|
|
git commit -a -m "change 5" &&
|
2015-05-20 00:23:17 +02:00
|
|
|
P4EDITOR="\"$TRASH_DIRECTORY/ed.sh\"" &&
|
git p4 test: do not pollute /tmp
Generating the submit template for p4 uses tempfile.mkstemp(),
which by default puts files in /tmp. For a test that fails,
possibly on purpose, this is not cleaned up. Run with TMPDIR
pointing into the trash directory so the temp files go away
with the test results.
To do this required some other minor changes. First, the editor
is launched using system(editor + " " + template_file), using
shell expansion to build the command string. This doesn't work
if editor has a space in it. And is generally unwise as it's
easy to fool the shell into doing extra work. Exec the args
directly, without shell expansion.
Second, without shell expansion, the trick of "P4EDITOR=:" used
in the tests doesn't work. Use a real command, true, as the
non-interactive editor for testing.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-01-22 00:16:44 +01:00
|
|
|
export P4EDITOR &&
|
|
|
|
git p4 submit &&
|
2011-12-17 18:39:03 +01:00
|
|
|
p4 changes //depot/... >wc &&
|
|
|
|
test_line_count = 5 wc
|
|
|
|
)
|
|
|
|
'
|
2011-12-05 01:22:45 +01:00
|
|
|
|
|
|
|
test_expect_success 'kill p4d' '
|
|
|
|
kill_p4d
|
|
|
|
'
|
|
|
|
|
|
|
|
test_done
|