summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools')
-rw-r--r--cli/tools/test_runner.rs62
1 files changed, 47 insertions, 15 deletions
diff --git a/cli/tools/test_runner.rs b/cli/tools/test_runner.rs
index 9e5489bf7..ca8fa7792 100644
--- a/cli/tools/test_runner.rs
+++ b/cli/tools/test_runner.rs
@@ -264,7 +264,7 @@ where
Ok(prepared)
}
-pub async fn run_test_file(
+pub async fn test_specifier(
program_state: Arc<ProgramState>,
main_module: ModuleSpecifier,
permissions: Permissions,
@@ -273,21 +273,32 @@ pub async fn run_test_file(
shuffle: Option<u64>,
channel: Sender<TestEvent>,
) -> Result<(), AnyError> {
+ let mut fetch_permissions = Permissions::allow_all();
+
+ let main_file = program_state
+ .file_fetcher
+ .fetch(&main_module, &mut fetch_permissions)
+ .await?;
+
let test_module =
deno_core::resolve_path(&format!("{}$deno$test.js", Uuid::new_v4()))?;
- let test_source = format!(
- r#"
- import "{}";
- await new Promise(resolve => setTimeout(resolve, 0));
- await Deno[Deno.internal].runTests({});
- "#,
- main_module,
+
+ let mut test_source = String::new();
+ if main_file.media_type != MediaType::Unknown {
+ test_source.push_str(&format!("import \"{}\";\n", main_module));
+ }
+
+ test_source
+ .push_str("await new Promise(resolve => setTimeout(resolve, 0));\n");
+
+ test_source.push_str(&format!(
+ "await Deno[Deno.internal].runTests({});\n",
json!({
- "disableLog": quiet,
- "filter": filter,
- "shuffle": shuffle,
- })
- );
+ "disableLog": quiet,
+ "filter": filter,
+ "shuffle": shuffle,
+ }),
+ ));
let test_file = File {
local: test_module.to_file_path().unwrap(),
@@ -562,9 +573,30 @@ pub async fn run_tests(
.await?;
}
+ let prepare_roots = {
+ let mut files = Vec::new();
+ let mut fetch_permissions = Permissions::allow_all();
+ for specifier in &test_modules {
+ let file = program_state
+ .file_fetcher
+ .fetch(specifier, &mut fetch_permissions)
+ .await?;
+
+ files.push(file);
+ }
+
+ let prepare_roots = files
+ .iter()
+ .filter(|file| file.media_type != MediaType::Unknown)
+ .map(|file| file.specifier.clone())
+ .collect();
+
+ prepare_roots
+ };
+
program_state
.prepare_module_graph(
- test_modules.clone(),
+ prepare_roots,
lib.clone(),
Permissions::allow_all(),
permissions.clone(),
@@ -587,7 +619,7 @@ pub async fn run_tests(
tokio::task::spawn_blocking(move || {
let join_handle = std::thread::spawn(move || {
- let future = run_test_file(
+ let future = test_specifier(
program_state,
main_module,
permissions,