blob: c490e5707a50c5d0d3903ed5e1cf5fca7c361264 [file] [log] [blame]
#!/bin/sh
test_description='GIT_EDITOR, core.editor, and stuff'
. ./test-lib.sh
unset EDITOR VISUAL GIT_EDITOR
test_expect_success 'determine default editor' '
vi=$(TERM=vt100 git var GIT_EDITOR) &&
test -n "$vi"
'
test_expect_success setup '
if ! expr "$vi" : "[a-z]*$" >/dev/null
then
vi=
fi &&
for i in GIT_EDITOR core_editor EDITOR VISUAL $vi
do
write_script e-$i.sh <<-EOF || return 1
echo "Edited by $i" >"\$1"
EOF
done &&
if ! test -z "$vi"
then
mv e-$vi.sh $vi
fi &&
msg="Hand-edited" &&
test_commit "$msg" &&
test_commit_message HEAD -m "$msg"
'
test_expect_success 'dumb should error out when falling back on vi' '
test_must_fail env TERM=dumb git commit --amend
'
test_expect_success 'dumb should prefer EDITOR to VISUAL' '
TERM=dumb EDITOR=./e-EDITOR.sh VISUAL=./e-VISUAL.sh \
git commit --amend &&
test_commit_message HEAD -m "Edited by EDITOR"
'
for i in $vi EDITOR VISUAL core_editor GIT_EDITOR
do
test_expect_success "Using $i" '
if test "$i" = core_editor
then
test_config core.editor ./e-core_editor.sh
fi &&
(
case "$i" in
[A-Z]*)
eval "$i=./e-$i.sh" &&
export $i
;;
esac &&
PATH="$PWD:$PATH" TERM=vt100 git commit --amend
) &&
test_commit_message HEAD -m "Edited by $i"
'
done
test_expect_success 'Using editors with overrides' '
(
TERM=vt100 &&
export TERM &&
for i in $vi EDITOR VISUAL core_editor GIT_EDITOR
do
echo "Edited by $i" >expect &&
case "$i" in
core_editor)
git config core.editor ./e-core_editor.sh
;;
[A-Z]*)
eval "$i=./e-$i.sh" &&
export $i
;;
esac &&
PATH="$PWD:$PATH" git commit --amend &&
test_commit_message HEAD expect || exit 1
done
)
'
test_expect_success 'editor with a space' '
echo "echo space >\"\$1\"" >"e space.sh" &&
chmod a+x "e space.sh" &&
GIT_EDITOR="./e\ space.sh" git commit --amend &&
test_commit_message HEAD -m space
'
test_expect_success 'core.editor with a space' '
test_config core.editor \"./e\ space.sh\" &&
git commit --amend &&
test_commit_message HEAD -m space
'
test_done