diff options
Diffstat (limited to 'cli/tools/vendor/build.rs')
-rw-r--r-- | cli/tools/vendor/build.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/cli/tools/vendor/build.rs b/cli/tools/vendor/build.rs index 341ef8684..f56204c77 100644 --- a/cli/tools/vendor/build.rs +++ b/cli/tools/vendor/build.rs @@ -68,6 +68,14 @@ pub fn build( graph.lock()?; graph.valid()?; + let graph_errors = graph.errors(); + if !graph_errors.is_empty() { + for err in &graph_errors { + log::error!("{}", err); + } + bail!("failed vendoring"); + } + // figure out how to map remote modules to local let all_modules = graph.modules(); let remote_modules = all_modules @@ -1003,6 +1011,26 @@ mod test { ); } + #[tokio::test] + async fn vendor_file_fails_loading_dynamic_import() { + let mut builder = VendorTestBuilder::with_default_setup(); + let err = builder + .with_loader(|loader| { + loader.add("/mod.ts", "import 'https://localhost/mod.ts';"); + loader.add("https://localhost/mod.ts", "await import('./test.ts');"); + loader.add_failure( + "https://localhost/test.ts", + "500 Internal Server Error", + ); + }) + .build() + .await + .err() + .unwrap(); + + assert_eq!(err.to_string(), "failed vendoring"); + } + fn to_file_vec(items: &[(&str, &str)]) -> Vec<(String, String)> { items .iter() |