@@ -8,9 +8,23 @@ setup() {
88 source " ${BATS_TEST_DIRNAME} /../bash-preexec.sh"
99}
1010
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+
1125bp_install () {
1226 __bp_install_after_session_init
13- eval " $PROMPT_COMMAND "
27+ eval_PROMPT_COMMAND
1428}
1529
1630test_echo () {
@@ -63,7 +77,7 @@ set_exit_code_and_run_precmd() {
6377 [[ " $PROMPT_COMMAND " == * " trap - DEBUG" * ]] || return 1
6478 [[ " $PROMPT_COMMAND " == * " __bp_install" * ]] || return 1
6579
66- eval " $PROMPT_COMMAND "
80+ eval_PROMPT_COMMAND
6781
6882 [[ " $PROMPT_COMMAND " != * " trap DEBUG" * ]] || return 1
6983 [[ " $PROMPT_COMMAND " != * " __bp_install" * ]] || return 1
@@ -106,7 +120,7 @@ set_exit_code_and_run_precmd() {
106120 bp_install
107121
108122 PROMPT_COMMAND=" $PROMPT_COMMAND ; true"
109- eval " $PROMPT_COMMAND "
123+ eval_PROMPT_COMMAND
110124}
111125
112126@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() {
119133 PROMPT_COMMAND=" true; $PROMPT_COMMAND "
120134 PROMPT_COMMAND=" true; $PROMPT_COMMAND "
121135 PROMPT_COMMAND=" true $nl $PROMPT_COMMAND "
122- eval " $PROMPT_COMMAND "
136+ eval_PROMPT_COMMAND
123137}
124138
125139# Case where a user is appending or prepending to PROMPT_COMMAND.
@@ -132,21 +146,21 @@ set_exit_code_and_run_precmd() {
132146 PROMPT_COMMAND=" $PROMPT_COMMAND " $' \n echo after'
133147 PROMPT_COMMAND=" echo after2; $PROMPT_COMMAND ;"
134148
135- eval " $PROMPT_COMMAND "
149+ eval_PROMPT_COMMAND
136150
137151 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 " ]
139153}
140154
141155@test " Adding to PROMPT_COMMAND after with semicolon" {
142156 PROMPT_COMMAND=" echo before"
143157 __bp_install_after_session_init
144158 PROMPT_COMMAND=" $PROMPT_COMMAND ; echo after"
145159
146- eval " $PROMPT_COMMAND "
160+ eval_PROMPT_COMMAND
147161
148162 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 " ]
150164}
151165
152166@test " during install PROMPT_COMMAND and precmd functions should be executed each once" {
@@ -157,7 +171,7 @@ set_exit_code_and_run_precmd() {
157171 PROMPT_COMMAND=" echo after2; $PROMPT_COMMAND ;"
158172
159173 precmd () { echo " inside precmd" ; }
160- run eval " $PROMPT_COMMAND "
174+ run eval_PROMPT_COMMAND
161175 [ " ${lines[0]} " == " after2" ]
162176 [ " ${lines[1]} " == " before" ]
163177 [ " ${lines[2]} " == " before2" ]
0 commit comments