Skip to content

Commit 191c964

Browse files
committed
Add test for readline in browser sessions
1 parent 4aab367 commit 191c964

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

crates/ark/tests/kernel.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,54 @@ fn test_execute_request_browser_incomplete() {
250250
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
251251
}
252252

253+
#[test]
254+
fn test_execute_request_browser_stdin() {
255+
let frontend = DummyArkFrontend::lock();
256+
257+
let code = "browser()";
258+
frontend.send_execute_request(code, ExecuteRequestOptions::default());
259+
frontend.recv_iopub_busy();
260+
261+
let input = frontend.recv_iopub_execute_input();
262+
assert_eq!(input.code, code);
263+
264+
assert!(frontend
265+
.recv_iopub_execute_result()
266+
.contains("Called from: top level"));
267+
268+
frontend.recv_iopub_idle();
269+
270+
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
271+
272+
let options = ExecuteRequestOptions { allow_stdin: true };
273+
let code = "readline('prompt>')";
274+
frontend.send_execute_request(code, options);
275+
frontend.recv_iopub_busy();
276+
277+
let input = frontend.recv_iopub_execute_input();
278+
assert_eq!(input.code, code);
279+
280+
let prompt = frontend.recv_stdin_input_request();
281+
assert_eq!(prompt, String::from("prompt>"));
282+
283+
frontend.send_stdin_input_reply(String::from("hi"));
284+
285+
assert_eq!(frontend.recv_iopub_execute_result(), "[1] \"hi\"");
286+
frontend.recv_iopub_idle();
287+
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
288+
289+
let code = "Q";
290+
frontend.send_execute_request(code, ExecuteRequestOptions::default());
291+
frontend.recv_iopub_busy();
292+
293+
let input = frontend.recv_iopub_execute_input();
294+
assert_eq!(input.code, code);
295+
296+
frontend.recv_iopub_idle();
297+
298+
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
299+
}
300+
253301
#[test]
254302
fn test_execute_request_error() {
255303
let frontend = DummyArkFrontend::lock();

0 commit comments

Comments
 (0)