mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-24 13:43:45 +00:00

## Summary This PR adds a `VerbatimUrl` struct to preserve verbatim URLs throughout the resolution and installation pipeline. In short, alongside the parsed `Url`, we also keep the URL as written by the user. This enables us to display the URL exactly as written by the user, rather than the serialized path that we use internally. This will be especially useful once we start expanding environment variables since, at that point, we'll be able to write the version of the URL that includes the _unexpected_ environment variable to the output file.
30 lines
1.1 KiB
Rust
30 lines
1.1 KiB
Rust
use std::str::FromStr;
|
|
|
|
use anyhow::Result;
|
|
|
|
use distribution_filename::WheelFilename;
|
|
use distribution_types::{BuiltDist, DirectUrlBuiltDist};
|
|
use pep508_rs::VerbatimUrl;
|
|
use puffin_cache::Cache;
|
|
use puffin_client::RegistryClientBuilder;
|
|
|
|
#[tokio::test]
|
|
async fn remote_metadata_with_and_without_cache() -> Result<()> {
|
|
let cache = Cache::temp()?;
|
|
let client = RegistryClientBuilder::new(cache).build();
|
|
|
|
// The first run is without cache (the tempdir is empty), the second has the cache from the
|
|
// first run.
|
|
for _ in 0..2 {
|
|
let url = "https://files.pythonhosted.org/packages/00/e5/f12a80907d0884e6dff9c16d0c0114d81b8cd07dc3ae54c5e962cc83037e/tqdm-4.66.1-py3-none-any.whl";
|
|
let filename = WheelFilename::from_str(url.rsplit_once('/').unwrap().1)?;
|
|
let dist = BuiltDist::DirectUrl(DirectUrlBuiltDist {
|
|
filename,
|
|
url: VerbatimUrl::from_str(url).unwrap(),
|
|
});
|
|
let metadata = client.wheel_metadata(&dist).await.unwrap();
|
|
assert_eq!(metadata.version.to_string(), "4.66.1");
|
|
}
|
|
|
|
Ok(())
|
|
}
|