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