summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/flags.rs158
-rw-r--r--cli/tests/integration_tests.rs34
-rw-r--r--cli/tests/lock_write_fetch.ts7
-rw-r--r--std/examples/chat/server_test.ts1
-rw-r--r--std/examples/tests/cat_test.ts1
-rw-r--r--std/examples/tests/catj_test.ts2
-rw-r--r--std/examples/tests/colors_test.ts2
-rw-r--r--std/examples/tests/curl_test.ts8
-rw-r--r--std/examples/tests/echo_server_test.ts2
-rw-r--r--std/examples/tests/welcome_test.ts2
-rw-r--r--std/examples/tests/xeval_test.ts4
-rw-r--r--std/fs/expand_glob_test.ts2
-rw-r--r--test_plugin/tests/integration_tests.rs1
-rwxr-xr-xtools/benchmark.py19
14 files changed, 66 insertions, 177 deletions
diff --git a/cli/flags.rs b/cli/flags.rs
index 866b36820..239382e03 100644
--- a/cli/flags.rs
+++ b/cli/flags.rs
@@ -6,7 +6,6 @@ use clap::Arg;
use clap::ArgMatches;
use clap::SubCommand;
use log::Level;
-use std::collections::HashSet;
use std::net::SocketAddr;
use std::path::{Path, PathBuf};
@@ -14,14 +13,6 @@ use std::path::{Path, PathBuf};
macro_rules! svec {
($($x:expr),*) => (vec![$($x.to_string()),*]);
}
-/// Creates HashSet<String> from string literals
-macro_rules! sset {
- ($($x:expr),*) => {{
- let _v = svec![$($x.to_string()),*];
- let hash_set: HashSet<String> = _v.iter().cloned().collect();
- hash_set
- }}
-}
#[derive(Clone, Debug, PartialEq)]
pub enum DenoSubcommand {
@@ -196,17 +187,15 @@ Docs: https://deno.land/std/manual.md
Modules: https://deno.land/std/ https://deno.land/x/
Bugs: https://github.com/denoland/deno/issues
-To start the REPL, supply no arguments:
+To start the REPL:
deno
To execute a script:
deno run https://deno.land/std/examples/welcome.ts
- deno https://deno.land/std/examples/welcome.ts
To evaluate code in the shell:
deno eval \"console.log(30933 + 404)\"
-
-Run 'deno help run' for 'run'-specific flags.";
+";
lazy_static! {
static ref LONG_VERSION: String = format!(
@@ -228,7 +217,6 @@ pub fn flags_from_vec(args: Vec<String>) -> Flags {
/// Same as flags_from_vec but does not exit on error.
pub fn flags_from_vec_safe(args: Vec<String>) -> clap::Result<Flags> {
- let args = arg_hacks(args);
let app = clap_root();
let matches = app.get_matches_from_safe(args)?;
@@ -272,7 +260,7 @@ pub fn flags_from_vec_safe(args: Vec<String>) -> clap::Result<Flags> {
} else if let Some(m) = matches.subcommand_matches("doc") {
doc_parse(&mut flags, m);
} else {
- unimplemented!();
+ repl_parse(&mut flags, &matches);
}
Ok(flags)
@@ -1342,80 +1330,12 @@ fn resolve_hosts(paths: Vec<String>) -> Vec<String> {
out
}
-fn arg_hacks(mut args: Vec<String>) -> Vec<String> {
- // Hack #1 We want to default the subcommand to "run"
- // Clap does not let us have a default sub-command. But we want to allow users
- // to do "deno script.js" instead of "deno run script.js".
- // This function insert the "run" into the second position of the args.
- assert!(!args.is_empty());
- // Rational:
- // deno -> deno repl
- if args.len() == 1 {
- args.insert(1, "repl".to_string());
- return args;
- }
- let subcommands = sset![
- "bundle",
- "completions",
- "doc",
- "eval",
- "cache",
- "fmt",
- "test",
- "info",
- "repl",
- "run",
- "types",
- "install",
- "help",
- "version",
- "upgrade"
- ];
- let modifier_flags = sset!["-h", "--help", "-V", "--version"];
- // deno [subcommand|behavior modifier flags] -> do nothing
- if subcommands.contains(&args[1]) || modifier_flags.contains(&args[1]) {
- return args;
- }
- // This is not perfect either, since originally we should also
- // support e.g. `-L debug` which `debug` would be treated as main module.
- // Instead `-L=debug` must be used
- let mut has_main_module = false;
- for arg in args.iter().skip(1) {
- if !arg.starts_with('-') {
- has_main_module = true;
- break;
- }
- }
- if has_main_module {
- // deno ...-[flags] NAME ... -> deno run ...-[flags] NAME ...
- args.insert(1, "run".to_string());
- } else {
- // deno ...-[flags] -> deno repl ...-[flags]
- args.insert(1, "repl".to_string());
- }
- args
-}
-
#[cfg(test)]
mod tests {
use super::*;
use std::env::current_dir;
#[test]
- fn arg_hacks_test() {
- let args0 = arg_hacks(svec!["deno", "--version"]);
- assert_eq!(args0, ["deno", "--version"]);
- let args1 = arg_hacks(svec!["deno"]);
- assert_eq!(args1, ["deno", "repl"]);
- let args2 = arg_hacks(svec!["deno", "-L=debug", "-h"]);
- assert_eq!(args2, ["deno", "repl", "-L=debug", "-h"]);
- let args3 = arg_hacks(svec!["deno", "script.js"]);
- assert_eq!(args3, ["deno", "run", "script.js"]);
- let args4 = arg_hacks(svec!["deno", "-A", "script.js", "-L=info"]);
- assert_eq!(args4, ["deno", "run", "-A", "script.js", "-L=info"]);
- }
-
- #[test]
fn upgrade() {
let r =
flags_from_vec_safe(svec!["deno", "upgrade", "--dry-run", "--force"]);
@@ -1968,41 +1888,6 @@ mod tests {
}
#[test]
- fn default_to_run() {
- let r = flags_from_vec_safe(svec!["deno", "script.ts"]);
- assert_eq!(
- r.unwrap(),
- Flags {
- subcommand: DenoSubcommand::Run {
- script: "script.ts".to_string(),
- },
- ..Flags::default()
- }
- );
- }
-
- #[test]
- fn default_to_run_with_permissions() {
- let r = flags_from_vec_safe(svec![
- "deno",
- "--allow-net",
- "--allow-read",
- "script.ts"
- ]);
- assert_eq!(
- r.unwrap(),
- Flags {
- subcommand: DenoSubcommand::Run {
- script: "script.ts".to_string(),
- },
- allow_net: true,
- allow_read: true,
- ..Flags::default()
- }
- );
- }
-
- #[test]
fn bundle() {
let r = flags_from_vec_safe(svec!["deno", "bundle", "source.ts"]);
assert_eq!(
@@ -2072,25 +1957,6 @@ mod tests {
}
#[test]
- fn default_to_run_importmap() {
- let r = flags_from_vec_safe(svec![
- "deno",
- "--importmap=importmap.json",
- "script.ts"
- ]);
- assert_eq!(
- r.unwrap(),
- Flags {
- subcommand: DenoSubcommand::Run {
- script: "script.ts".to_string(),
- },
- import_map_path: Some("importmap.json".to_owned()),
- ..Flags::default()
- }
- );
- }
-
- #[test]
fn cache_importmap() {
let r = flags_from_vec_safe(svec![
"deno",
@@ -2250,8 +2116,12 @@ mod tests {
#[test]
fn log_level() {
- let r =
- flags_from_vec_safe(svec!["deno", "--log-level=debug", "script.ts"]);
+ let r = flags_from_vec_safe(svec![
+ "deno",
+ "run",
+ "--log-level=debug",
+ "script.ts"
+ ]);
assert_eq!(
r.unwrap(),
Flags {
@@ -2266,7 +2136,7 @@ mod tests {
#[test]
fn quiet() {
- let r = flags_from_vec_safe(svec!["deno", "-q", "script.ts"]);
+ let r = flags_from_vec_safe(svec!["deno", "run", "-q", "script.ts"]);
assert_eq!(
r.unwrap(),
Flags {
@@ -2350,7 +2220,8 @@ mod tests {
#[test]
fn no_remote() {
- let r = flags_from_vec_safe(svec!["deno", "--no-remote", "script.ts"]);
+ let r =
+ flags_from_vec_safe(svec!["deno", "run", "--no-remote", "script.ts"]);
assert_eq!(
r.unwrap(),
Flags {
@@ -2365,7 +2236,8 @@ mod tests {
#[test]
fn cached_only() {
- let r = flags_from_vec_safe(svec!["deno", "--cached-only", "script.ts"]);
+ let r =
+ flags_from_vec_safe(svec!["deno", "run", "--cached-only", "script.ts"]);
assert_eq!(
r.unwrap(),
Flags {
@@ -2382,6 +2254,7 @@ mod tests {
fn allow_net_whitelist_with_ports() {
let r = flags_from_vec_safe(svec![
"deno",
+ "run",
"--allow-net=deno.land,:8000,:4545",
"script.ts"
]);
@@ -2409,6 +2282,7 @@ mod tests {
fn lock_write() {
let r = flags_from_vec_safe(svec![
"deno",
+ "run",
"--lock-write",
"--lock=lock.json",
"script.ts"
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index 7827d386a..1d02226b4 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -1322,7 +1322,7 @@ itest!(error_014_catch_dynamic_import_error {
});
itest!(error_015_dynamic_import_permissions {
- args: "--reload error_015_dynamic_import_permissions.js",
+ args: "run --reload error_015_dynamic_import_permissions.js",
output: "error_015_dynamic_import_permissions.out",
check_stderr: true,
exit_code: 1,
@@ -1331,7 +1331,7 @@ itest!(error_015_dynamic_import_permissions {
// We have an allow-net flag but not allow-read, it should still result in error.
itest!(error_016_dynamic_import_permissions2 {
- args: "--reload --allow-net error_016_dynamic_import_permissions2.js",
+ args: "run --reload --allow-net error_016_dynamic_import_permissions2.js",
output: "error_016_dynamic_import_permissions2.out",
check_stderr: true,
exit_code: 1,
@@ -1339,63 +1339,63 @@ itest!(error_016_dynamic_import_permissions2 {
});
itest!(error_017_hide_long_source_ts {
- args: "--reload error_017_hide_long_source_ts.ts",
+ args: "run --reload error_017_hide_long_source_ts.ts",
output: "error_017_hide_long_source_ts.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_018_hide_long_source_js {
- args: "error_018_hide_long_source_js.js",
+ args: "run error_018_hide_long_source_js.js",
output: "error_018_hide_long_source_js.js.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_019_stack_function {
- args: "error_019_stack_function.ts",
+ args: "run error_019_stack_function.ts",
output: "error_019_stack_function.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_020_stack_constructor {
- args: "error_020_stack_constructor.ts",
+ args: "run error_020_stack_constructor.ts",
output: "error_020_stack_constructor.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_021_stack_method {
- args: "error_021_stack_method.ts",
+ args: "run error_021_stack_method.ts",
output: "error_021_stack_method.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_022_stack_custom_error {
- args: "error_022_stack_custom_error.ts",
+ args: "run error_022_stack_custom_error.ts",
output: "error_022_stack_custom_error.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_023_stack_async {
- args: "error_023_stack_async.ts",
+ args: "run error_023_stack_async.ts",
output: "error_023_stack_async.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_024_stack_promise_all {
- args: "error_024_stack_promise_all.ts",
+ args: "run error_024_stack_promise_all.ts",
output: "error_024_stack_promise_all.ts.out",
check_stderr: true,
exit_code: 1,
});
itest!(error_025_tab_indent {
- args: "error_025_tab_indent",
+ args: "run error_025_tab_indent",
output: "error_025_tab_indent.out",
check_stderr: true,
exit_code: 1,
@@ -1534,7 +1534,7 @@ itest!(run_v8_flags {
});
itest!(run_v8_help {
- args: "--v8-flags=--help",
+ args: "repl --v8-flags=--help",
output: "v8_help.out",
});
@@ -1544,27 +1544,27 @@ itest!(wasm {
});
itest!(wasm_async {
- args: "wasm_async.js",
+ args: "run wasm_async.js",
output: "wasm_async.out",
});
itest!(top_level_await {
- args: "--allow-read top_level_await.js",
+ args: "run --allow-read top_level_await.js",
output: "top_level_await.out",
});
itest!(top_level_await_ts {
- args: "--allow-read top_level_await.ts",
+ args: "run --allow-read top_level_await.ts",
output: "top_level_await.out",
});
itest!(top_level_for_await {
- args: "top_level_for_await.js",
+ args: "run top_level_for_await.js",
output: "top_level_for_await.out",
});
itest!(top_level_for_await_ts {
- args: "top_level_for_await.ts",
+ args: "run top_level_for_await.ts",
output: "top_level_for_await.out",
});
diff --git a/cli/tests/lock_write_fetch.ts b/cli/tests/lock_write_fetch.ts
index 2286d7a0c..9e7190596 100644
--- a/cli/tests/lock_write_fetch.ts
+++ b/cli/tests/lock_write_fetch.ts
@@ -35,7 +35,12 @@ console.log(`fetch check code: ${fetchCheckProcCode}`);
const runProc = Deno.run({
stdout: "null",
stderr: "null",
- cmd: [Deno.execPath(), "--lock=lock_write_fetch.json", "https_import.ts"],
+ cmd: [
+ Deno.execPath(),
+ "run",
+ "--lock=lock_write_fetch.json",
+ "https_import.ts",
+ ],
});
const runCode = (await runProc.status()).code;
diff --git a/std/examples/chat/server_test.ts b/std/examples/chat/server_test.ts
index 76b1f1bf5..d1c1a8afa 100644
--- a/std/examples/chat/server_test.ts
+++ b/std/examples/chat/server_test.ts
@@ -12,6 +12,7 @@ async function startServer(): Promise<Deno.Process> {
// TODO(lucacasonato): remove unstable once possible
cmd: [
Deno.execPath(),
+ "run",
"--allow-net",
"--allow-read",
"--unstable",
diff --git a/std/examples/tests/cat_test.ts b/std/examples/tests/cat_test.ts
index b12a6916f..4633c5750 100644
--- a/std/examples/tests/cat_test.ts
+++ b/std/examples/tests/cat_test.ts
@@ -6,6 +6,7 @@ Deno.test("[examples/cat] print multiple files", async () => {
const process = Deno.run({
cmd: [
Deno.execPath(),
+ "run",
"--allow-read",
"cat.ts",
"testdata/cat/hello.txt",
diff --git a/std/examples/tests/catj_test.ts b/std/examples/tests/catj_test.ts
index 53b36bef8..c3eb61f51 100644
--- a/std/examples/tests/catj_test.ts
+++ b/std/examples/tests/catj_test.ts
@@ -77,7 +77,7 @@ Deno.test("[examples/catj] read from stdin", async () => {
function catj(...files: string[]): Deno.Process {
return Deno.run({
- cmd: [Deno.execPath(), "--allow-read", "catj.ts", ...files],
+ cmd: [Deno.execPath(), "run", "--allow-read", "catj.ts", ...files],
cwd: "examples",
stdin: "piped",
stdout: "piped",
diff --git a/std/examples/tests/colors_test.ts b/std/examples/tests/colors_test.ts
index ac779adb8..90c469c00 100644
--- a/std/examples/tests/colors_test.ts
+++ b/std/examples/tests/colors_test.ts
@@ -4,7 +4,7 @@ import { assertStrictEq } from "../../testing/asserts.ts";
Deno.test("[examples/colors] print a colored text", async () => {
const decoder = new TextDecoder();
const process = Deno.run({
- cmd: [Deno.execPath(), "colors.ts"],
+ cmd: [Deno.execPath(), "run", "colors.ts"],
cwd: "examples",
stdout: "piped",
});
diff --git a/std/examples/tests/curl_test.ts b/std/examples/tests/curl_test.ts
index 9b2870216..69e0e52d6 100644
--- a/std/examples/tests/curl_test.ts
+++ b/std/examples/tests/curl_test.ts
@@ -14,7 +14,13 @@ Deno.test({
const decoder = new TextDecoder();
const process = Deno.run({
- cmd: [Deno.execPath(), "--allow-net", "curl.ts", "http://localhost:8081"],
+ cmd: [
+ Deno.execPath(),
+ "run",
+ "--allow-net",
+ "curl.ts",
+ "http://localhost:8081",
+ ],
cwd: "examples",
stdout: "piped",
});
diff --git a/std/examples/tests/echo_server_test.ts b/std/examples/tests/echo_server_test.ts
index 9c413d737..3e6096190 100644
--- a/std/examples/tests/echo_server_test.ts
+++ b/std/examples/tests/echo_server_test.ts
@@ -6,7 +6,7 @@ Deno.test("[examples/echo_server]", async () => {
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const process = Deno.run({
- cmd: [Deno.execPath(), "--allow-net", "echo_server.ts"],
+ cmd: [Deno.execPath(), "run", "--allow-net", "echo_server.ts"],
cwd: "examples",
stdout: "piped",
});
diff --git a/std/examples/tests/welcome_test.ts b/std/examples/tests/welcome_test.ts
index cacb77ab9..d508773c5 100644
--- a/std/examples/tests/welcome_test.ts
+++ b/std/examples/tests/welcome_test.ts
@@ -4,7 +4,7 @@ import { assertStrictEq } from "../../testing/asserts.ts";
Deno.test("[examples/welcome] print a welcome message", async () => {
const decoder = new TextDecoder();
const process = Deno.run({
- cmd: [Deno.execPath(), "welcome.ts"],
+ cmd: [Deno.execPath(), "run", "welcome.ts"],
cwd: "examples",
stdout: "piped",
});
diff --git a/std/examples/tests/xeval_test.ts b/std/examples/tests/xeval_test.ts
index 426f6fe56..eeeac7731 100644
--- a/std/examples/tests/xeval_test.ts
+++ b/std/examples/tests/xeval_test.ts
@@ -29,7 +29,7 @@ Deno.test({
name: "xevalCliReplvar",
fn: async function (): Promise<void> {
const p = run({
- cmd: [execPath(), xevalPath, "--replvar=abc", "console.log(abc)"],
+ cmd: [execPath(), "run", xevalPath, "--replvar=abc", "console.log(abc)"],
stdin: "piped",
stdout: "piped",
stderr: "null",
@@ -45,7 +45,7 @@ Deno.test({
Deno.test("xevalCliSyntaxError", async function (): Promise<void> {
const p = run({
- cmd: [execPath(), xevalPath, "("],
+ cmd: [execPath(), "run", xevalPath, "("],
stdin: "null",
stdout: "piped",
stderr: "piped",
diff --git a/std/fs/expand_glob_test.ts b/std/fs/expand_glob_test.ts
index 697c8bf98..24885530b 100644
--- a/std/fs/expand_glob_test.ts
+++ b/std/fs/expand_glob_test.ts
@@ -115,7 +115,7 @@ Deno.test("expandGlobIncludeDirs", async function (): Promise<void> {
Deno.test("expandGlobPermError", async function (): Promise<void> {
const exampleUrl = new URL("testdata/expand_wildcard.js", import.meta.url);
const p = run({
- cmd: [execPath(), "--unstable", exampleUrl.toString()],
+ cmd: [execPath(), "run", "--unstable", exampleUrl.toString()],
stdin: "null",
stdout: "piped",
stderr: "piped",
diff --git a/test_plugin/tests/integration_tests.rs b/test_plugin/tests/integration_tests.rs
index 1f118b77a..2f61ec9aa 100644
--- a/test_plugin/tests/integration_tests.rs
+++ b/test_plugin/tests/integration_tests.rs
@@ -30,6 +30,7 @@ fn basic() {
let build_plugin_output = build_plugin.output().unwrap();
assert!(build_plugin_output.status.success());
let output = deno_cmd()
+ .arg("run")
.arg("--allow-plugin")
.arg("--unstable")
.arg("tests/test.js")
diff --git a/tools/benchmark.py b/tools/benchmark.py
index a921feaf8..9485d79f4 100755
--- a/tools/benchmark.py
+++ b/tools/benchmark.py
@@ -20,15 +20,16 @@ import http_server
# The list of the tuples of the benchmark name and arguments
exec_time_benchmarks = [
- ("hello", ["cli/tests/002_hello.ts"]),
- ("relative_import", ["cli/tests/003_relative_import.ts"]),
- ("error_001", ["cli/tests/error_001.ts"]),
- ("cold_hello", ["--reload", "cli/tests/002_hello.ts"]),
- ("cold_relative_import", ["--reload", "cli/tests/003_relative_import.ts"]),
- ("workers_startup", ["cli/tests/workers_startup_bench.ts"]),
- ("workers_round_robin", ["cli/tests/workers_round_robin_bench.ts"]),
- ("text_decoder", ["cli/tests/text_decoder_perf.js"]),
- ("text_encoder", ["cli/tests/text_encoder_perf.js"]),
+ ("hello", ["run", "cli/tests/002_hello.ts"]),
+ ("relative_import", ["run", "cli/tests/003_relative_import.ts"]),
+ ("error_001", ["run", "cli/tests/error_001.ts"]),
+ ("cold_hello", ["run", "--reload", "cli/tests/002_hello.ts"]),
+ ("cold_relative_import",
+ ["run", "--reload", "cli/tests/003_relative_import.ts"]),
+ ("workers_startup", ["run", "cli/tests/workers_startup_bench.ts"]),
+ ("workers_round_robin", ["run", "cli/tests/workers_round_robin_bench.ts"]),
+ ("text_decoder", ["run", "cli/tests/text_decoder_perf.js"]),
+ ("text_encoder", ["run", "cli/tests/text_encoder_perf.js"]),
]