summaryrefslogtreecommitdiff
path: root/cli/test_runner.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/test_runner.rs')
-rw-r--r--cli/test_runner.rs71
1 files changed, 66 insertions, 5 deletions
diff --git a/cli/test_runner.rs b/cli/test_runner.rs
index e05013889..3d177f60e 100644
--- a/cli/test_runner.rs
+++ b/cli/test_runner.rs
@@ -3,12 +3,28 @@
use crate::installer::is_remote_url;
use deno_core::ErrBox;
use std;
+use std::path::Path;
use std::path::PathBuf;
use url::Url;
+fn is_supported(p: &Path) -> bool {
+ use std::path::Component;
+ if let Some(Component::Normal(basename_os_str)) = p.components().next_back() {
+ let basename = basename_os_str.to_string_lossy();
+ basename.ends_with("_test.ts")
+ || basename.ends_with("_test.js")
+ || basename.ends_with(".test.ts")
+ || basename.ends_with(".test.js")
+ || basename == "test.ts"
+ || basename == "test.js"
+ } else {
+ false
+ }
+}
+
pub fn prepare_test_modules_urls(
include: Vec<String>,
- root_path: PathBuf,
+ root_path: &PathBuf,
) -> Result<Vec<Url>, ErrBox> {
let (include_paths, include_urls): (Vec<String>, Vec<String>) =
include.into_iter().partition(|n| !is_remote_url(n));
@@ -16,9 +32,19 @@ pub fn prepare_test_modules_urls(
let mut prepared = vec![];
for path in include_paths {
- let p = root_path.join(path).canonicalize()?;
- let url = Url::from_file_path(p).unwrap();
- prepared.push(url);
+ let q = root_path.join(path);
+ let p = q.canonicalize()?;
+ if p.is_dir() {
+ let test_files = crate::fs::files_in_subtree(p, is_supported);
+ let test_files_as_urls = test_files
+ .iter()
+ .map(|f| Url::from_file_path(f).unwrap())
+ .collect::<Vec<Url>>();
+ prepared.extend(test_files_as_urls);
+ } else {
+ let url = Url::from_file_path(p).unwrap();
+ prepared.push(url);
+ }
}
for remote_url in include_urls {
@@ -59,7 +85,7 @@ mod tests {
"subdir2/mod2.ts".to_string(),
"http://example.com/printf_test.ts".to_string(),
],
- test_data_path.clone(),
+ &test_data_path,
)
.unwrap();
let test_data_url =
@@ -78,4 +104,39 @@ mod tests {
matched_urls.sort();
assert_eq!(matched_urls, expected);
}
+
+ #[test]
+ fn test_is_supported() {
+ assert!(is_supported(Path::new("tests/subdir/foo_test.ts")));
+ assert!(is_supported(Path::new("tests/subdir/foo_test.js")));
+ assert!(is_supported(Path::new("bar/foo.test.ts")));
+ assert!(is_supported(Path::new("bar/foo.test.js")));
+ assert!(is_supported(Path::new("foo/bar/test.js")));
+ assert!(is_supported(Path::new("foo/bar/test.ts")));
+ assert!(!is_supported(Path::new("README.md")));
+ assert!(!is_supported(Path::new("lib/typescript.d.ts")));
+ assert!(!is_supported(Path::new("notatest.js")));
+ assert!(!is_supported(Path::new("NotAtest.ts")));
+ }
+
+ #[test]
+ fn supports_dirs() {
+ let root = test_util::root_path().join("std").join("http");
+ println!("root {:?}", root);
+ let mut matched_urls =
+ prepare_test_modules_urls(vec![".".to_string()], &root).unwrap();
+ matched_urls.sort();
+ let root_url = Url::from_file_path(root).unwrap().to_string();
+ println!("root_url {}", root_url);
+ let expected: Vec<Url> = vec![
+ format!("{}/cookie_test.ts", root_url),
+ format!("{}/file_server_test.ts", root_url),
+ format!("{}/racing_server_test.ts", root_url),
+ format!("{}/server_test.ts", root_url),
+ ]
+ .into_iter()
+ .map(|f| Url::parse(&f).unwrap())
+ .collect();
+ assert_eq!(matched_urls, expected);
+ }
}