134134 :inf-result " "
135135 :eval (should (inferior-ess-available-p)))
136136
137+ (defun ess-test--browser ()
138+ (ess-send-string (ess-get-process) " { browser(); NULL }\n " )
139+ (ess-wait-for-process))
140+
141+ (defun ess-test--browser-cleanup ()
142+ (ess-debug-command-quit)
143+ (ess-wait-for-process)
144+ (etest-clear-inferior-buffer))
145+
137146(etest-deftest-r ess--command-browser-timeout-test ()
138147 " `ess-command' fails with hanging command within browser (#1081)."
139- :cleanup (progn
140- (ess-debug-command-quit)
141- (ess-wait-for-process)
142- (etest-clear-inferior-buffer))
143- :eval (progn
144- (ess-send-string (ess-get-process) " { browser(); NULL }\n " )
145- (ess-wait-for-process))
148+ :cleanup (ess-test--browser-cleanup)
149+ :eval (ess-test--browser)
146150 :inf-result " Called from: top level
147151Browse[1]> debug at #1: NULL
148152Browse[1]> "
@@ -160,6 +164,29 @@ Browse[1]> "
160164 :inf-result " NULL
161165Browse[1]> " )
162166
167+ (etest-deftest-r ess-command-browser-curly-braces ()
168+ " `{` expressions when debugger is active do not interrupt command."
169+ :cleanup (ess-test--browser-cleanup)
170+ :eval (ess-test--browser)
171+ :inf-result " Called from: top level
172+ Browse[1]> debug at #1: NULL
173+ Browse[1]> "
174+
175+ :eval (should (string= (ess-string-command " { 1; 2 }\n " )
176+ " [1] 2" ))
177+ :inf-result " "
178+ :eval (should (inferior-ess-available-p)))
179+
180+ (etest-deftest-r ess-command-environment ()
181+ " Can access current env with `.ess.environment()`"
182+ :cleanup (ess-test--browser-cleanup)
183+ :eval (progn
184+ (ess-send-string (ess-get-process)
185+ " local({ foo <- 1; browser(); NULL })\n " )
186+ (ess-wait-for-process))
187+ :eval (should (string= (ess-string-command " ls(envir = .ess.environment())\n " )
188+ " [1] \" foo\" " )))
189+
163190(etest-deftest-r ess-command-quit-test ()
164191 " `ess-command' does not leak output on quit (#794, #842).
165192This is especially important within `while-no-input' used by
0 commit comments