summaryrefslogtreecommitdiff
path: root/cli/tests/integration/repl_tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/integration/repl_tests.rs')
-rw-r--r--cli/tests/integration/repl_tests.rs164
1 files changed, 58 insertions, 106 deletions
diff --git a/cli/tests/integration/repl_tests.rs b/cli/tests/integration/repl_tests.rs
index 79c2cf0f5..a8f354598 100644
--- a/cli/tests/integration/repl_tests.rs
+++ b/cli/tests/integration/repl_tests.rs
@@ -2,27 +2,23 @@
use test_util as util;
-#[cfg(unix)]
#[test]
fn pty_multiline() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"(\n1 + 2\n)\n").unwrap();
- master.write_all(b"{\nfoo: \"foo\"\n}\n").unwrap();
- master.write_all(b"`\nfoo\n`\n").unwrap();
- master.write_all(b"`\n\\`\n`\n").unwrap();
- master.write_all(b"'{'\n").unwrap();
- master.write_all(b"'('\n").unwrap();
- master.write_all(b"'['\n").unwrap();
- master.write_all(b"/{/\n").unwrap();
- master.write_all(b"/\\(/\n").unwrap();
- master.write_all(b"/\\[/\n").unwrap();
- master.write_all(b"console.log(\"{test1} abc {test2} def {{test3}}\".match(/{([^{].+?)}/));\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
-
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("(\n1 + 2\n)");
+ console.write_line("{\nfoo: \"foo\"\n}");
+ console.write_line("`\nfoo\n`");
+ console.write_line("`\n\\`\n`");
+ console.write_line("'{'");
+ console.write_line("'('");
+ console.write_line("'['");
+ console.write_line("/{/");
+ console.write_line("/\\(/");
+ console.write_line("/\\[/");
+ console.write_line("console.log(\"{test1} abc {test2} def {{test3}}\".match(/{([^{].+?)}/));");
+ console.write_line("close();");
+
+ let output = console.read_all_output();
assert!(output.contains('3'));
assert!(output.contains("{ foo: \"foo\" }"));
assert!(output.contains("\"\\nfoo\\n\""));
@@ -37,109 +33,85 @@ fn pty_multiline() {
});
}
-#[cfg(unix)]
#[test]
fn pty_unpaired_braces() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b")\n").unwrap();
- master.write_all(b"]\n").unwrap();
- master.write_all(b"}\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line(")");
+ console.write_line("]");
+ console.write_line("}");
+ console.write_line("close();");
+ let output = console.read_all_output();
assert!(output.contains("Unexpected token `)`"));
assert!(output.contains("Unexpected token `]`"));
assert!(output.contains("Unexpected token `}`"));
});
}
-#[cfg(unix)]
#[test]
fn pty_bad_input() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"'\\u{1f3b5}'[0]\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("'\\u{1f3b5}'[0]");
+ console.write_line("close();");
+ let output = console.read_all_output();
assert!(output.contains("Unterminated string literal"));
});
}
-#[cfg(unix)]
#[test]
fn pty_syntax_error_input() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"('\\u')\n").unwrap();
- master.write_all(b"('\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("('\\u')");
+ console.write_line("('");
+ console.write_line("close();");
+ let output = console.read_all_output();
assert!(output.contains("Unterminated string constant"));
assert!(output.contains("Unexpected eof"));
});
}
-#[cfg(unix)]
#[test]
fn pty_complete_symbol() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"Symbol.it\t\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("Symbol.it\t");
+ console.write_line("close();");
+ let output = console.read_all_output();
assert!(output.contains("Symbol(Symbol.iterator)"));
});
}
-#[cfg(unix)]
#[test]
fn pty_complete_declarations() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"class MyClass {}\n").unwrap();
- master.write_all(b"My\t\n").unwrap();
- master.write_all(b"let myVar;\n").unwrap();
- master.write_all(b"myV\t\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
-
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("class MyClass {}");
+ console.write_line("My\t");
+ console.write_line("let myVar;");
+ console.write_line("myV\t");
+ console.write_line("close();");
+
+ let output = console.read_all_output();
assert!(output.contains("> MyClass"));
assert!(output.contains("> myVar"));
});
}
-#[cfg(unix)]
#[test]
fn pty_complete_primitives() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"let func = function test(){}\n").unwrap();
- master.write_all(b"func.appl\t\n").unwrap();
- master.write_all(b"let str = ''\n").unwrap();
- master.write_all(b"str.leng\t\n").unwrap();
- master.write_all(b"false.valueO\t\n").unwrap();
- master.write_all(b"5n.valueO\t\n").unwrap();
- master.write_all(b"let num = 5\n").unwrap();
- master.write_all(b"num.toStrin\t\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
-
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("let func = function test(){}");
+ console.write_line("func.appl\t");
+ console.write_line("let str = ''");
+ console.write_line("str.leng\t");
+ console.write_line("false.valueO\t");
+ console.write_line("5n.valueO\t");
+ console.write_line("let num = 5");
+ console.write_line("num.toStrin\t");
+ console.write_line("close();");
+
+ let output = console.read_all_output();
assert!(output.contains("> func.apply"));
assert!(output.contains("> str.length"));
assert!(output.contains("> 5n.valueOf"));
@@ -148,17 +120,13 @@ fn pty_complete_primitives() {
});
}
-#[cfg(unix)]
#[test]
fn pty_ignore_symbols() {
- use std::io::{Read, Write};
- run_pty_test(|master| {
- master.write_all(b"Array.Symbol\t\n").unwrap();
- master.write_all(b"close();\n").unwrap();
-
- let mut output = String::new();
- master.read_to_string(&mut output).unwrap();
+ util::with_pty(&["repl"], |mut console| {
+ console.write_line("Array.Symbol\t");
+ console.write_line("close();");
+ let output = console.read_all_output();
assert!(output.contains("undefined"));
assert!(
!output.contains("Uncaught TypeError: Array.Symbol is not a function")
@@ -166,22 +134,6 @@ fn pty_ignore_symbols() {
});
}
-#[cfg(unix)]
-fn run_pty_test(mut run: impl FnMut(&mut util::pty::fork::Master)) {
- 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() {
- run(&mut master);
- 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(