File: t7005-editor.sh

package info (click to toggle)
git 1%3A2.51.0%2Bnext.20250825-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 61,548 kB
  • sloc: ansic: 305,207; sh: 260,479; perl: 25,943; tcl: 21,754; makefile: 4,176; python: 3,442; javascript: 772; csh: 45
file content (102 lines) | stat: -rwxr-xr-x 2,086 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/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