distro_info: fix sid keyring url
This commit is contained in:
@@ -135,11 +135,23 @@ pub async fn get_keyring_url(series: &str) -> Result<String, Box<dyn Error>> {
|
|||||||
|
|
||||||
// For Debian, we need the series number to form the keyring URL
|
// For Debian, we need the series number to form the keyring URL
|
||||||
if dist == "debian" {
|
if dist == "debian" {
|
||||||
|
// Special case for 'sid' - use the latest version
|
||||||
|
if series == "sid" {
|
||||||
|
let latest_series = get_ordered_series("debian").await?;
|
||||||
|
// Get the first non-sid series (which should be the latest stable)
|
||||||
|
let latest_stable = latest_series.iter().find(|&s| s != "sid").unwrap();
|
||||||
|
let series_num = get_debian_series_number(latest_stable).await?.unwrap();
|
||||||
|
// Replace {series_num} placeholder with the latest stable series number
|
||||||
|
Ok(dist_data
|
||||||
|
.archive_keyring
|
||||||
|
.replace("{series_num}", &series_num))
|
||||||
|
} else {
|
||||||
let series_num = get_debian_series_number(series).await?.unwrap();
|
let series_num = get_debian_series_number(series).await?.unwrap();
|
||||||
// Replace {series_num} placeholder with the actual series number
|
// Replace {series_num} placeholder with the actual series number
|
||||||
Ok(dist_data
|
Ok(dist_data
|
||||||
.archive_keyring
|
.archive_keyring
|
||||||
.replace("{series_num}", &series_num))
|
.replace("{series_num}", &series_num))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// For other distributions like Ubuntu, use the keyring directly
|
// For other distributions like Ubuntu, use the keyring directly
|
||||||
Ok(dist_data.archive_keyring.clone())
|
Ok(dist_data.archive_keyring.clone())
|
||||||
@@ -258,4 +270,16 @@ mod tests {
|
|||||||
let unknown_number = get_debian_series_number("unknown").await.unwrap();
|
let unknown_number = get_debian_series_number("unknown").await.unwrap();
|
||||||
assert!(unknown_number.is_none());
|
assert!(unknown_number.is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_get_keyring_url_sid() {
|
||||||
|
// Test that 'sid' uses the latest stable version for keyring URL
|
||||||
|
let sid_keyring = get_keyring_url("sid").await.unwrap();
|
||||||
|
let latest_series = get_ordered_series("debian").await.unwrap();
|
||||||
|
let latest_stable = latest_series.iter().find(|&s| s != "sid").unwrap();
|
||||||
|
let latest_keyring = get_keyring_url(latest_stable).await.unwrap();
|
||||||
|
|
||||||
|
// The keyring URL for 'sid' should be the same as the latest stable version
|
||||||
|
assert_eq!(sid_keyring, latest_keyring);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user