#!/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