This commit is contained in:
Mateusz Gruszczyński committed 2026-10-10 11:35:04 +02:00
1 parent f3dd34dae4
commit f213d853e2
28 files changed
+5368 -4692

No files matched your search

+62
View File
@@ -146,3 +146,65 @@ mod renewal_regressions {
stop(app).await;
}
}
mod runtime_metadata_tests {
use super::*;
fn write_package(site: &Path, package: &str, version: &str, metadata: &str) {
let folder = site.join(format!("{package}-{version}.dist-info"));
std::fs::create_dir_all(&folder).unwrap();
std::fs::write(folder.join("METADATA"), metadata).unwrap();
}
#[test]
fn managed_python_pip_and_certbot_versions_use_metadata_only() {
let temp = tempfile::tempdir().unwrap();
let root = temp.path();
let python = venv_python(root);
let certbot = venv_certbot(root);
std::fs::create_dir_all(venv_bin(root)).unwrap();
std::fs::write(&python, "").unwrap();
std::fs::write(&certbot, "").unwrap();
std::fs::write(root.join("pyvenv.cfg"), "home = /usr/bin\nversion = 3.13.5\n").unwrap();
let site = if cfg!(windows) {
root.join("Lib/site-packages")
} else {
root.join("lib/python3.13/site-packages")
};
write_package(&site, "pip", "25.2", "Metadata-Version: 2.3\nName: pip\nVersion: 25.2\n");
write_package(&site, "certbot", "5.8.0", "Name: certbot\nVersion: 5.8.0\n");
let versions = runtime_versions(&python, true, Some(&certbot));
assert_eq!(versions.python.as_deref(), Some("3.13.5"));
assert_eq!(versions.pip.as_deref(), Some("25.2"));
assert_eq!(versions.certbot.as_deref(), Some("5.8.0"));
}
#[test]
fn absent_or_unverified_versions_are_not_invented() {
let temp = tempfile::tempdir().unwrap();
let root = temp.path();
let executable = root.join("bin/python3");
std::fs::create_dir_all(root.join("bin")).unwrap();
std::fs::write(&executable, "").unwrap();
let site = root.join("lib/python3/dist-packages");
write_package(&site, "pip", "99.0", "Name: other-package\nVersion: 99.0\n");
let versions = runtime_versions(&executable, true, None);
assert!(versions.python.is_none());
assert!(versions.pip.is_none());
assert!(versions.certbot.is_none());
}
#[test]
fn conflicting_site_distributions_do_not_return_stale_versions() {
let temp = tempfile::tempdir().unwrap();
let root = temp.path();
let executable = root.join("bin/python3");
std::fs::create_dir_all(root.join("bin")).unwrap();
std::fs::write(&executable, "").unwrap();
write_package(&root.join("lib/python3/dist-packages"), "pip", "23.0", "Name: pip\nVersion: 23.0\n");
write_package(&root.join("lib/python3.13/site-packages"), "pip", "25.0", "Name: pip\nVersion: 25.0\n");
assert!(runtime_versions(&executable, true, None).pip.is_none());
}
}