git/t/t7005-editor.sh
Ævar Arnfjörð Bjarmason fab68aa2ba t/t7005-editor: change from skip_all=* to prereq skip
Change this test to skip test with test prerequisites, and to do setup
work in tests. This improves the skipped statistics on platforms where
the test isn't run.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-08-18 12:42:45 -07:00

138 lines
2.4 KiB
Bash
Executable File

#!/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"
'
if ! expr "$vi" : '[a-z]*$' >/dev/null
then
vi=
fi
for i in GIT_EDITOR core_editor EDITOR VISUAL $vi
do
cat >e-$i.sh <<-EOF
#!$SHELL_PATH
echo "Edited by $i" >"\$1"
EOF
chmod +x e-$i.sh
done
if ! test -z "$vi"
then
mv e-$vi.sh $vi
fi
test_expect_success setup '
msg="Hand-edited" &&
test_commit "$msg" &&
echo "$msg" >expect &&
git show -s --format=%s > actual &&
test_cmp actual expect
'
TERM=dumb
export TERM
test_expect_success 'dumb should error out when falling back on vi' '
if git commit --amend
then
echo "Oops?"
false
else
: happy
fi
'
test_expect_success 'dumb should prefer EDITOR to VISUAL' '
EDITOR=./e-EDITOR.sh &&
VISUAL=./e-VISUAL.sh &&
export EDITOR VISUAL &&
git commit --amend &&
test "$(git show -s --format=%s)" = "Edited by EDITOR"
'
TERM=vt100
export TERM
for i in $vi EDITOR VISUAL core_editor GIT_EDITOR
do
echo "Edited by $i" >expect
unset EDITOR VISUAL GIT_EDITOR
git config --unset-all core.editor
case "$i" in
core_editor)
git config core.editor ./e-core_editor.sh
;;
[A-Z]*)
eval "$i=./e-$i.sh"
export $i
;;
esac
test_expect_success "Using $i" '
git --exec-path=. commit --amend &&
git show -s --pretty=oneline |
sed -e "s/^[0-9a-f]* //" >actual &&
test_cmp actual expect
'
done
unset EDITOR VISUAL GIT_EDITOR
git config --unset-all core.editor
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
test_expect_success "Using $i (override)" '
git --exec-path=. commit --amend &&
git show -s --pretty=oneline |
sed -e "s/^[0-9a-f]* //" >actual &&
test_cmp actual expect
'
done
if echo 'echo space > "$1"' > "e space.sh"
then
# FS supports spaces in filenames
test_set_prereq SPACES_IN_FILENAMES
fi
test_expect_success SPACES_IN_FILENAMES 'editor with a space' '
chmod a+x "e space.sh" &&
GIT_EDITOR="./e\ space.sh" git commit --amend &&
test space = "$(git show -s --pretty=format:%s)"
'
unset GIT_EDITOR
test_expect_success SPACES_IN_FILENAMES 'core.editor with a space' '
git config core.editor \"./e\ space.sh\" &&
git commit --amend &&
test space = "$(git show -s --pretty=format:%s)"
'
test_done