summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/flags.rs82
-rw-r--r--cli/args/mod.rs2
2 files changed, 84 insertions, 0 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index d06a17a06..3f4498dac 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -221,6 +221,7 @@ pub struct TestFlags {
pub concurrent_jobs: Option<NonZeroUsize>,
pub trace_ops: bool,
pub watch: Option<WatchFlags>,
+ pub junit_path: Option<String>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
@@ -1848,6 +1849,16 @@ Directory arguments are expanded to all contained files matching the glob
)
.arg(no_clear_screen_arg())
.arg(script_arg().last(true))
+ .arg(
+ Arg::new("junit")
+ .long("junit")
+ .value_name("PATH")
+ .value_hint(ValueHint::FilePath)
+ .help("Write a JUnit XML test report to PATH. Use '-' to write to stdout which is the default when PATH is not provided.")
+ .num_args(0..=1)
+ .require_equals(true)
+ .default_missing_value("-")
+ )
)
}
@@ -3034,6 +3045,8 @@ fn test_parse(flags: &mut Flags, matches: &mut ArgMatches) {
Vec::new()
};
+ let junit_path = matches.remove_one::<String>("junit");
+
flags.subcommand = DenoSubcommand::Test(TestFlags {
no_run,
doc,
@@ -3046,6 +3059,7 @@ fn test_parse(flags: &mut Flags, matches: &mut ArgMatches) {
concurrent_jobs,
trace_ops,
watch: watch_arg_parse(matches),
+ junit_path,
});
}
@@ -5910,6 +5924,7 @@ mod tests {
trace_ops: true,
coverage_dir: Some("cov".to_string()),
watch: Default::default(),
+ junit_path: None,
}),
unstable: true,
no_prompt: true,
@@ -5988,6 +6003,7 @@ mod tests {
trace_ops: false,
coverage_dir: None,
watch: Default::default(),
+ junit_path: None,
}),
type_check_mode: TypeCheckMode::Local,
no_prompt: true,
@@ -6020,6 +6036,7 @@ mod tests {
trace_ops: false,
coverage_dir: None,
watch: Default::default(),
+ junit_path: None,
}),
type_check_mode: TypeCheckMode::Local,
no_prompt: true,
@@ -6056,6 +6073,7 @@ mod tests {
trace_ops: false,
coverage_dir: None,
watch: Default::default(),
+ junit_path: None,
}),
no_prompt: true,
type_check_mode: TypeCheckMode::Local,
@@ -6086,6 +6104,7 @@ mod tests {
trace_ops: false,
coverage_dir: None,
watch: Default::default(),
+ junit_path: None,
}),
no_prompt: true,
type_check_mode: TypeCheckMode::Local,
@@ -6117,6 +6136,7 @@ mod tests {
watch: Some(WatchFlags {
no_clear_screen: false,
}),
+ junit_path: None,
}),
no_prompt: true,
type_check_mode: TypeCheckMode::Local,
@@ -6147,6 +6167,7 @@ mod tests {
watch: Some(WatchFlags {
no_clear_screen: false,
}),
+ junit_path: None,
}),
no_prompt: true,
type_check_mode: TypeCheckMode::Local,
@@ -6179,6 +6200,67 @@ mod tests {
watch: Some(WatchFlags {
no_clear_screen: true,
}),
+ junit_path: None,
+ }),
+ type_check_mode: TypeCheckMode::Local,
+ no_prompt: true,
+ ..Flags::default()
+ }
+ );
+ }
+
+ #[test]
+ fn test_junit_default() {
+ let r = flags_from_vec(svec!["deno", "test", "--junit"]);
+ assert_eq!(
+ r.unwrap(),
+ Flags {
+ subcommand: DenoSubcommand::Test(TestFlags {
+ no_run: false,
+ doc: false,
+ fail_fast: None,
+ filter: None,
+ allow_none: false,
+ shuffle: None,
+ files: FileFlags {
+ include: vec![],
+ ignore: vec![],
+ },
+ concurrent_jobs: None,
+ trace_ops: false,
+ coverage_dir: None,
+ watch: Default::default(),
+ junit_path: Some("-".to_string()),
+ }),
+ type_check_mode: TypeCheckMode::Local,
+ no_prompt: true,
+ ..Flags::default()
+ }
+ );
+ }
+
+ #[test]
+ fn test_junit_with_path() {
+ let r = flags_from_vec(svec!["deno", "test", "--junit=junit.xml"]);
+ assert_eq!(
+ r.unwrap(),
+ Flags {
+ subcommand: DenoSubcommand::Test(TestFlags {
+ no_run: false,
+ doc: false,
+ fail_fast: None,
+ filter: None,
+ allow_none: false,
+ shuffle: None,
+ files: FileFlags {
+ include: vec![],
+ ignore: vec![],
+ },
+ concurrent_jobs: None,
+ trace_ops: false,
+ coverage_dir: None,
+ watch: Default::default(),
+ junit_path: Some("junit.xml".to_string()),
}),
type_check_mode: TypeCheckMode::Local,
no_prompt: true,
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 9a6050347..a979aa10c 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -227,6 +227,7 @@ pub struct TestOptions {
pub shuffle: Option<u64>,
pub concurrent_jobs: NonZeroUsize,
pub trace_ops: bool,
+ pub junit_path: Option<String>,
}
impl TestOptions {
@@ -251,6 +252,7 @@ impl TestOptions {
no_run: test_flags.no_run,
shuffle: test_flags.shuffle,
trace_ops: test_flags.trace_ops,
+ junit_path: test_flags.junit_path,
})
}
}