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
|
||||
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();
|
||||
// Replace {series_num} placeholder with the actual series number
|
||||
Ok(dist_data
|
||||
.archive_keyring
|
||||
.replace("{series_num}", &series_num))
|
||||
}
|
||||
} else {
|
||||
// For other distributions like Ubuntu, use the keyring directly
|
||||
Ok(dist_data.archive_keyring.clone())
|
||||
@@ -258,4 +270,16 @@ mod tests {
|
||||
let unknown_number = get_debian_series_number("unknown").await.unwrap();
|
||||
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