diff --git a/src/get.rs b/src/get.rs index c3d16f7..41a239d 100644 --- a/src/get.rs +++ b/src/get.rs @@ -185,7 +185,7 @@ pub async fn get(package: &str, _version: &str, series: &str, pocket: &str, _ppa if let Some(cb) = progress { cb(&format!("Resolving package info for {}...", package), "", 0, 0); } - let package_info = package_info::get(package, series, pocket).await; + let package_info = package_info::get(package, series, pocket).await?; let package_dir = if let Some(path) = cwd { path.join(package) @@ -193,18 +193,17 @@ pub async fn get(package: &str, _version: &str, series: &str, pocket: &str, _ppa Path::new(package).to_path_buf() }; - if let Ok(Some(info)) = package_info { - if let Some(ref url) = info.preferred_vcs { - if let Some(cb) = progress { - cb(&format!("Cloning {}...", url), "", 0, 0); - } - clone_repo(url.as_str(), package, Some(&package_dir), progress)?; - - if let Some(cb) = progress { - cb("Fetching orig tarball...", "", 0, 0); - } - fetch_orig_tarball(&info, Some(&package_dir), progress).await?; + let info = package_info.unwrap(); + if let Some(ref url) = info.preferred_vcs { + if let Some(cb) = progress { + cb(&format!("Cloning {}...", url), "", 0, 0); } + clone_repo(url.as_str(), package, Some(&package_dir), progress)?; + + if let Some(cb) = progress { + cb("Fetching orig tarball...", "", 0, 0); + } + fetch_orig_tarball(&info, Some(&package_dir), progress).await?; } else { return Err(format!("No VCS URL found for package {}", package).into()); } @@ -254,4 +253,14 @@ mod tests { async fn test_get_hello_debian_end_to_end() { test_get_package_end_to_end("hello", "bookworm").await; } + + #[tokio::test] + #[should_panic(expected = "No VCS URL found for package agg")] + async fn test_get_agg_svn_should_fail() { + // agg uses Vcs-Svn, which is not supported. + // We expect this to fail with "No VCS URL found". + let temp_dir = tempfile::tempdir().unwrap(); + let cwd = temp_dir.path(); + get("agg", "", "sid", "", "", Some(cwd), None).await.unwrap(); + } }