@@ -8,9 +8,23 @@ setup() {
8
8
source " ${BATS_TEST_DIRNAME} /../bash-preexec.sh"
9
9
}
10
10
11
+ # Evaluates all the elements of PROMPT_COMMAND
12
+ eval_PROMPT_COMMAND () {
13
+ local prompt_command
14
+ for prompt_command in " ${PROMPT_COMMAND[@]} " ; do
15
+ eval " $prompt_command "
16
+ done
17
+ }
18
+
19
+ # Joins the elements of PROMPT_COMMAND with $'\n'
20
+ join_PROMPT_COMMAND () {
21
+ local IFS=$' \n '
22
+ echo " ${PROMPT_COMMAND[*]} "
23
+ }
24
+
11
25
bp_install () {
12
26
__bp_install_after_session_init
13
- eval " $PROMPT_COMMAND "
27
+ eval_PROMPT_COMMAND
14
28
}
15
29
16
30
test_echo () {
@@ -63,7 +77,7 @@ set_exit_code_and_run_precmd() {
63
77
[[ " $PROMPT_COMMAND " == * " trap - DEBUG" * ]] || return 1
64
78
[[ " $PROMPT_COMMAND " == * " __bp_install" * ]] || return 1
65
79
66
- eval " $PROMPT_COMMAND "
80
+ eval_PROMPT_COMMAND
67
81
68
82
[[ " $PROMPT_COMMAND " != * " trap DEBUG" * ]] || return 1
69
83
[[ " $PROMPT_COMMAND " != * " __bp_install" * ]] || return 1
@@ -106,7 +120,7 @@ set_exit_code_and_run_precmd() {
106
120
bp_install
107
121
108
122
PROMPT_COMMAND=" $PROMPT_COMMAND ; true"
109
- eval " $PROMPT_COMMAND "
123
+ eval_PROMPT_COMMAND
110
124
}
111
125
112
126
@test " Appending or prepending to PROMPT_COMMAND should work after bp_install_after_session_init" {
@@ -119,7 +133,7 @@ set_exit_code_and_run_precmd() {
119
133
PROMPT_COMMAND=" true; $PROMPT_COMMAND "
120
134
PROMPT_COMMAND=" true; $PROMPT_COMMAND "
121
135
PROMPT_COMMAND=" true $nl $PROMPT_COMMAND "
122
- eval " $PROMPT_COMMAND "
136
+ eval_PROMPT_COMMAND
123
137
}
124
138
125
139
# Case where a user is appending or prepending to PROMPT_COMMAND.
@@ -132,21 +146,21 @@ set_exit_code_and_run_precmd() {
132
146
PROMPT_COMMAND=" $PROMPT_COMMAND " $' \n echo after'
133
147
PROMPT_COMMAND=" echo after2; $PROMPT_COMMAND ;"
134
148
135
- eval " $PROMPT_COMMAND "
149
+ eval_PROMPT_COMMAND
136
150
137
151
expected_result=$' __bp_precmd_invoke_cmd\n echo after2; echo before; echo before2\n echo after\n __bp_interactive_mode'
138
- [ " $PROMPT_COMMAND " == " $expected_result " ]
152
+ [ " $( join_PROMPT_COMMAND ) " == " $expected_result " ]
139
153
}
140
154
141
155
@test " Adding to PROMPT_COMMAND after with semicolon" {
142
156
PROMPT_COMMAND=" echo before"
143
157
__bp_install_after_session_init
144
158
PROMPT_COMMAND=" $PROMPT_COMMAND ; echo after"
145
159
146
- eval " $PROMPT_COMMAND "
160
+ eval_PROMPT_COMMAND
147
161
148
162
expected_result=$' __bp_precmd_invoke_cmd\n echo before\n echo after\n __bp_interactive_mode'
149
- [ " $PROMPT_COMMAND " == " $expected_result " ]
163
+ [ " $( join_PROMPT_COMMAND ) " == " $expected_result " ]
150
164
}
151
165
152
166
@test " during install PROMPT_COMMAND and precmd functions should be executed each once" {
@@ -157,7 +171,7 @@ set_exit_code_and_run_precmd() {
157
171
PROMPT_COMMAND=" echo after2; $PROMPT_COMMAND ;"
158
172
159
173
precmd () { echo " inside precmd" ; }
160
- run eval " $PROMPT_COMMAND "
174
+ run eval_PROMPT_COMMAND
161
175
[ " ${lines[0]} " == " after2" ]
162
176
[ " ${lines[1]} " == " before" ]
163
177
[ " ${lines[2]} " == " before2" ]
0 commit comments