diff options
Diffstat (limited to 'cli/tests/eval_tests.rs')
-rw-r--r-- | cli/tests/eval_tests.rs | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/cli/tests/eval_tests.rs b/cli/tests/eval_tests.rs new file mode 100644 index 000000000..7107ecbbb --- /dev/null +++ b/cli/tests/eval_tests.rs @@ -0,0 +1,86 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. + +mod integration; + +use test_util as util; + +mod eval { + use super::*; + + #[test] + fn eval_p() { + let output = util::deno_cmd() + .arg("eval") + .arg("-p") + .arg("1+2") + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap() + .wait_with_output() + .unwrap(); + assert!(output.status.success()); + let stdout_str = util::strip_ansi_codes( + std::str::from_utf8(&output.stdout).unwrap().trim(), + ); + assert_eq!("3", stdout_str); + } + + // Make sure that snapshot flags don't affect runtime. + #[test] + fn eval_randomness() { + let mut numbers = Vec::with_capacity(10); + for _ in 0..10 { + let output = util::deno_cmd() + .arg("eval") + .arg("-p") + .arg("Math.random()") + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap() + .wait_with_output() + .unwrap(); + assert!(output.status.success()); + let stdout_str = util::strip_ansi_codes( + std::str::from_utf8(&output.stdout).unwrap().trim(), + ); + numbers.push(stdout_str.to_string()); + } + numbers.dedup(); + assert!(numbers.len() > 1); + } + + itest!(eval_basic { + args: "eval console.log(\"hello\")", + output_str: Some("hello\n"), + }); + + // Ugly parentheses due to whitespace delimiting problem. + itest!(eval_ts { + args: "eval --quiet --ext=ts console.log((123)as(number))", // 'as' is a TS keyword only + output_str: Some("123\n"), + }); + + itest!(dyn_import_eval { + args: "eval import('./subdir/mod4.js').then(console.log)", + output: "eval/dyn_import_eval.out", + }); + + // Cannot write the expression to evaluate as "console.log(typeof gc)" + // because itest! splits args on whitespace. + itest!(v8_flags_eval { + args: "eval --v8-flags=--expose-gc console.log(typeof(gc))", + output: "run/v8_flags.js.out", + }); + + itest!(check_local_by_default { + args: "eval --quiet import('http://localhost:4545/subdir/type_error.ts').then(console.log);", + output: "eval/check_local_by_default.out", + http_server: true, + }); + + itest!(check_local_by_default2 { + args: "eval --quiet import('./eval/check_local_by_default2.ts').then(console.log);", + output: "eval/check_local_by_default2.out", + http_server: true, + }); +} |