Merge branch 'maint'
[git] / t / t7005-editor.sh
1 #!/bin/sh
2
3 test_description='GIT_EDITOR, core.editor, and stuff'
4
5 . ./test-lib.sh
6
7 for i in GIT_EDITOR core_editor EDITOR VISUAL vi
8 do
9         cat >e-$i.sh <<-EOF
10         echo "Edited by $i" >"\$1"
11         EOF
12         chmod +x e-$i.sh
13 done
14 unset vi
15 mv e-vi.sh vi
16 PATH=".:$PATH"
17 unset EDITOR VISUAL GIT_EDITOR
18
19 test_expect_success setup '
20
21         msg="Hand edited" &&
22         echo "$msg" >expect &&
23         git add vi &&
24         test_tick &&
25         git commit -m "$msg" &&
26         git show -s --pretty=oneline |
27         sed -e "s/^[0-9a-f]* //" >actual &&
28         diff actual expect
29
30 '
31
32 TERM=dumb
33 export TERM
34 test_expect_success 'dumb should error out when falling back on vi' '
35
36         if git commit --amend
37         then
38                 echo "Oops?"
39                 exit 1
40         else
41                 : happy
42         fi
43 '
44
45 TERM=vt100
46 export TERM
47 for i in vi EDITOR VISUAL core_editor GIT_EDITOR
48 do
49         echo "Edited by $i" >expect
50         unset EDITOR VISUAL GIT_EDITOR
51         git config --unset-all core.editor
52         case "$i" in
53         core_editor)
54                 git config core.editor ./e-core_editor.sh
55                 ;;
56         [A-Z]*)
57                 eval "$i=./e-$i.sh"
58                 export $i
59                 ;;
60         esac
61         test_expect_success "Using $i" '
62                 git commit --amend &&
63                 git show -s --pretty=oneline |
64                 sed -e "s/^[0-9a-f]* //" >actual &&
65                 diff actual expect
66         '
67 done
68
69 unset EDITOR VISUAL GIT_EDITOR
70 git config --unset-all core.editor
71 for i in vi EDITOR VISUAL core_editor GIT_EDITOR
72 do
73         echo "Edited by $i" >expect
74         case "$i" in
75         core_editor)
76                 git config core.editor ./e-core_editor.sh
77                 ;;
78         [A-Z]*)
79                 eval "$i=./e-$i.sh"
80                 export $i
81                 ;;
82         esac
83         test_expect_success "Using $i (override)" '
84                 git commit --amend &&
85                 git show -s --pretty=oneline |
86                 sed -e "s/^[0-9a-f]* //" >actual &&
87                 diff actual expect
88         '
89 done
90
91 test_done