summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tools/vendor/build.rs28
-rw-r--r--cli/tools/vendor/test.rs22
2 files changed, 46 insertions, 4 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()
diff --git a/cli/tools/vendor/test.rs b/cli/tools/vendor/test.rs
index 7a8feb94b..836fb579b 100644
--- a/cli/tools/vendor/test.rs
+++ b/cli/tools/vendor/test.rs
@@ -42,6 +42,22 @@ impl TestLoader {
path_or_specifier: impl AsRef<str>,
text: impl AsRef<str>,
) -> &mut Self {
+ self.add_result(path_or_specifier, Ok((text.as_ref().to_string(), None)))
+ }
+
+ pub fn add_failure(
+ &mut self,
+ path_or_specifier: impl AsRef<str>,
+ message: impl AsRef<str>,
+ ) -> &mut Self {
+ self.add_result(path_or_specifier, Err(message.as_ref().to_string()))
+ }
+
+ fn add_result(
+ &mut self,
+ path_or_specifier: impl AsRef<str>,
+ result: RemoteFileResult,
+ ) -> &mut Self {
if path_or_specifier
.as_ref()
.to_lowercase()
@@ -49,14 +65,12 @@ impl TestLoader {
{
self.files.insert(
ModuleSpecifier::parse(path_or_specifier.as_ref()).unwrap(),
- Ok((text.as_ref().to_string(), None)),
+ result,
);
} else {
let path = make_path(path_or_specifier.as_ref());
let specifier = ModuleSpecifier::from_file_path(path).unwrap();
- self
- .files
- .insert(specifier, Ok((text.as_ref().to_string(), None)));
+ self.files.insert(specifier, result);
}
self
}