Fix sourc distribution filename escaping (#7421)

This commit is contained in:
konsti
2024-09-16 12:25:46 +02:00
committed by GitHub
parent 6a9ec9665c
commit cad934316f
@@ -130,7 +130,13 @@ impl SourceDistFilename {
impl Display for SourceDistFilename {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}-{}.{}", self.name, self.version, self.extension)
write!(
f,
"{}-{}.{}",
self.name.as_dist_info_name(),
self.version,
self.extension
)
}
}
@@ -173,14 +179,17 @@ mod tests {
use crate::{SourceDistExtension, SourceDistFilename};
/// Only test already normalized names since the parsing is lossy
///
/// <https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name>
/// <https://packaging.python.org/en/latest/specifications/binary-distribution-format/#escaping-and-unicode>
#[test]
fn roundtrip() {
for normalized in [
"foo-lib-1.2.3.zip",
"foo-lib-1.2.3a3.zip",
"foo-lib-1.2.3.tar.gz",
"foo-lib-1.2.3.tar.bz2",
"foo-lib-1.2.3.tar.zst",
"foo_lib-1.2.3.zip",
"foo_lib-1.2.3a3.zip",
"foo_lib-1.2.3.tar.gz",
"foo_lib-1.2.3.tar.bz2",
"foo_lib-1.2.3.tar.zst",
] {
let ext = SourceDistExtension::from_path(normalized).unwrap();
assert_eq!(