diff options
-rw-r--r-- | cli/tests/integration_tests.rs | 25 | ||||
-rw-r--r-- | cli/tools/repl.rs | 38 |
2 files changed, 44 insertions, 19 deletions
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index dd6b740e3..c79988412 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -1751,6 +1751,31 @@ mod integration { } } + #[cfg(unix)] + #[test] + fn pty_complete_symbol() { + use std::io::Read; + use util::pty::fork::*; + let deno_exe = util::deno_exe_path(); + let fork = Fork::from_ptmx().unwrap(); + if let Ok(mut master) = fork.is_parent() { + master.write_all(b"Deno.internal\t\n").unwrap(); + master.write_all(b"close();\n").unwrap(); + + let mut output = String::new(); + master.read_to_string(&mut output).unwrap(); + + assert!(output.contains("Symbol(Deno.internal)")); + + fork.wait().unwrap(); + } else { + std::env::set_var("NO_COLOR", "1"); + let err = exec::Command::new(deno_exe).arg("repl").exec(); + println!("err {}", err); + unreachable!() + } + } + #[test] fn console_log() { let (out, err) = util::run_and_collect_output( diff --git a/cli/tools/repl.rs b/cli/tools/repl.rs index 23b0afe2d..8e3df4109 100644 --- a/cli/tools/repl.rs +++ b/cli/tools/repl.rs @@ -103,25 +103,25 @@ impl Completer for Helper { if let Some(result) = evaluate_response.get("result") { if let Some(object_id) = result.get("objectId") { - let get_properties_response = self - .post_message( - "Runtime.getProperties", - Some(json!({ - "objectId": object_id, - })), - ) - .unwrap(); - - if let Some(result) = get_properties_response.get("result") { - let candidates = result - .as_array() - .unwrap() - .iter() - .map(|r| r.get("name").unwrap().as_str().unwrap().to_string()) - .filter(|r| r.starts_with(&suffix[1..])) - .collect(); - - return Ok((pos - (suffix.len() - 1), candidates)); + let get_properties_response = self.post_message( + "Runtime.getProperties", + Some(json!({ + "objectId": object_id, + })), + ); + + if let Ok(get_properties_response) = get_properties_response { + if let Some(result) = get_properties_response.get("result") { + let candidates = result + .as_array() + .unwrap() + .iter() + .map(|r| r.get("name").unwrap().as_str().unwrap().to_string()) + .filter(|r| r.starts_with(&suffix[1..])) + .collect(); + + return Ok((pos - (suffix.len() - 1), candidates)); + } } } } |