Move test support files out of `scripts/` into `test/`

(#17032)

It's been bothering me that we have a bunch of stub packages and such in
a `scripts` directory.
This commit is contained in:
Zanie Blue 2025-12-09 10:06:05 -06:00 committed by GitHub
parent 9774f8f1d4
commit a70ee58ae1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
230 changed files with 440 additions and 464 deletions

View File

@ -2064,22 +2064,22 @@ jobs:
# Test the main path (`build_wheel`) through pip # Test the main path (`build_wheel`) through pip
./uv venv -v --seed ./uv venv -v --seed
./uv run --no-project python -m pip install -v scripts/packages/built-by-uv --find-links crates/uv-build/dist --no-index --no-deps ./uv run --no-project python -m pip install -v test/packages/built-by-uv --find-links crates/uv-build/dist --no-index --no-deps
./uv run --no-project python -c "from built_by_uv import greet; print(greet())" ./uv run --no-project python -c "from built_by_uv import greet; print(greet())"
# Test both `build_wheel` and `build_sdist` through uv # Test both `build_wheel` and `build_sdist` through uv
./uv venv -c -v ./uv venv -c -v
./uv build -v --force-pep517 scripts/packages/built-by-uv --find-links crates/uv-build/dist --offline ./uv build -v --force-pep517 test/packages/built-by-uv --find-links crates/uv-build/dist --offline
./uv pip install -v scripts/packages/built-by-uv/dist/*.tar.gz --find-links crates/uv-build/dist --offline --no-deps ./uv pip install -v test/packages/built-by-uv/dist/*.tar.gz --find-links crates/uv-build/dist --offline --no-deps
./uv run --no-project python -c "from built_by_uv import greet; print(greet())" ./uv run --no-project python -c "from built_by_uv import greet; print(greet())"
# Test both `build_wheel` and `build_sdist` through the official `build` # Test both `build_wheel` and `build_sdist` through the official `build`
rm -rf scripts/packages/built-by-uv/dist/ rm -rf test/packages/built-by-uv/dist/
./uv venv -c -v ./uv venv -c -v
./uv pip install build ./uv pip install build
# Add the uv binary to PATH for `build` to find # Add the uv binary to PATH for `build` to find
PATH="$(pwd):$PATH" UV_OFFLINE=1 UV_FIND_LINKS=crates/uv-build/dist ./uv run --no-project python -m build -v --installer uv scripts/packages/built-by-uv PATH="$(pwd):$PATH" UV_OFFLINE=1 UV_FIND_LINKS=crates/uv-build/dist ./uv run --no-project python -m build -v --installer uv test/packages/built-by-uv
./uv pip install -v scripts/packages/built-by-uv/dist/*.tar.gz --find-links crates/uv-build/dist --offline --no-deps ./uv pip install -v test/packages/built-by-uv/dist/*.tar.gz --find-links crates/uv-build/dist --offline --no-deps
./uv run --no-project python -c "from built_by_uv import greet; print(greet())" ./uv run --no-project python -c "from built_by_uv import greet; print(greet())"
cache-test-ubuntu: cache-test-ubuntu:
@ -2943,8 +2943,8 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get install -y libsasl2-dev libldap2-dev libkrb5-dev sudo apt-get install -y libsasl2-dev libldap2-dev libkrb5-dev
cargo run --bin uv -- venv --cache-dir .cache cargo run --bin uv -- venv --cache-dir .cache
cargo run --bin uv -- pip compile scripts/requirements/jupyter.in --universal --exclude-newer 2024-08-08 --cache-dir .cache cargo run --bin uv -- pip compile test/requirements/jupyter.in --universal --exclude-newer 2024-08-08 --cache-dir .cache
cargo run --bin uv -- pip compile scripts/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache cargo run --bin uv -- pip compile test/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache
- name: "Build benchmarks" - name: "Build benchmarks"
run: cargo codspeed build --profile profiling -p uv-bench run: cargo codspeed build --profile profiling -p uv-bench
@ -2983,8 +2983,8 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get install -y libsasl2-dev libldap2-dev libkrb5-dev sudo apt-get install -y libsasl2-dev libldap2-dev libkrb5-dev
cargo run --bin uv -- venv --cache-dir .cache cargo run --bin uv -- venv --cache-dir .cache
cargo run --bin uv -- pip compile scripts/requirements/jupyter.in --universal --exclude-newer 2024-08-08 --cache-dir .cache cargo run --bin uv -- pip compile test/requirements/jupyter.in --universal --exclude-newer 2024-08-08 --cache-dir .cache
cargo run --bin uv -- pip compile scripts/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache cargo run --bin uv -- pip compile test/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache
- name: "Build benchmarks" - name: "Build benchmarks"
run: cargo codspeed build --profile profiling -p uv-bench run: cargo codspeed build --profile profiling -p uv-bench

View File

@ -4,5 +4,5 @@ PREVIEW-CHANGELOG.md
docs/reference/cli.md docs/reference/cli.md
docs/reference/settings.md docs/reference/settings.md
docs/reference/environment.md docs/reference/environment.md
ecosystem/home-assistant-core/LICENSE.md test/ecosystem/home-assistant-core/LICENSE.md
docs/guides/integration/gitlab.md docs/guides/integration/gitlab.md

View File

@ -127,7 +127,7 @@ Please refer to Ruff's
it applies to uv, too. it applies to uv, too.
We provide diverse sets of requirements for testing and benchmarking the resolver in We provide diverse sets of requirements for testing and benchmarking the resolver in
`scripts/requirements` and for the installer in `scripts/requirements/compiled`. `test/requirements` and for the installer in `test/requirements/compiled`.
You can use `scripts/benchmark` to benchmark predefined workloads between uv versions and with other You can use `scripts/benchmark` to benchmark predefined workloads between uv versions and with other
tools, e.g., from the `scripts/benchmark` directory: tools, e.g., from the `scripts/benchmark` directory:
@ -138,7 +138,7 @@ uv run resolver \
--poetry \ --poetry \
--benchmark \ --benchmark \
resolve-cold \ resolve-cold \
../scripts/requirements/trio.in ../test/requirements/trio.in
``` ```
### Analyzing concurrency ### Analyzing concurrency
@ -148,7 +148,7 @@ visualize parallel requests and find any spots where uv is CPU-bound. Example us
`uv-dev` respectively: `uv-dev` respectively:
```shell ```shell
RUST_LOG=uv=info TRACING_DURATIONS_FILE=target/traces/jupyter.ndjson cargo run --features tracing-durations-export --profile profiling -- pip compile scripts/requirements/jupyter.in RUST_LOG=uv=info TRACING_DURATIONS_FILE=target/traces/jupyter.ndjson cargo run --features tracing-durations-export --profile profiling -- pip compile test/requirements/jupyter.in
``` ```
```shell ```shell

View File

@ -1,8 +1,8 @@
[files] [files]
extend-exclude = [ extend-exclude = [
"**/snapshots/", "**/snapshots/",
"ecosystem/**", "test/ecosystem/**",
"scripts/**/*.in", "test/requirements/**/*.in",
"crates/uv-build-frontend/src/pipreqs/mapping", "crates/uv-build-frontend/src/pipreqs/mapping",
] ]
ignore-hidden = false ignore-hidden = false

View File

@ -599,7 +599,7 @@ mod tests {
/// platform-independent deterministic builds. /// platform-independent deterministic builds.
#[test] #[test]
fn built_by_uv_building() { fn built_by_uv_building() {
let built_by_uv = Path::new("../../scripts/packages/built-by-uv"); let built_by_uv = Path::new("../../test/packages/built-by-uv");
let src = TempDir::new().unwrap(); let src = TempDir::new().unwrap();
for dir in [ for dir in [
"src", "src",

View File

@ -840,7 +840,7 @@ mod test {
#[test] #[test]
fn test_prepare_metadata() { fn test_prepare_metadata() {
let metadata_dir = TempDir::new().unwrap(); let metadata_dir = TempDir::new().unwrap();
let built_by_uv = Path::new("../../scripts/packages/built-by-uv"); let built_by_uv = Path::new("../../test/packages/built-by-uv");
metadata(built_by_uv, metadata_dir.path(), "1.0.0+test").unwrap(); metadata(built_by_uv, metadata_dir.path(), "1.0.0+test").unwrap();
let mut files: Vec<_> = WalkDir::new(metadata_dir.path()) let mut files: Vec<_> = WalkDir::new(metadata_dir.path())

View File

@ -1441,7 +1441,7 @@ mod tests {
async fn upload_request_source_dist() { async fn upload_request_source_dist() {
let group = { let group = {
let raw_filename = "tqdm-999.0.0.tar.gz"; let raw_filename = "tqdm-999.0.0.tar.gz";
let file = PathBuf::from("../../scripts/links/").join(raw_filename); let file = PathBuf::from("../../test/links/").join(raw_filename);
let filename = DistFilename::try_from_normalized_filename(raw_filename).unwrap(); let filename = DistFilename::try_from_normalized_filename(raw_filename).unwrap();
UploadDistribution { UploadDistribution {
@ -1563,7 +1563,7 @@ mod tests {
async fn upload_request_wheel() { async fn upload_request_wheel() {
let group = { let group = {
let raw_filename = "tqdm-4.66.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl"; let raw_filename = "tqdm-4.66.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl";
let file = PathBuf::from("../../scripts/links/").join(raw_filename); let file = PathBuf::from("../../test/links/").join(raw_filename);
let filename = DistFilename::try_from_normalized_filename(raw_filename).unwrap(); let filename = DistFilename::try_from_normalized_filename(raw_filename).unwrap();
UploadDistribution { UploadDistribution {

View File

@ -17,11 +17,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -34,12 +34,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black_editable", "./test/packages/black_editable",
), ),
}, },
}, },
@ -67,11 +67,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -84,12 +84,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black_editable", "./test/packages/black_editable",
), ),
}, },
}, },
@ -121,11 +121,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/scripts/packages/black_editable", path: "/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "/scripts/packages/black_editable", install_path: "/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -138,12 +138,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/scripts/packages/black_editable", path: "/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"file:///scripts/packages/black_editable", "file:///test/packages/black_editable",
), ),
}, },
}, },
@ -171,11 +171,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -188,12 +188,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },
@ -221,11 +221,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -238,12 +238,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },
@ -271,11 +271,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -288,12 +288,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },

View File

@ -17,11 +17,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -34,12 +34,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black_editable", "./test/packages/black_editable",
), ),
}, },
}, },
@ -67,11 +67,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -84,12 +84,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black_editable", "./test/packages/black_editable",
), ),
}, },
}, },
@ -121,11 +121,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black_editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black_editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -138,12 +138,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black_editable", path: "/<REQUIREMENTS_DIR>/test/packages/black_editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"file:///scripts/packages/black_editable", "file:///test/packages/black_editable",
), ),
}, },
}, },
@ -171,11 +171,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -188,12 +188,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },
@ -221,11 +221,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -238,12 +238,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },
@ -271,11 +271,11 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
install_path: "<REQUIREMENTS_DIR>/scripts/packages/black editable", install_path: "<REQUIREMENTS_DIR>/test/packages/black editable",
editable: None, editable: None,
virtual: None, virtual: None,
}, },
@ -288,12 +288,12 @@ RequirementsTxt {
password: None, password: None,
host: None, host: None,
port: None, port: None,
path: "/<REQUIREMENTS_DIR>/scripts/packages/black%20editable", path: "/<REQUIREMENTS_DIR>/test/packages/black%20editable",
query: None, query: None,
fragment: None, fragment: None,
}, },
given: Some( given: Some(
"./scripts/packages/black editable", "./test/packages/black editable",
), ),
}, },
}, },

View File

@ -1,6 +1,6 @@
./scripts/packages/black_editable ./test/packages/black_editable
./scripts/packages/black_editable[dev] ./test/packages/black_editable[dev]
file:///scripts/packages/black_editable file:///test/packages/black_editable
./scripts/packages/black editable ./test/packages/black editable
./scripts/packages/black editable ; python_version >= "3.9" ./test/packages/black editable ; python_version >= "3.9"
./scripts/packages/black editable # comment ./test/packages/black editable # comment

View File

@ -1827,7 +1827,7 @@ mod tests {
.unwrap() .unwrap()
.parent() .parent()
.unwrap() .unwrap()
.join("scripts") .join("test")
.join("workspaces"); .join("workspaces");
let project = ProjectWorkspace::discover( let project = ProjectWorkspace::discover(
&root_dir.join(folder), &root_dir.join(folder),

View File

@ -1533,7 +1533,7 @@ fn build_non_package() -> Result<()> {
fn build_fast_path() -> Result<()> { fn build_fast_path() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = current_dir()?.join("../../scripts/packages/built-by-uv"); let built_by_uv = current_dir()?.join("../../test/packages/built-by-uv");
uv_snapshot!(context.build() uv_snapshot!(context.build()
.arg(&built_by_uv) .arg(&built_by_uv)
@ -1633,7 +1633,7 @@ fn build_fast_path() -> Result<()> {
fn build_list_files() -> Result<()> { fn build_list_files() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = current_dir()?.join("../../scripts/packages/built-by-uv"); let built_by_uv = current_dir()?.join("../../test/packages/built-by-uv");
// By default, we build the wheel from the source dist, which we need to do even for the list // By default, we build the wheel from the source dist, which we need to do even for the list
// task. // task.
@ -1755,7 +1755,7 @@ fn build_list_files() -> Result<()> {
fn build_list_files_errors() -> Result<()> { fn build_list_files_errors() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = current_dir()?.join("../../scripts/packages/built-by-uv"); let built_by_uv = current_dir()?.join("../../test/packages/built-by-uv");
let mut filters = context.filters(); let mut filters = context.filters();
// In CI, we run with link mode settings. // In CI, we run with link mode settings.
@ -1779,7 +1779,7 @@ fn build_list_files_errors() -> Result<()> {
"###); "###);
// Not a uv build backend package, we can't list it. // Not a uv build backend package, we can't list it.
let anyio_local = current_dir()?.join("../../scripts/packages/anyio_local"); let anyio_local = current_dir()?.join("../../test/packages/anyio_local");
let mut filters = context.filters(); let mut filters = context.filters();
// Windows normalization // Windows normalization
filters.push(("/crates/uv/../../", "/")); filters.push(("/crates/uv/../../", "/"));
@ -1793,7 +1793,7 @@ fn build_list_files_errors() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× Failed to build `[WORKSPACE]/scripts/packages/anyio_local` × Failed to build `[WORKSPACE]/test/packages/anyio_local`
Can only use `--list` with the uv backend Can only use `--list` with the uv backend
"###); "###);
Ok(()) Ok(())
@ -1802,7 +1802,7 @@ fn build_list_files_errors() -> Result<()> {
#[test] #[test]
fn build_version_mismatch() -> Result<()> { fn build_version_mismatch() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let anyio_local = current_dir()?.join("../../scripts/packages/anyio_local"); let anyio_local = current_dir()?.join("../../test/packages/anyio_local");
context context
.build() .build()
.arg("--sdist") .arg("--sdist")

View File

@ -27,7 +27,7 @@ const BUILT_BY_UV_TEST_SCRIPT: &str = indoc! {r#"
#[cfg(feature = "pypi")] #[cfg(feature = "pypi")]
fn built_by_uv_direct_wheel() -> Result<()> { fn built_by_uv_direct_wheel() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = Path::new("../../scripts/packages/built-by-uv"); let built_by_uv = Path::new("../../test/packages/built-by-uv");
let temp_dir = TempDir::new()?; let temp_dir = TempDir::new()?;
@ -83,7 +83,7 @@ fn built_by_uv_direct_wheel() -> Result<()> {
#[cfg(feature = "pypi")] #[cfg(feature = "pypi")]
fn built_by_uv_direct() -> Result<()> { fn built_by_uv_direct() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = Path::new("../../scripts/packages/built-by-uv"); let built_by_uv = Path::new("../../test/packages/built-by-uv");
let sdist_dir = TempDir::new()?; let sdist_dir = TempDir::new()?;
@ -157,7 +157,7 @@ fn built_by_uv_direct() -> Result<()> {
#[cfg(feature = "pypi")] #[cfg(feature = "pypi")]
fn built_by_uv_editable() -> Result<()> { fn built_by_uv_editable() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = Path::new("../../scripts/packages/built-by-uv"); let built_by_uv = Path::new("../../test/packages/built-by-uv");
// Without the editable, pytest fails. // Without the editable, pytest fails.
context.pip_install().arg("pytest").assert().success(); context.pip_install().arg("pytest").assert().success();

View File

@ -1630,11 +1630,11 @@ impl TestContext {
/// test context. /// test context.
/// ///
/// The given name should correspond to the name of a sub-directory (not a /// The given name should correspond to the name of a sub-directory (not a
/// path to it) in the top-level `ecosystem` directory. /// path to it) in the `test/ecosystem` directory.
/// ///
/// This panics (fails the current test) for any failure. /// This panics (fails the current test) for any failure.
pub fn copy_ecosystem_project(&self, name: &str) { pub fn copy_ecosystem_project(&self, name: &str) {
let project_dir = PathBuf::from(format!("../../ecosystem/{name}")); let project_dir = PathBuf::from(format!("../../test/ecosystem/{name}"));
self.temp_dir.copy_from(project_dir, &["*"]).unwrap(); self.temp_dir.copy_from(project_dir, &["*"]).unwrap();
// If there is a (gitignore) lockfile, remove it. // If there is a (gitignore) lockfile, remove it.
if let Err(err) = fs_err::remove_file(self.temp_dir.join("uv.lock")) { if let Err(err) = fs_err::remove_file(self.temp_dir.join("uv.lock")) {

View File

@ -80,7 +80,7 @@ fn airflow() -> Result<()> {
} }
/// Does a lock on the given ecosystem package for the given name. That /// Does a lock on the given ecosystem package for the given name. That
/// is, there should be a directory at `./ecosystem/{name}` from the /// is, there should be a directory at `./test/ecosystem/{name}` from the
/// root of the `uv` repository. /// root of the `uv` repository.
fn lock_ecosystem_package(python_version: &str, name: &str) -> Result<()> { fn lock_ecosystem_package(python_version: &str, name: &str) -> Result<()> {
let context = TestContext::new(python_version); let context = TestContext::new(python_version);

View File

@ -7521,7 +7521,7 @@ async fn add_requirements_from_remote_script() -> Result<()> {
fn remove_repeated() -> Result<()> { fn remove_repeated() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let anyio_local = context.workspace_root.join("scripts/packages/anyio_local"); let anyio_local = context.workspace_root.join("test/packages/anyio_local");
let pyproject_toml = context.temp_dir.child("pyproject.toml"); let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(&formatdoc! {r#" pyproject_toml.write_str(&formatdoc! {r#"
@ -7553,7 +7553,7 @@ fn remove_repeated() -> Result<()> {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) + anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"); ");
let pyproject_toml = context.read("pyproject.toml"); let pyproject_toml = context.read("pyproject.toml");
@ -7576,7 +7576,7 @@ fn remove_repeated() -> Result<()> {
dev-dependencies = ["anyio"] dev-dependencies = ["anyio"]
[tool.uv.sources] [tool.uv.sources]
anyio = { path = "[WORKSPACE]/scripts/packages/anyio_local" } anyio = { path = "[WORKSPACE]/test/packages/anyio_local" }
"### "###
); );
}); });
@ -7612,7 +7612,7 @@ fn remove_repeated() -> Result<()> {
dev-dependencies = ["anyio"] dev-dependencies = ["anyio"]
[tool.uv.sources] [tool.uv.sources]
anyio = { path = "[WORKSPACE]/scripts/packages/anyio_local" } anyio = { path = "[WORKSPACE]/test/packages/anyio_local" }
"### "###
); );
}); });
@ -7626,7 +7626,7 @@ fn remove_repeated() -> Result<()> {
warning: The `tool.uv.dev-dependencies` field (used in `pyproject.toml`) is deprecated and will be removed in a future release; use `dependency-groups.dev` instead warning: The `tool.uv.dev-dependencies` field (used in `pyproject.toml`) is deprecated and will be removed in a future release; use `dependency-groups.dev` instead
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) - anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"); ");
let pyproject_toml = context.read("pyproject.toml"); let pyproject_toml = context.read("pyproject.toml");
@ -11003,7 +11003,7 @@ fn add_index_with_existing_relative_path_index() -> Result<()> {
let wheel_src = context let wheel_src = context
.workspace_root .workspace_root
.join("scripts/links/ok-1.0.0-py3-none-any.whl"); .join("test/links/ok-1.0.0-py3-none-any.whl");
let wheel_dst = packages.child("ok-1.0.0-py3-none-any.whl"); let wheel_dst = packages.child("ok-1.0.0-py3-none-any.whl");
fs_err::copy(&wheel_src, &wheel_dst)?; fs_err::copy(&wheel_src, &wheel_dst)?;
@ -13021,7 +13021,7 @@ fn add_index_url_in_keyring() -> Result<()> {
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -13079,7 +13079,7 @@ fn add_full_url_in_keyring() -> Result<()> {
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -13756,7 +13756,7 @@ async fn add_redirect_with_keyring_cross_origin() -> Result<()> {
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )

View File

@ -11044,7 +11044,7 @@ fn lock_find_links_local_wheel() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11158,7 +11158,7 @@ fn lock_find_links_ignore_explicit_index() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11279,7 +11279,7 @@ fn lock_find_links_relative_url() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11395,7 +11395,7 @@ fn lock_find_links_local_sdist() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11689,7 +11689,7 @@ fn lock_find_links_explicit_index() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11795,7 +11795,7 @@ fn lock_find_links_higher_priority_index() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -11886,7 +11886,7 @@ fn lock_find_links_lower_priority_index() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -12001,7 +12001,7 @@ fn lock_local_index() -> Result<()> {
fs_err::copy( fs_err::copy(
context context
.workspace_root .workspace_root
.join("scripts/links/basic_package-0.1.0.tar.gz"), .join("test/links/basic_package-0.1.0.tar.gz"),
&sdist, &sdist,
)?; )?;
@ -12009,7 +12009,7 @@ fn lock_local_index() -> Result<()> {
fs_err::copy( fs_err::copy(
context context
.workspace_root .workspace_root
.join("scripts/links/basic_package-0.1.0-py3-none-any.whl"), .join("test/links/basic_package-0.1.0-py3-none-any.whl"),
&wheel, &wheel,
)?; )?;
@ -21051,7 +21051,7 @@ fn lock_keyring_credentials() -> Result<()> {
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -21146,7 +21146,7 @@ fn lock_keyring_explicit_always() -> Result<()> {
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -21231,7 +21231,7 @@ fn lock_keyring_credentials_always_authenticate_fetches_username() -> Result<()>
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -21335,7 +21335,7 @@ fn lock_keyring_credentials_always_authenticate_unsupported_mode() -> Result<()>
.arg( .arg(
keyring_context keyring_context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )

View File

@ -3038,7 +3038,7 @@ fn allowed_transitive_url_path_dependency() -> Result<()> {
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("hatchling_editable @ ${HATCH_PATH}")?; requirements_in.write_str("hatchling_editable @ ${HATCH_PATH}")?;
let hatchling_path = current_dir()?.join("../../scripts/packages/hatchling_editable"); let hatchling_path = current_dir()?.join("../../test/packages/hatchling_editable");
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.env(EnvVars::HATCH_PATH, hatchling_path.as_os_str()), @r###" .env(EnvVars::HATCH_PATH, hatchling_path.as_os_str()), @r###"
@ -4725,8 +4725,8 @@ fn compile_editable() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
-e ../../scripts/packages/poetry_editable -e ../../test/packages/poetry_editable
-e file://../../scripts/packages/black_editable[dev] -e file://../../test/packages/black_editable[dev]
boltons # normal dependency for comparison boltons # normal dependency for comparison
" "
})?; })?;
@ -4739,9 +4739,9 @@ fn compile_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
-e ../../scripts/packages/poetry_editable -e ../../test/packages/poetry_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
-e file://../../scripts/packages/black_editable -e file://../../test/packages/black_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
aiohttp==3.9.3 aiohttp==3.9.3
# via black # via black
@ -4785,9 +4785,9 @@ fn deduplicate_editable() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
-e file://../../scripts/packages/black_editable -e file://../../test/packages/black_editable
-e ${PROJECT_ROOT}/../../scripts/packages/black_editable -e ${PROJECT_ROOT}/../../test/packages/black_editable
-e file://../../scripts/packages/black_editable[dev] -e file://../../test/packages/black_editable[dev]
" "
})?; })?;
@ -4799,7 +4799,7 @@ fn deduplicate_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
-e file://../../scripts/packages/black_editable -e file://../../test/packages/black_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
aiohttp==3.9.3 aiohttp==3.9.3
# via black # via black
@ -4834,7 +4834,7 @@ fn strip_fragment_unnamed() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
../../scripts/packages/black_editable#egg=black ../../test/packages/black_editable#egg=black
" "
})?; })?;
@ -4846,7 +4846,7 @@ fn strip_fragment_unnamed() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
../../scripts/packages/black_editable#egg=black ../../test/packages/black_editable#egg=black
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
----- stderr ----- ----- stderr -----
@ -4861,7 +4861,7 @@ fn strip_fragment_named() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
black @ ../../scripts/packages/black_editable#egg=black black @ ../../test/packages/black_editable#egg=black
" "
})?; })?;
@ -4873,7 +4873,7 @@ fn strip_fragment_named() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
../../scripts/packages/black_editable#egg=black ../../test/packages/black_editable#egg=black
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
----- stderr ----- ----- stderr -----
@ -4887,7 +4887,7 @@ fn strip_fragment_named() -> Result<()> {
fn recursive_extras_direct_url() -> Result<()> { fn recursive_extras_direct_url() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("black[dev] @ ../../scripts/packages/black_editable")?; requirements_in.write_str("black[dev] @ ../../test/packages/black_editable")?;
uv_snapshot!(context.filters(), context uv_snapshot!(context.filters(), context
.pip_compile() .pip_compile()
@ -4904,7 +4904,7 @@ fn recursive_extras_direct_url() -> Result<()> {
# via aiohttp # via aiohttp
attrs==23.2.0 attrs==23.2.0
# via aiohttp # via aiohttp
../../scripts/packages/black_editable ../../test/packages/black_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
frozenlist==1.4.1 frozenlist==1.4.1
# via # via
@ -4934,7 +4934,7 @@ fn recursive_extras_direct_url() -> Result<()> {
fn compile_editable_url_requirement() -> Result<()> { fn compile_editable_url_requirement() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("-e ../../scripts/packages/hatchling_editable")?; requirements_in.write_str("-e ../../test/packages/hatchling_editable")?;
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg(requirements_in.path()) .arg(requirements_in.path())
@ -4944,7 +4944,7 @@ fn compile_editable_url_requirement() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
-e ../../scripts/packages/hatchling_editable -e ../../test/packages/hatchling_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
iniconfig @ git+https://github.com/pytest-dev/iniconfig@9cae43103df70bac6fde7b9f35ad11a9f1be0cb4 iniconfig @ git+https://github.com/pytest-dev/iniconfig@9cae43103df70bac6fde7b9f35ad11a9f1be0cb4
# via hatchling-editable # via hatchling-editable
@ -5249,7 +5249,7 @@ fn generate_hashes_local_directory() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
../../scripts/packages/poetry_editable ../../test/packages/poetry_editable
" "
})?; })?;
@ -5270,7 +5270,7 @@ fn generate_hashes_local_directory() -> Result<()> {
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via anyio # via anyio
../../scripts/packages/poetry_editable ../../test/packages/poetry_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
sniffio==1.3.1 \ sniffio==1.3.1 \
--hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \
@ -5292,7 +5292,7 @@ fn generate_hashes_editable() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
-e ../../scripts/packages/poetry_editable -e ../../test/packages/poetry_editable
" "
})?; })?;
@ -5305,7 +5305,7 @@ fn generate_hashes_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --generate-hashes # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --generate-hashes
-e ../../scripts/packages/poetry_editable -e ../../test/packages/poetry_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
anyio==4.3.0 \ anyio==4.3.0 \
--hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \
@ -5338,7 +5338,7 @@ fn generate_hashes_find_links_directory() -> Result<()> {
.arg("requirements.in") .arg("requirements.in")
.arg("--generate-hashes") .arg("--generate-hashes")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -5400,7 +5400,7 @@ fn find_links_directory() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -5550,7 +5550,7 @@ fn avoid_irrelevant_extras() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -5603,7 +5603,7 @@ coverage = ["example[test]", "extras>=0.0.1,<=0.0.2"]
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -7013,7 +7013,7 @@ fn invalid_metadata_requires_python() -> Result<()> {
.arg("requirements.in") .arg("requirements.in")
.arg("--no-index") .arg("--no-index")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: false success: false
exit_code: 1 exit_code: 1
----- stdout ----- ----- stdout -----
@ -7044,7 +7044,7 @@ fn invalid_metadata_multiple_dist_info() -> Result<()> {
.arg("requirements.in") .arg("requirements.in")
.arg("--no-index") .arg("--no-index")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: false success: false
exit_code: 1 exit_code: 1
----- stdout ----- ----- stdout -----
@ -7074,7 +7074,7 @@ fn invalid_metadata_backtrack() -> Result<()> {
.arg("requirements.in") .arg("requirements.in")
.arg("--no-index") .arg("--no-index")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts").join("links")), @r###" .arg(context.workspace_root.join("test").join("links")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -7193,7 +7193,7 @@ fn compile_unnamed_preference() -> Result<()> {
requirements_in.write_str("black")?; requirements_in.write_str("black")?;
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str("./scripts/packages/black_editable")?; requirements_txt.write_str("./test/packages/black_editable")?;
uv_snapshot!(context uv_snapshot!(context
.pip_compile() .pip_compile()
@ -7536,7 +7536,7 @@ dependencies = [
fn editable_invalid_extra() -> Result<()> { fn editable_invalid_extra() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("-e ../../scripts/packages/black_editable[empty]")?; requirements_in.write_str("-e ../../test/packages/black_editable[empty]")?;
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg(requirements_in.path()) .arg(requirements_in.path())
@ -7546,12 +7546,12 @@ fn editable_invalid_extra() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
-e ../../scripts/packages/black_editable -e ../../test/packages/black_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
----- stderr ----- ----- stderr -----
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
warning: The package `black @ file://[WORKSPACE]/scripts/packages/black_editable` does not have an extra named `empty` warning: The package `black @ file://[WORKSPACE]/test/packages/black_editable` does not have an extra named `empty`
"###); "###);
Ok(()) Ok(())
@ -10140,7 +10140,7 @@ fn editable_override() -> Result<()> {
// Add an editable override. // Add an editable override.
let overrides_txt = context.temp_dir.child("overrides.txt"); let overrides_txt = context.temp_dir.child("overrides.txt");
overrides_txt.write_str("-e ../../scripts/packages/black_editable")?; overrides_txt.write_str("-e ../../test/packages/black_editable")?;
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg(requirements_in.path()) .arg(requirements_in.path())
@ -10152,7 +10152,7 @@ fn editable_override() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --override [TEMP_DIR]/overrides.txt # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --override [TEMP_DIR]/overrides.txt
-e ../../scripts/packages/black_editable -e ../../test/packages/black_editable
# via # via
# --override [TEMP_DIR]/overrides.txt # --override [TEMP_DIR]/overrides.txt
# -r [TEMP_DIR]/requirements.in # -r [TEMP_DIR]/requirements.in
@ -10170,7 +10170,7 @@ fn editable_override() -> Result<()> {
fn override_editable() -> Result<()> { fn override_editable() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("-e ../../scripts/packages/black_editable")?; requirements_in.write_str("-e ../../test/packages/black_editable")?;
let overrides_txt = context.temp_dir.child("overrides.txt"); let overrides_txt = context.temp_dir.child("overrides.txt");
overrides_txt.write_str("black==23.10.1")?; overrides_txt.write_str("black==23.10.1")?;
@ -10719,7 +10719,7 @@ qux = ["project[bop] ; python_version == '3.12'"]
fn editable_direct_dependency() -> Result<()> { fn editable_direct_dependency() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("-e ../../scripts/packages/setuptools_editable")?; requirements_in.write_str("-e ../../test/packages/setuptools_editable")?;
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg(requirements_in.path()) .arg(requirements_in.path())
@ -10731,7 +10731,7 @@ fn editable_direct_dependency() -> Result<()> {
----- stdout ----- ----- stdout -----
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --resolution lowest-direct # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in --resolution lowest-direct
-e ../../scripts/packages/setuptools_editable -e ../../test/packages/setuptools_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
iniconfig==0.1 iniconfig==0.1
# via setuptools-editable # via setuptools-editable
@ -11189,7 +11189,7 @@ fn compile_root_uri_editable() -> Result<()> {
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("-e ${ROOT_PATH}")?; requirements_in.write_str("-e ${ROOT_PATH}")?;
let root_path = current_dir()?.join("../../scripts/packages/root_editable"); let root_path = current_dir()?.join("../../test/packages/root_editable");
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.env(EnvVars::ROOT_PATH, root_path.as_os_str()), @r###" .env(EnvVars::ROOT_PATH, root_path.as_os_str()), @r###"
@ -11200,7 +11200,7 @@ fn compile_root_uri_editable() -> Result<()> {
# uv pip compile --cache-dir [CACHE_DIR] requirements.in # uv pip compile --cache-dir [CACHE_DIR] requirements.in
-e ${ROOT_PATH} -e ${ROOT_PATH}
# via -r requirements.in # via -r requirements.in
black @ file://[WORKSPACE]/scripts/packages/root_editable/../black_editable black @ file://[WORKSPACE]/test/packages/root_editable/../black_editable
# via root-editable # via root-editable
----- stderr ----- ----- stderr -----
@ -11219,8 +11219,8 @@ fn compile_root_uri_non_editable() -> Result<()> {
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("${ROOT_PATH}\n${BLACK_PATH}")?; requirements_in.write_str("${ROOT_PATH}\n${BLACK_PATH}")?;
let root_path = current_dir()?.join("../../scripts/packages/root_editable"); let root_path = current_dir()?.join("../../test/packages/root_editable");
let black_path = current_dir()?.join("../../scripts/packages/black_editable"); let black_path = current_dir()?.join("../../test/packages/black_editable");
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in") .arg("requirements.in")
.env(EnvVars::ROOT_PATH, root_path.as_os_str()) .env(EnvVars::ROOT_PATH, root_path.as_os_str())
@ -11598,10 +11598,10 @@ fn unnamed_path_requirement() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str(indoc! {r" requirements_in.write_str(indoc! {r"
../../scripts/packages/poetry_editable ../../test/packages/poetry_editable
../../scripts/packages/black_editable ../../test/packages/black_editable
../../scripts/packages/setup_py_editable ../../test/packages/setup_py_editable
../../scripts/packages/setup_cfg_editable ../../test/packages/setup_cfg_editable
" "
})?; })?;
@ -11617,7 +11617,7 @@ fn unnamed_path_requirement() -> Result<()> {
# via # via
# httpx # httpx
# poetry-editable # poetry-editable
../../scripts/packages/black_editable ../../test/packages/black_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
certifi==2024.2.2 certifi==2024.2.2
# via # via
@ -11637,13 +11637,13 @@ fn unnamed_path_requirement() -> Result<()> {
# anyio # anyio
# httpx # httpx
# requests # requests
../../scripts/packages/poetry_editable ../../test/packages/poetry_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
requests==2.31.0 requests==2.31.0
# via setup-cfg-editable # via setup-cfg-editable
../../scripts/packages/setup_cfg_editable ../../test/packages/setup_cfg_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
../../scripts/packages/setup_py_editable ../../test/packages/setup_py_editable
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
sniffio==1.3.1 sniffio==1.3.1
# via # via
@ -11742,7 +11742,7 @@ fn unnamed_https_requirement() -> Result<()> {
fn dynamic_dependencies() -> Result<()> { fn dynamic_dependencies() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("hatchling-dynamic @ ../../scripts/packages/hatchling_dynamic")?; requirements_in.write_str("hatchling-dynamic @ ../../test/packages/hatchling_dynamic")?;
uv_snapshot!(context.filters(), context.pip_compile() uv_snapshot!(context.filters(), context.pip_compile()
.arg(requirements_in.path()) .arg(requirements_in.path())
@ -11754,7 +11754,7 @@ fn dynamic_dependencies() -> Result<()> {
# uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in # uv pip compile --cache-dir [CACHE_DIR] [TEMP_DIR]/requirements.in
anyio==4.3.0 anyio==4.3.0
# via hatchling-dynamic # via hatchling-dynamic
../../scripts/packages/hatchling_dynamic ../../test/packages/hatchling_dynamic
# via -r [TEMP_DIR]/requirements.in # via -r [TEMP_DIR]/requirements.in
idna==3.6 idna==3.6
# via anyio # via anyio
@ -11920,7 +11920,7 @@ fn emit_marker_expression_pypy() -> Result<()> {
#[test] #[test]
fn local_version_of_remote_package() -> Result<()> { fn local_version_of_remote_package() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let root_path = context.workspace_root.join("scripts/packages"); let root_path = context.workspace_root.join("test/packages");
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("anyio")?; requirements_in.write_str("anyio")?;
@ -11957,7 +11957,7 @@ fn local_version_of_remote_package() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) + anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"### "###
); );
@ -11983,7 +11983,7 @@ fn local_version_of_remote_package() -> Result<()> {
// Write a lockfile with the local version // Write a lockfile with the local version
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
anyio @ {workspace_root}/scripts/packages/anyio_local anyio @ {workspace_root}/test/packages/anyio_local
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -13376,11 +13376,11 @@ fn tool_uv_sources() -> Result<()> {
let project_root = fs_err::canonicalize(current_dir()?.join("../.."))?; let project_root = fs_err::canonicalize(current_dir()?.join("../.."))?;
fs_err::create_dir_all(context.temp_dir.join("poetry_editable/poetry_editable"))?; fs_err::create_dir_all(context.temp_dir.join("poetry_editable/poetry_editable"))?;
fs_err::copy( fs_err::copy(
project_root.join("scripts/packages/poetry_editable/pyproject.toml"), project_root.join("test/packages/poetry_editable/pyproject.toml"),
context.temp_dir.join("poetry_editable/pyproject.toml"), context.temp_dir.join("poetry_editable/pyproject.toml"),
)?; )?;
fs_err::copy( fs_err::copy(
project_root.join("scripts/packages/poetry_editable/poetry_editable/__init__.py"), project_root.join("test/packages/poetry_editable/poetry_editable/__init__.py"),
context context
.temp_dir .temp_dir
.join("poetry_editable/poetry_editable/__init__.py"), .join("poetry_editable/poetry_editable/__init__.py"),

View File

@ -131,7 +131,7 @@ fn freeze_with_editable() -> Result<()> {
"anyio\n-e {}", "anyio\n-e {}",
context context
.workspace_root .workspace_root
.join("scripts/packages/poetry_editable") .join("test/packages/poetry_editable")
.display() .display()
))?; ))?;
@ -149,7 +149,7 @@ fn freeze_with_editable() -> Result<()> {
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
anyio==4.3.0 anyio==4.3.0
-e file://[WORKSPACE]/scripts/packages/poetry_editable -e file://[WORKSPACE]/test/packages/poetry_editable
----- stderr ----- ----- stderr -----
warning: The package `anyio` requires `idna>=2.8`, but it's not installed warning: The package `anyio` requires `idna>=2.8`, but it's not installed

View File

@ -1377,7 +1377,7 @@ fn install_extras() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("--all-extras") .arg("--all-extras")
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r"
success: false success: false
exit_code: 2 exit_code: 2
----- stdout ----- ----- stdout -----
@ -1390,7 +1390,7 @@ fn install_extras() -> Result<()> {
// Request extras for a source tree // Request extras for a source tree
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("--all-extras") .arg("--all-extras")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r"
success: false success: false
exit_code: 2 exit_code: 2
----- stdout ----- ----- stdout -----
@ -1453,7 +1453,7 @@ fn install_editable() {
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -1464,7 +1464,7 @@ fn install_editable() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -1472,7 +1472,7 @@ fn install_editable() {
// Install it again. // Install it again.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -1482,14 +1482,14 @@ fn install_editable() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) ~ poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
"### "###
); );
// Add another, non-editable dependency. // Add another, non-editable dependency.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")) .arg(context.workspace_root.join("test/packages/poetry_editable"))
.arg("black"), @r###" .arg("black"), @r###"
success: true success: true
exit_code: 0 exit_code: 0
@ -1506,7 +1506,7 @@ fn install_editable() {
+ packaging==24.0 + packaging==24.0
+ pathspec==0.12.1 + pathspec==0.12.1
+ platformdirs==4.2.0 + platformdirs==4.2.0
~ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) ~ poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
"### "###
); );
} }
@ -1538,7 +1538,7 @@ fn install_editable_and_registry() {
// Install the editable version of Black. This should remove the registry-based version. // Install the editable version of Black. This should remove the registry-based version.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")), @r###" .arg(context.workspace_root.join("test/packages/black_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -1549,7 +1549,7 @@ fn install_editable_and_registry() {
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
- black==24.3.0 - black==24.3.0
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -1580,7 +1580,7 @@ fn install_editable_and_registry() {
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
- black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) - black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
+ black==23.10.0 + black==23.10.0
"### "###
); );
@ -1593,7 +1593,7 @@ fn install_editable_no_binary() {
// Install the editable package with no-binary enabled // Install the editable package with no-binary enabled
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg("--no-binary") .arg("--no-binary")
.arg(":all:"), @r###" .arg(":all:"), @r###"
success: true success: true
@ -1604,7 +1604,7 @@ fn install_editable_no_binary() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
} }
@ -1619,7 +1619,7 @@ fn install_editable_compatible_constraint() -> Result<()> {
// Install the editable package with a compatible constraint. // Install the editable package with a compatible constraint.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg("--constraint") .arg("--constraint")
.arg("constraints.txt"), @r###" .arg("constraints.txt"), @r###"
success: true success: true
@ -1630,7 +1630,7 @@ fn install_editable_compatible_constraint() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -1647,7 +1647,7 @@ fn install_editable_incompatible_constraint_version() -> Result<()> {
// Install the editable package with an incompatible constraint. // Install the editable package with an incompatible constraint.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg("--constraint") .arg("--constraint")
.arg("constraints.txt"), @r###" .arg("constraints.txt"), @r###"
success: false success: false
@ -1673,7 +1673,7 @@ fn install_editable_incompatible_constraint_url() -> Result<()> {
// Install the editable package with an incompatible constraint. // Install the editable package with an incompatible constraint.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg("--constraint") .arg("--constraint")
.arg("constraints.txt"), @r" .arg("constraints.txt"), @r"
success: false success: false
@ -1682,7 +1682,7 @@ fn install_editable_incompatible_constraint_url() -> Result<()> {
----- stderr ----- ----- stderr -----
error: Requirements contain conflicting URLs for package `black`: error: Requirements contain conflicting URLs for package `black`:
- file://[WORKSPACE]/scripts/packages/black_editable (editable) - file://[WORKSPACE]/test/packages/black_editable (editable)
- https://files.pythonhosted.org/packages/0f/89/294c9a6b6c75a08da55e9d05321d0707e9418735e3062b12ef0f54c33474/black-24.4.2-py3-none-any.whl - https://files.pythonhosted.org/packages/0f/89/294c9a6b6c75a08da55e9d05321d0707e9418735e3062b12ef0f54c33474/black-24.4.2-py3-none-any.whl
" "
); );
@ -1696,7 +1696,7 @@ fn install_editable_pep_508_requirements_txt() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
-e black[d] @ file://{workspace_root}/scripts/packages/black_editable -e black[d] @ file://{workspace_root}/test/packages/black_editable
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -1715,7 +1715,7 @@ fn install_editable_pep_508_requirements_txt() -> Result<()> {
+ aiohttp==3.9.3 + aiohttp==3.9.3
+ aiosignal==1.3.1 + aiosignal==1.3.1
+ attrs==23.2.0 + attrs==23.2.0
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
+ frozenlist==1.4.1 + frozenlist==1.4.1
+ idna==3.6 + idna==3.6
+ multidict==6.0.5 + multidict==6.0.5
@ -1724,7 +1724,7 @@ fn install_editable_pep_508_requirements_txt() -> Result<()> {
); );
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
--editable black[d] @ file://{workspace_root}/scripts/packages/black_editable --editable black[d] @ file://{workspace_root}/test/packages/black_editable
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -1742,7 +1742,7 @@ fn install_editable_pep_508_requirements_txt() -> Result<()> {
); );
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
--editable=black[d] @ file://{workspace_root}/scripts/packages/black_editable --editable=black[d] @ file://{workspace_root}/test/packages/black_editable
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -1760,7 +1760,7 @@ fn install_editable_pep_508_requirements_txt() -> Result<()> {
); );
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
--editable= black[d] @ file://{workspace_root}/scripts/packages/black_editable --editable= black[d] @ file://{workspace_root}/test/packages/black_editable
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -1786,7 +1786,7 @@ fn install_editable_pep_508_cli() {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(format!("black[d] @ file://{workspace_root}/scripts/packages/black_editable", workspace_root = context.workspace_root.simplified_display())), @r###" .arg(format!("black[d] @ file://{workspace_root}/test/packages/black_editable", workspace_root = context.workspace_root.simplified_display())), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -1798,7 +1798,7 @@ fn install_editable_pep_508_cli() {
+ aiohttp==3.9.3 + aiohttp==3.9.3
+ aiosignal==1.3.1 + aiosignal==1.3.1
+ attrs==23.2.0 + attrs==23.2.0
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
+ frozenlist==1.4.1 + frozenlist==1.4.1
+ idna==3.6 + idna==3.6
+ multidict==6.0.5 + multidict==6.0.5
@ -1811,7 +1811,7 @@ fn install_editable_pep_508_cli() {
fn install_editable_bare_cli() { fn install_editable_bare_cli() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let packages_dir = context.workspace_root.join("scripts/packages"); let packages_dir = context.workspace_root.join("test/packages");
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
@ -1826,7 +1826,7 @@ fn install_editable_bare_cli() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
} }
@ -1838,7 +1838,7 @@ fn install_editable_bare_requirements_txt() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str("-e black_editable")?; requirements_txt.write_str("-e black_editable")?;
let packages_dir = context.workspace_root.join("scripts/packages"); let packages_dir = context.workspace_root.join("test/packages");
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-r") .arg("-r")
@ -1853,7 +1853,7 @@ fn install_editable_bare_requirements_txt() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -3012,7 +3012,7 @@ fn only_binary_editable() {
.arg("--only-binary") .arg("--only-binary")
.arg(":all:") .arg(":all:")
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/anyio_local")), @r###" .arg(context.workspace_root.join("test/packages/anyio_local")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -3021,7 +3021,7 @@ fn only_binary_editable() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) + anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"### "###
); );
} }
@ -3032,7 +3032,7 @@ fn only_binary_dependent_editables() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let root_path = context let root_path = context
.workspace_root .workspace_root
.join("scripts/packages/dependent_locals"); .join("test/packages/dependent_locals");
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
@ -3050,8 +3050,8 @@ fn only_binary_dependent_editables() {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) + first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
+ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) + second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
"### "###
); );
} }
@ -3066,7 +3066,7 @@ fn only_binary_editable_setup_py() {
.arg("--only-binary") .arg("--only-binary")
.arg(":all:") .arg(":all:")
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/setup_py_editable")), @r###" .arg(context.workspace_root.join("test/packages/setup_py_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -3081,7 +3081,7 @@ fn only_binary_editable_setup_py() {
+ httpcore==1.0.4 + httpcore==1.0.4
+ httpx==0.27.0 + httpx==0.27.0
+ idna==3.6 + idna==3.6
+ setup-py-editable==0.0.1 (from file://[WORKSPACE]/scripts/packages/setup_py_editable) + setup-py-editable==0.0.1 (from file://[WORKSPACE]/test/packages/setup_py_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -3328,7 +3328,7 @@ fn no_deps_editable() {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("--no-deps") .arg("--no-deps")
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable[dev]")), @r###" .arg(context.workspace_root.join("test/packages/black_editable[dev]")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -3337,7 +3337,7 @@ fn no_deps_editable() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -3963,7 +3963,7 @@ fn launcher() -> Result<()> {
uv_snapshot!( uv_snapshot!(
filters, filters,
context.pip_install() context.pip_install()
.arg(format!("simple_launcher@{}", project_root.join("scripts/links/simple_launcher-0.1.0-py3-none-any.whl").display())) .arg(format!("simple_launcher@{}", project_root.join("test/links/simple_launcher-0.1.0-py3-none-any.whl").display()))
.arg("--strict"), @r###" .arg("--strict"), @r###"
success: true success: true
exit_code: 0 exit_code: 0
@ -4008,7 +4008,7 @@ fn launcher_with_symlink() -> Result<()> {
uv_snapshot!(filters, uv_snapshot!(filters,
context.pip_install() context.pip_install()
.arg(format!("simple_launcher@{}", project_root.join("scripts/links/simple_launcher-0.1.0-py3-none-any.whl").display())) .arg(format!("simple_launcher@{}", project_root.join("test/links/simple_launcher-0.1.0-py3-none-any.whl").display()))
.arg("--strict"), .arg("--strict"),
@r###" @r###"
success: true success: true
@ -4151,7 +4151,7 @@ fn config_settings_path() -> Result<()> {
"-e {}", "-e {}",
context context
.workspace_root .workspace_root
.join("scripts/packages/setuptools_editable") .join("test/packages/setuptools_editable")
.display() .display()
))?; ))?;
@ -4168,7 +4168,7 @@ fn config_settings_path() -> Result<()> {
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ iniconfig==2.0.0 + iniconfig==2.0.0
+ setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) + setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
"### "###
); );
@ -4194,7 +4194,7 @@ fn config_settings_path() -> Result<()> {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) ~ setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
" "
); );
@ -4903,7 +4903,7 @@ fn path_name_version_change() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/links/ok-1.0.0-py3-none-any.whl")), @r###" .arg(context.workspace_root.join("test/links/ok-1.0.0-py3-none-any.whl")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -4912,13 +4912,13 @@ fn path_name_version_change() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ ok==1.0.0 (from file://[WORKSPACE]/scripts/links/ok-1.0.0-py3-none-any.whl) + ok==1.0.0 (from file://[WORKSPACE]/test/links/ok-1.0.0-py3-none-any.whl)
"### "###
); );
// Installing the same path again should be a no-op // Installing the same path again should be a no-op
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/links/ok-1.0.0-py3-none-any.whl")), @r###" .arg(context.workspace_root.join("test/links/ok-1.0.0-py3-none-any.whl")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -4930,7 +4930,7 @@ fn path_name_version_change() {
// Installing a new path should succeed // Installing a new path should succeed
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/links/ok-2.0.0-py3-none-any.whl")), @r###" .arg(context.workspace_root.join("test/links/ok-2.0.0-py3-none-any.whl")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -4940,14 +4940,14 @@ fn path_name_version_change() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
- ok==1.0.0 (from file://[WORKSPACE]/scripts/links/ok-1.0.0-py3-none-any.whl) - ok==1.0.0 (from file://[WORKSPACE]/test/links/ok-1.0.0-py3-none-any.whl)
+ ok==2.0.0 (from file://[WORKSPACE]/scripts/links/ok-2.0.0-py3-none-any.whl) + ok==2.0.0 (from file://[WORKSPACE]/test/links/ok-2.0.0-py3-none-any.whl)
"### "###
); );
// Installing a new path should succeed regardless of which version is "newer" // Installing a new path should succeed regardless of which version is "newer"
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/links/ok-1.0.0-py3-none-any.whl")), @r###" .arg(context.workspace_root.join("test/links/ok-1.0.0-py3-none-any.whl")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -4956,8 +4956,8 @@ fn path_name_version_change() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
- ok==2.0.0 (from file://[WORKSPACE]/scripts/links/ok-2.0.0-py3-none-any.whl) - ok==2.0.0 (from file://[WORKSPACE]/test/links/ok-2.0.0-py3-none-any.whl)
+ ok==1.0.0 (from file://[WORKSPACE]/scripts/links/ok-1.0.0-py3-none-any.whl) + ok==1.0.0 (from file://[WORKSPACE]/test/links/ok-1.0.0-py3-none-any.whl)
"### "###
); );
} }
@ -4969,7 +4969,7 @@ fn path_changes_with_same_name() -> Result<()> {
let wheel = context let wheel = context
.workspace_root .workspace_root
.join("scripts/links/ok-1.0.0-py3-none-any.whl"); .join("test/links/ok-1.0.0-py3-none-any.whl");
let one = context.temp_dir.child("one"); let one = context.temp_dir.child("one");
one.create_dir_all()?; one.create_dir_all()?;
@ -5780,7 +5780,7 @@ fn install_package_basic_auth_from_keyring() {
.arg( .arg(
context context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -5827,7 +5827,7 @@ fn install_package_basic_auth_from_keyring_wrong_password() {
.arg( .arg(
context context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -5870,7 +5870,7 @@ fn install_package_basic_auth_from_keyring_wrong_username() {
.arg( .arg(
context context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -5982,7 +5982,7 @@ fn deptry_gitignore() {
let source_dist_dir = context let source_dist_dir = context
.workspace_root .workspace_root
.join("scripts/packages/deptry_reproducer"); .join("test/packages/deptry_reproducer");
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(format!("deptry_reproducer @ {}", source_dist_dir.join("deptry_reproducer-0.1.0.tar.gz").simplified_display())) .arg(format!("deptry_reproducer @ {}", source_dist_dir.join("deptry_reproducer-0.1.0.tar.gz").simplified_display()))
@ -5998,7 +5998,7 @@ fn deptry_gitignore() {
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
+ cffi==1.16.0 + cffi==1.16.0
+ deptry-reproducer==0.1.0 (from file://[WORKSPACE]/scripts/packages/deptry_reproducer/deptry_reproducer-0.1.0.tar.gz) + deptry-reproducer==0.1.0 (from file://[WORKSPACE]/test/packages/deptry_reproducer/deptry_reproducer-0.1.0.tar.gz)
+ pycparser==2.21 + pycparser==2.21
"### "###
); );
@ -6112,7 +6112,7 @@ fn already_installed_dependent_editable() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let root_path = context let root_path = context
.workspace_root .workspace_root
.join("scripts/packages/dependent_locals"); .join("test/packages/dependent_locals");
// Install the first editable // Install the first editable
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
@ -6126,7 +6126,7 @@ fn already_installed_dependent_editable() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) + first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
@ -6147,7 +6147,7 @@ fn already_installed_dependent_editable() {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) + second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
"### "###
); );
@ -6165,7 +6165,7 @@ fn already_installed_dependent_editable() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
@ -6207,7 +6207,7 @@ fn already_installed_dependent_editable() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
} }
@ -6218,7 +6218,7 @@ fn already_installed_local_path_dependent() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let root_path = context let root_path = context
.workspace_root .workspace_root
.join("scripts/packages/dependent_locals"); .join("test/packages/dependent_locals");
// Install the first local // Install the first local
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
@ -6231,7 +6231,7 @@ fn already_installed_local_path_dependent() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) + first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
@ -6251,7 +6251,7 @@ fn already_installed_local_path_dependent() {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) + second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
"### "###
); );
@ -6268,7 +6268,7 @@ fn already_installed_local_path_dependent() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
@ -6285,7 +6285,7 @@ fn already_installed_local_path_dependent() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
"### "###
); );
@ -6326,8 +6326,8 @@ fn already_installed_local_path_dependent() {
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Uninstalled 2 packages in [TIME] Uninstalled 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
~ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) ~ second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
" "
); );
@ -6350,7 +6350,7 @@ fn already_installed_local_path_dependent() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) ~ second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
"### "###
); );
@ -6375,8 +6375,8 @@ fn already_installed_local_path_dependent() {
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Uninstalled 2 packages in [TIME] Uninstalled 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
~ first-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/first_local) ~ first-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/first_local)
~ second-local==0.1.0 (from file://[WORKSPACE]/scripts/packages/dependent_locals/second_local) ~ second-local==0.1.0 (from file://[WORKSPACE]/test/packages/dependent_locals/second_local)
"### "###
); );
} }
@ -6385,7 +6385,7 @@ fn already_installed_local_path_dependent() {
#[test] #[test]
fn already_installed_local_version_of_remote_package() { fn already_installed_local_version_of_remote_package() {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let root_path = context.workspace_root.join("scripts/packages"); let root_path = context.workspace_root.join("test/packages");
// Install the local anyio first // Install the local anyio first
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
@ -6398,7 +6398,7 @@ fn already_installed_local_version_of_remote_package() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) + anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"### "###
); );
@ -6463,7 +6463,7 @@ fn already_installed_local_version_of_remote_package() {
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
~ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) ~ anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"### "###
); );
@ -6481,7 +6481,7 @@ fn already_installed_local_version_of_remote_package() {
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
- anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) - anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ sniffio==1.3.1 + sniffio==1.3.1
@ -6501,7 +6501,7 @@ fn already_installed_local_version_of_remote_package() {
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
- anyio==4.3.0 - anyio==4.3.0
+ anyio==4.3.0+foo (from file://[WORKSPACE]/scripts/packages/anyio_local) + anyio==4.3.0+foo (from file://[WORKSPACE]/test/packages/anyio_local)
"### "###
); );
@ -6747,7 +6747,7 @@ fn find_links() {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("tqdm") .arg("tqdm")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -6771,7 +6771,7 @@ fn find_links_no_binary() {
.arg("--no-binary") .arg("--no-binary")
.arg(":all:") .arg(":all:")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -6985,7 +6985,7 @@ fn require_hashes_editable() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
-e file://{workspace_root}/scripts/packages/black_editable[d] -e file://{workspace_root}/test/packages/black_editable[d]
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -7000,7 +7000,7 @@ fn require_hashes_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
error: In `--require-hashes` mode, all requirements must have a hash, but none were provided for: file://[WORKSPACE]/scripts/packages/black_editable[d] error: In `--require-hashes` mode, all requirements must have a hash, but none were provided for: file://[WORKSPACE]/test/packages/black_editable[d]
"### "###
); );
@ -7652,7 +7652,7 @@ fn verify_hashes_editable() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
-e file://{workspace_root}/scripts/packages/black_editable[d] -e file://{workspace_root}/test/packages/black_editable[d]
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -7673,7 +7673,7 @@ fn verify_hashes_editable() -> Result<()> {
+ aiohttp==3.9.3 + aiohttp==3.9.3
+ aiosignal==1.3.1 + aiosignal==1.3.1
+ attrs==23.2.0 + attrs==23.2.0
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
+ frozenlist==1.4.1 + frozenlist==1.4.1
+ idna==3.6 + idna==3.6
+ multidict==6.0.5 + multidict==6.0.5
@ -7861,11 +7861,11 @@ fn tool_uv_sources() -> Result<()> {
let project_root = fs_err::canonicalize(std::env::current_dir()?.join("../.."))?; let project_root = fs_err::canonicalize(std::env::current_dir()?.join("../.."))?;
fs_err::create_dir_all(context.temp_dir.join("poetry_editable/poetry_editable"))?; fs_err::create_dir_all(context.temp_dir.join("poetry_editable/poetry_editable"))?;
fs_err::copy( fs_err::copy(
project_root.join("scripts/packages/poetry_editable/pyproject.toml"), project_root.join("test/packages/poetry_editable/pyproject.toml"),
context.temp_dir.join("poetry_editable/pyproject.toml"), context.temp_dir.join("poetry_editable/pyproject.toml"),
)?; )?;
fs_err::copy( fs_err::copy(
project_root.join("scripts/packages/poetry_editable/poetry_editable/__init__.py"), project_root.join("test/packages/poetry_editable/poetry_editable/__init__.py"),
context context
.temp_dir .temp_dir
.join("poetry_editable/poetry_editable/__init__.py"), .join("poetry_editable/poetry_editable/__init__.py"),
@ -7995,8 +7995,8 @@ fn prefer_editable() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg(context.workspace_root.join("scripts/packages/black_editable")), @r###" .arg(context.workspace_root.join("test/packages/black_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -8005,7 +8005,7 @@ fn prefer_editable() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -8017,13 +8017,13 @@ fn prefer_editable() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&format!( requirements_txt.write_str(&format!(
"black @ file://{}/scripts/packages/black_editable", "black @ file://{}/test/packages/black_editable",
context.workspace_root.simplified_display() context.workspace_root.simplified_display()
))?; ))?;
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.arg("-r") .arg("-r")
.arg("requirements.txt"), @r###" .arg("requirements.txt"), @r###"
success: true success: true
@ -8034,7 +8034,7 @@ fn prefer_editable() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
"### "###
); );
@ -8073,7 +8073,7 @@ fn local_index_absolute() -> Result<()> {
</a> </a>
</body> </body>
</html> </html>
"#, Url::from_directory_path(context.workspace_root.join("scripts/links/")).unwrap().as_str()})?; "#, Url::from_directory_path(context.workspace_root.join("test/links/")).unwrap().as_str()})?;
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.env_remove(EnvVars::UV_EXCLUDE_NEWER) .env_remove(EnvVars::UV_EXCLUDE_NEWER)
@ -8124,7 +8124,7 @@ fn local_index_relative() -> Result<()> {
</a> </a>
</body> </body>
</html> </html>
"#, Url::from_directory_path(context.workspace_root.join("scripts/links/")).unwrap().as_str()})?; "#, Url::from_directory_path(context.workspace_root.join("test/links/")).unwrap().as_str()})?;
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.env_remove(EnvVars::UV_EXCLUDE_NEWER) .env_remove(EnvVars::UV_EXCLUDE_NEWER)
@ -8175,7 +8175,7 @@ fn local_index_requirements_txt_absolute() -> Result<()> {
</a> </a>
</body> </body>
</html> </html>
"#, Url::from_directory_path(context.workspace_root.join("scripts/links/")).unwrap().as_str()})?; "#, Url::from_directory_path(context.workspace_root.join("test/links/")).unwrap().as_str()})?;
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
@ -8231,7 +8231,7 @@ fn local_index_requirements_txt_relative() -> Result<()> {
</a> </a>
</body> </body>
</html> </html>
"#, Url::from_directory_path(context.workspace_root.join("scripts/links/")).unwrap().as_str()})?; "#, Url::from_directory_path(context.workspace_root.join("test/links/")).unwrap().as_str()})?;
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str( requirements_txt.write_str(
@ -8405,11 +8405,7 @@ fn install_relocatable() -> Result<()> {
// (we use black_editable because it's convenient, but we don't actually install it as editable) // (we use black_editable because it's convenient, but we don't actually install it as editable)
context context
.pip_install() .pip_install()
.arg( .arg(context.workspace_root.join("test/packages/black_editable"))
context
.workspace_root
.join("scripts/packages/black_editable"),
)
.assert() .assert()
.success(); .success();
@ -9337,7 +9333,7 @@ fn build_tag() {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("build-tag") .arg("build-tag")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -10141,7 +10137,7 @@ fn other_sources_group() -> Result<()> {
// and install an editable // and install an editable
context = new_context()?; context = new_context()?;
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e").arg(context.workspace_root.join("scripts/packages/poetry_editable")) .arg("-e").arg(context.workspace_root.join("test/packages/poetry_editable"))
.arg("--group").arg("foo"), @r" .arg("--group").arg("foo"), @r"
success: true success: true
exit_code: 0 exit_code: 0
@ -10153,7 +10149,7 @@ fn other_sources_group() -> Result<()> {
Installed 5 packages in [TIME] Installed 5 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
+ sortedcontainers==2.4.0 + sortedcontainers==2.4.0
"); ");
@ -12265,7 +12261,7 @@ fn config_settings_package() -> Result<()> {
"-e {}", "-e {}",
context context
.workspace_root .workspace_root
.join("scripts/packages/setuptools_editable") .join("test/packages/setuptools_editable")
.display() .display()
))?; ))?;
@ -12282,7 +12278,7 @@ fn config_settings_package() -> Result<()> {
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ iniconfig==2.0.0 + iniconfig==2.0.0
+ setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) + setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
"### "###
); );
@ -12301,7 +12297,7 @@ fn config_settings_package() -> Result<()> {
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) - setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
"###); "###);
// Install the editable package with `editable_mode=compat`, scoped to the package. // Install the editable package with `editable_mode=compat`, scoped to the package.
@ -12318,7 +12314,7 @@ fn config_settings_package() -> Result<()> {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) + setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
" "
); );
@ -12337,7 +12333,7 @@ fn config_settings_package() -> Result<()> {
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) - setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
"###); "###);
// Install the editable package with `editable_mode=compat`, by scoped to a different package. // Install the editable package with `editable_mode=compat`, by scoped to a different package.
@ -12354,7 +12350,7 @@ fn config_settings_package() -> Result<()> {
----- stderr ----- ----- stderr -----
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ setuptools-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/setuptools_editable) + setuptools-editable==0.1.0 (from file://[WORKSPACE]/test/packages/setuptools_editable)
" "
); );
@ -12852,7 +12848,7 @@ fn pip_install_build_dependencies_respect_locked_versions() -> Result<()> {
fn overlapping_packages_warning() -> Result<()> { fn overlapping_packages_warning() -> Result<()> {
let context = TestContext::new("3.12"); let context = TestContext::new("3.12");
let built_by_uv = context.workspace_root.join("scripts/packages/built-by-uv"); let built_by_uv = context.workspace_root.join("test/packages/built-by-uv");
// Overlaps with `built-by-uv` // Overlaps with `built-by-uv`
let also_build_by_uv = context.temp_dir.child("also-built-by-uv"); let also_build_by_uv = context.temp_dir.child("also-built-by-uv");
@ -12891,7 +12887,7 @@ fn overlapping_packages_warning() -> Result<()> {
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ also-built-by-uv==0.1.0 (from file://[TEMP_DIR]/also-built-by-uv) + also-built-by-uv==0.1.0 (from file://[TEMP_DIR]/also-built-by-uv)
+ built-by-uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/built-by-uv) + built-by-uv==0.1.0 (from file://[WORKSPACE]/test/packages/built-by-uv)
" "
); );
@ -12915,7 +12911,7 @@ fn overlapping_packages_warning() -> Result<()> {
warning: The module `built_by_uv` is provided by more than one package, which causes an install race condition and can result in a broken module. Consider removing your dependency on either `built-by-uv` (v0.1.0) or `also-built-by-uv` (v0.1.0). warning: The module `built_by_uv` is provided by more than one package, which causes an install race condition and can result in a broken module. Consider removing your dependency on either `built-by-uv` (v0.1.0) or `also-built-by-uv` (v0.1.0).
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ also-built-by-uv==0.1.0 (from file://[TEMP_DIR]/also-built-by-uv) + also-built-by-uv==0.1.0 (from file://[TEMP_DIR]/also-built-by-uv)
+ built-by-uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/built-by-uv) + built-by-uv==0.1.0 (from file://[WORKSPACE]/test/packages/built-by-uv)
" "
); );
@ -12946,7 +12942,7 @@ fn overlapping_packages_warning() -> Result<()> {
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- built-by-uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/built-by-uv) - built-by-uv==0.1.0 (from file://[WORKSPACE]/test/packages/built-by-uv)
" "
); );
uv_snapshot!(context.filters(), context.pip_uninstall() uv_snapshot!(context.filters(), context.pip_uninstall()
@ -12973,7 +12969,7 @@ fn overlapping_packages_warning() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ built-by-uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/built-by-uv) + built-by-uv==0.1.0 (from file://[WORKSPACE]/test/packages/built-by-uv)
" "
); );
// Currently, we don't warn if we install them one wheel at a time. // Currently, we don't warn if we install them one wheel at a time.

View File

@ -287,7 +287,7 @@ fn list_editable() {
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -298,7 +298,7 @@ fn list_editable() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -317,7 +317,7 @@ fn list_editable() {
[UNDERLINE] [UNDERLINE]
anyio 4.3.0 anyio 4.3.0
idna 3.6 idna 3.6
poetry-editable 0.1.0 [WORKSPACE]/scripts/packages/poetry_editable poetry-editable 0.1.0 [WORKSPACE]/test/packages/poetry_editable
sniffio 1.3.1 sniffio 1.3.1
----- stderr ----- ----- stderr -----
@ -333,7 +333,7 @@ fn list_editable_only() {
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -344,7 +344,7 @@ fn list_editable_only() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -362,7 +362,7 @@ fn list_editable_only() {
----- stdout ----- ----- stdout -----
Package Version Editable project location Package Version Editable project location
[UNDERLINE] [UNDERLINE]
poetry-editable 0.1.0 [WORKSPACE]/scripts/packages/poetry_editable poetry-editable 0.1.0 [WORKSPACE]/test/packages/poetry_editable
----- stderr ----- ----- stderr -----
"### "###
@ -408,7 +408,7 @@ fn list_exclude() {
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -419,7 +419,7 @@ fn list_exclude() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -440,7 +440,7 @@ fn list_exclude() {
[UNDERLINE] [UNDERLINE]
anyio 4.3.0 anyio 4.3.0
idna 3.6 idna 3.6
poetry-editable 0.1.0 [WORKSPACE]/scripts/packages/poetry_editable poetry-editable 0.1.0 [WORKSPACE]/test/packages/poetry_editable
sniffio 1.3.1 sniffio 1.3.1
----- stderr ----- ----- stderr -----
@ -491,7 +491,7 @@ fn list_format_json() {
// Install the editable package. // Install the editable package.
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -502,7 +502,7 @@ fn list_format_json() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -518,7 +518,7 @@ fn list_format_json() {
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
[{"name":"anyio","version":"4.3.0"},{"name":"idna","version":"3.6"},{"name":"poetry-editable","version":"0.1.0","editable_project_location":"[WORKSPACE]/scripts/packages/poetry_editable"},{"name":"sniffio","version":"1.3.1"}] [{"name":"anyio","version":"4.3.0"},{"name":"idna","version":"3.6"},{"name":"poetry-editable","version":"0.1.0","editable_project_location":"[WORKSPACE]/test/packages/poetry_editable"},{"name":"sniffio","version":"1.3.1"}]
----- stderr ----- ----- stderr -----
"### "###
@ -530,7 +530,7 @@ fn list_format_json() {
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
[{"name":"poetry-editable","version":"0.1.0","editable_project_location":"[WORKSPACE]/scripts/packages/poetry_editable"}] [{"name":"poetry-editable","version":"0.1.0","editable_project_location":"[WORKSPACE]/test/packages/poetry_editable"}]
----- stderr ----- ----- stderr -----
"### "###
@ -558,7 +558,7 @@ fn list_format_freeze() {
uv_snapshot!(context.filters(), context uv_snapshot!(context.filters(), context
.pip_install() .pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -569,7 +569,7 @@ fn list_format_freeze() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );
@ -724,7 +724,7 @@ fn list_ignores_quiet_flag_format_freeze() {
uv_snapshot!(context.filters(), context uv_snapshot!(context.filters(), context
.pip_install() .pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/poetry_editable")), @r###" .arg(context.workspace_root.join("test/packages/poetry_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -735,7 +735,7 @@ fn list_ignores_quiet_flag_format_freeze() {
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==4.3.0 + anyio==4.3.0
+ idna==3.6 + idna==3.6
+ poetry-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/poetry_editable) + poetry-editable==0.1.0 (from file://[WORKSPACE]/test/packages/poetry_editable)
+ sniffio==1.3.1 + sniffio==1.3.1
"### "###
); );

View File

@ -384,7 +384,7 @@ fn show_editable() -> Result<()> {
context context
.pip_install() .pip_install()
.arg("-e") .arg("-e")
.arg("../../scripts/packages/poetry_editable") .arg("../../test/packages/poetry_editable")
.current_dir(current_dir()?) .current_dir(current_dir()?)
.env( .env(
EnvVars::CARGO_TARGET_DIR, EnvVars::CARGO_TARGET_DIR,
@ -401,7 +401,7 @@ fn show_editable() -> Result<()> {
Name: poetry-editable Name: poetry-editable
Version: 0.1.0 Version: 0.1.0
Location: [SITE_PACKAGES]/ Location: [SITE_PACKAGES]/
Editable project location: [WORKSPACE]/scripts/packages/poetry_editable Editable project location: [WORKSPACE]/test/packages/poetry_editable
Requires: anyio Requires: anyio
Required-by: Required-by:

View File

@ -776,7 +776,7 @@ fn install_sdist_archive_type_bz2() -> Result<()> {
"bz2 @ {}", "bz2 @ {}",
context context
.workspace_root .workspace_root
.join("scripts/links/bz2-1.0.0.tar.bz2") .join("test/links/bz2-1.0.0.tar.bz2")
.display() .display()
))?; ))?;
@ -791,7 +791,7 @@ fn install_sdist_archive_type_bz2() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ bz2==1.0.0 (from file://[WORKSPACE]/scripts/links/bz2-1.0.0.tar.bz2) + bz2==1.0.0 (from file://[WORKSPACE]/test/links/bz2-1.0.0.tar.bz2)
"### "###
); );
@ -2263,9 +2263,7 @@ fn sync_editable() -> Result<()> {
// Copy into the temporary directory so we can mutate it. // Copy into the temporary directory so we can mutate it.
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/poetry_editable"),
.workspace_root
.join("scripts/packages/poetry_editable"),
&poetry_editable, &poetry_editable,
)?; )?;
@ -2429,9 +2427,7 @@ fn sync_editable_and_registry() -> Result<()> {
// Copy the black test editable into the "current" directory // Copy the black test editable into the "current" directory
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
context.temp_dir.join("black_editable"), context.temp_dir.join("black_editable"),
)?; )?;
@ -2544,9 +2540,7 @@ fn sync_editable_and_local() -> Result<()> {
// Copy the black test editable into the "current" directory // Copy the black test editable into the "current" directory
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
context.temp_dir.join("black_editable"), context.temp_dir.join("black_editable"),
)?; )?;
@ -2687,7 +2681,7 @@ fn find_links() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync() uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt") .arg("requirements.txt")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2720,7 +2714,7 @@ fn find_links_no_index_match() -> Result<()> {
.arg("requirements.txt") .arg("requirements.txt")
.arg("--no-index") .arg("--no-index")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2750,7 +2744,7 @@ fn find_links_offline_match() -> Result<()> {
.arg("requirements.txt") .arg("requirements.txt")
.arg("--offline") .arg("--offline")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2781,7 +2775,7 @@ fn find_links_offline_no_match() -> Result<()> {
.arg("requirements.txt") .arg("requirements.txt")
.arg("--offline") .arg("--offline")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: false success: false
exit_code: 1 exit_code: 1
----- stdout ----- ----- stdout -----
@ -2811,7 +2805,7 @@ fn find_links_wheel_cache() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync() uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt") .arg("requirements.txt")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2829,7 +2823,7 @@ fn find_links_wheel_cache() -> Result<()> {
.arg("requirements.txt") .arg("requirements.txt")
.arg("--reinstall") .arg("--reinstall")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2861,7 +2855,7 @@ fn find_links_source_cache() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync() uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt") .arg("requirements.txt")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -2879,7 +2873,7 @@ fn find_links_source_cache() -> Result<()> {
.arg("requirements.txt") .arg("requirements.txt")
.arg("--reinstall") .arg("--reinstall")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")), @r###" .arg(context.workspace_root.join("test/links/")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -4045,7 +4039,7 @@ fn require_hashes_source_tree() -> Result<()> {
"black @ {} --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a", "black @ {} --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a",
context context
.workspace_root .workspace_root
.join("scripts/packages/black_editable") .join("test/packages/black_editable")
.display() .display()
))?; ))?;
@ -4057,8 +4051,8 @@ fn require_hashes_source_tree() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× Failed to build `black @ file://[WORKSPACE]/scripts/packages/black_editable` × Failed to build `black @ file://[WORKSPACE]/test/packages/black_editable`
Hash-checking is not supported for local directories: `black @ file://[WORKSPACE]/scripts/packages/black_editable` Hash-checking is not supported for local directories: `black @ file://[WORKSPACE]/test/packages/black_editable`
"### "###
); );
@ -4149,7 +4143,7 @@ fn require_hashes_wheel_path() -> Result<()> {
"tqdm @ {} --hash=sha256:a34996d4bd5abb2336e14ff0a2d22b92cfd0f0ed344e6883041ce01953276a13", "tqdm @ {} --hash=sha256:a34996d4bd5abb2336e14ff0a2d22b92cfd0f0ed344e6883041ce01953276a13",
context context
.workspace_root .workspace_root
.join("scripts/links/tqdm-1000.0.0-py3-none-any.whl") .join("test/links/tqdm-1000.0.0-py3-none-any.whl")
.display() .display()
))?; ))?;
@ -4164,7 +4158,7 @@ fn require_hashes_wheel_path() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ tqdm==1000.0.0 (from file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl) + tqdm==1000.0.0 (from file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl)
"### "###
); );
@ -4181,7 +4175,7 @@ fn require_hashes_wheel_path_mismatch() -> Result<()> {
"tqdm @ {} --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f", "tqdm @ {} --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f",
context context
.workspace_root .workspace_root
.join("scripts/links/tqdm-1000.0.0-py3-none-any.whl") .join("test/links/tqdm-1000.0.0-py3-none-any.whl")
.display() .display()
))?; ))?;
@ -4194,8 +4188,8 @@ fn require_hashes_wheel_path_mismatch() -> Result<()> {
----- stderr ----- ----- stderr -----
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
× Failed to read `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl` × Failed to read `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
Hash mismatch for `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl` Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
Expected: Expected:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
@ -4218,7 +4212,7 @@ fn require_hashes_source_path() -> Result<()> {
"tqdm @ {} --hash=sha256:89fa05cffa7f457658373b85de302d24d0c205ceda2819a8739e324b75e9430b", "tqdm @ {} --hash=sha256:89fa05cffa7f457658373b85de302d24d0c205ceda2819a8739e324b75e9430b",
context context
.workspace_root .workspace_root
.join("scripts/links/tqdm-999.0.0.tar.gz") .join("test/links/tqdm-999.0.0.tar.gz")
.display() .display()
))?; ))?;
@ -4233,7 +4227,7 @@ fn require_hashes_source_path() -> Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ tqdm==999.0.0 (from file://[WORKSPACE]/scripts/links/tqdm-999.0.0.tar.gz) + tqdm==999.0.0 (from file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz)
"### "###
); );
@ -4250,7 +4244,7 @@ fn require_hashes_source_path_mismatch() -> Result<()> {
"tqdm @ {} --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f", "tqdm @ {} --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f",
context context
.workspace_root .workspace_root
.join("scripts/links/tqdm-999.0.0.tar.gz") .join("test/links/tqdm-999.0.0.tar.gz")
.display() .display()
))?; ))?;
@ -4262,8 +4256,8 @@ fn require_hashes_source_path_mismatch() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× Failed to build `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-999.0.0.tar.gz` × Failed to build `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
Hash mismatch for `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-999.0.0.tar.gz` Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
Expected: Expected:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
@ -4312,7 +4306,7 @@ fn require_hashes_editable() -> Result<()> {
let requirements_txt = context.temp_dir.child("requirements.txt"); let requirements_txt = context.temp_dir.child("requirements.txt");
requirements_txt.write_str(&indoc::formatdoc! {r" requirements_txt.write_str(&indoc::formatdoc! {r"
-e file://{workspace_root}/scripts/packages/black_editable[d] -e file://{workspace_root}/test/packages/black_editable[d]
", ",
workspace_root = context.workspace_root.simplified_display(), workspace_root = context.workspace_root.simplified_display(),
})?; })?;
@ -4326,7 +4320,7 @@ fn require_hashes_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
error: In `--require-hashes` mode, all requirements must have a hash, but none were provided for: file://[WORKSPACE]/scripts/packages/black_editable[d] error: In `--require-hashes` mode, all requirements must have a hash, but none were provided for: file://[WORKSPACE]/test/packages/black_editable[d]
"### "###
); );

View File

@ -827,7 +827,7 @@ fn with_editable() {
uv_snapshot!(context.filters(), context uv_snapshot!(context.filters(), context
.pip_install() .pip_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/hatchling_editable")), @r###" .arg(context.workspace_root.join("test/packages/hatchling_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -836,7 +836,7 @@ fn with_editable() {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
+ hatchling-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/hatchling_editable) + hatchling-editable==0.1.0 (from file://[WORKSPACE]/test/packages/hatchling_editable)
+ iniconfig==2.0.1.dev6+g9cae431 (from git+https://github.com/pytest-dev/iniconfig@9cae43103df70bac6fde7b9f35ad11a9f1be0cb4) + iniconfig==2.0.1.dev6+g9cae431 (from git+https://github.com/pytest-dev/iniconfig@9cae43103df70bac6fde7b9f35ad11a9f1be0cb4)
"### "###
); );

View File

@ -176,7 +176,7 @@ fn uninstall_editable_by_name() -> Result<()> {
"-e {}", "-e {}",
context context
.workspace_root .workspace_root
.join("scripts/packages/flit_editable") .join("test/packages/flit_editable")
.as_os_str() .as_os_str()
.to_str() .to_str()
.expect("Path is valid unicode") .expect("Path is valid unicode")
@ -198,7 +198,7 @@ fn uninstall_editable_by_name() -> Result<()> {
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- flit-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/flit_editable) - flit-editable==0.1.0 (from file://[WORKSPACE]/test/packages/flit_editable)
"### "###
); );
@ -216,7 +216,7 @@ fn uninstall_by_path() -> Result<()> {
requirements_txt.write_str( requirements_txt.write_str(
context context
.workspace_root .workspace_root
.join("scripts/packages/flit_editable") .join("test/packages/flit_editable")
.as_os_str() .as_os_str()
.to_str() .to_str()
.expect("Path is valid unicode"), .expect("Path is valid unicode"),
@ -232,14 +232,14 @@ fn uninstall_by_path() -> Result<()> {
// Uninstall the editable by path. // Uninstall the editable by path.
uv_snapshot!(context.filters(), context.pip_uninstall() uv_snapshot!(context.filters(), context.pip_uninstall()
.arg(context.workspace_root.join("scripts/packages/flit_editable")), @r###" .arg(context.workspace_root.join("test/packages/flit_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- flit-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/flit_editable) - flit-editable==0.1.0 (from file://[WORKSPACE]/test/packages/flit_editable)
"### "###
); );
@ -257,7 +257,7 @@ fn uninstall_duplicate_by_path() -> Result<()> {
requirements_txt.write_str( requirements_txt.write_str(
context context
.workspace_root .workspace_root
.join("scripts/packages/flit_editable") .join("test/packages/flit_editable")
.as_os_str() .as_os_str()
.to_str() .to_str()
.expect("Path is valid unicode"), .expect("Path is valid unicode"),
@ -274,14 +274,14 @@ fn uninstall_duplicate_by_path() -> Result<()> {
// Uninstall the editable by both path and name. // Uninstall the editable by both path and name.
uv_snapshot!(context.filters(), context.pip_uninstall() uv_snapshot!(context.filters(), context.pip_uninstall()
.arg("flit-editable") .arg("flit-editable")
.arg(context.workspace_root.join("scripts/packages/flit_editable")), @r###" .arg(context.workspace_root.join("test/packages/flit_editable")), @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
- flit-editable==0.1.0 (from file://[WORKSPACE]/scripts/packages/flit_editable) - flit-editable==0.1.0 (from file://[WORKSPACE]/test/packages/flit_editable)
"### "###
); );

View File

@ -23,7 +23,7 @@ fn username_password_no_longer_supported() {
.arg("dummy") .arg("dummy")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/") .arg("https://test.pypi.org/legacy/")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl"), @r###" .arg("../../test/links/ok-1.0.0-py3-none-any.whl"), @r###"
success: false success: false
exit_code: 2 exit_code: 2
----- stdout ----- ----- stdout -----
@ -31,7 +31,7 @@ fn username_password_no_longer_supported() {
----- stderr ----- ----- stderr -----
Publishing 1 file to https://test.pypi.org/legacy/ Publishing 1 file to https://test.pypi.org/legacy/
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/ error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers
"### "###
); );
@ -48,7 +48,7 @@ fn invalid_token() {
.arg("dummy") .arg("dummy")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/") .arg("https://test.pypi.org/legacy/")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl"), @r###" .arg("../../test/links/ok-1.0.0-py3-none-any.whl"), @r###"
success: false success: false
exit_code: 2 exit_code: 2
----- stdout ----- ----- stdout -----
@ -56,7 +56,7 @@ fn invalid_token() {
----- stderr ----- ----- stderr -----
Publishing 1 file to https://test.pypi.org/legacy/ Publishing 1 file to https://test.pypi.org/legacy/
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/ error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Invalid or non-existent authentication information. See https://test.pypi.org/help/#invalid-auth for more information. Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Invalid or non-existent authentication information. See https://test.pypi.org/help/#invalid-auth for more information.
"### "###
); );
@ -76,7 +76,7 @@ fn mixed_credentials() {
.arg("https://test.pypi.org/legacy/") .arg("https://test.pypi.org/legacy/")
.arg("--trusted-publishing") .arg("--trusted-publishing")
.arg("always") .arg("always")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
// Emulate CI // Emulate CI
.env(EnvVars::GITHUB_ACTIONS, "true"), @r###" .env(EnvVars::GITHUB_ACTIONS, "true"), @r###"
success: false success: false
@ -100,7 +100,7 @@ fn missing_trusted_publishing_permission() {
.arg("https://test.pypi.org/legacy/") .arg("https://test.pypi.org/legacy/")
.arg("--trusted-publishing") .arg("--trusted-publishing")
.arg("always") .arg("always")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
// Emulate CI // Emulate CI
.env(EnvVars::GITHUB_ACTIONS, "true"), @r" .env(EnvVars::GITHUB_ACTIONS, "true"), @r"
success: false success: false
@ -126,7 +126,7 @@ fn no_credentials() {
uv_snapshot!(context.filters(), context.publish() uv_snapshot!(context.filters(), context.publish()
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/") .arg("https://test.pypi.org/legacy/")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
// Emulate CI // Emulate CI
.env(EnvVars::GITHUB_ACTIONS, "true"), @r" .env(EnvVars::GITHUB_ACTIONS, "true"), @r"
success: false success: false
@ -141,7 +141,7 @@ fn no_credentials() {
Caused by: GitHub Actions detection error Caused by: GitHub Actions detection error
Caused by: insufficient permissions: missing ACTIONS_ID_TOKEN_REQUEST_URL Caused by: insufficient permissions: missing ACTIONS_ID_TOKEN_REQUEST_URL
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/ error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/
Caused by: Failed to send POST request Caused by: Failed to send POST request
Caused by: Missing credentials for https://test.pypi.org/legacy/ Caused by: Missing credentials for https://test.pypi.org/legacy/
" "
@ -211,7 +211,7 @@ fn check_keyring_behaviours() {
.arg( .arg(
context context
.workspace_root .workspace_root
.join("scripts") .join("test")
.join("packages") .join("packages")
.join("keyring_test_plugin"), .join("keyring_test_plugin"),
) )
@ -230,7 +230,7 @@ fn check_keyring_behaviours() {
.arg("https://test.pypi.org/simple/") .arg("https://test.pypi.org/simple/")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/?ok") .arg("https://test.pypi.org/legacy/?ok")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
.env(EnvVars::PATH, venv_bin_path(&context.venv)), @r###" .env(EnvVars::PATH, venv_bin_path(&context.venv)), @r###"
success: false success: false
exit_code: 2 exit_code: 2
@ -239,7 +239,7 @@ fn check_keyring_behaviours() {
----- stderr ----- ----- stderr -----
Publishing 1 file to https://test.pypi.org/legacy/?ok Publishing 1 file to https://test.pypi.org/legacy/?ok
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers
"### "###
); );
@ -254,7 +254,7 @@ fn check_keyring_behaviours() {
.arg("subprocess") .arg("subprocess")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/?ok") .arg("https://test.pypi.org/legacy/?ok")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
.env(EnvVars::PATH, venv_bin_path(&context.venv)), @r###" .env(EnvVars::PATH, venv_bin_path(&context.venv)), @r###"
success: false success: false
exit_code: 2 exit_code: 2
@ -264,7 +264,7 @@ fn check_keyring_behaviours() {
Publishing 1 file to https://test.pypi.org/legacy/?ok Publishing 1 file to https://test.pypi.org/legacy/?ok
warning: Using `--keyring-provider` with a password or token and no check URL has no effect warning: Using `--keyring-provider` with a password or token and no check URL has no effect
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers
"### "###
); );
@ -280,7 +280,7 @@ fn check_keyring_behaviours() {
.arg("https://test.pypi.org/simple/") .arg("https://test.pypi.org/simple/")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/?ok") .arg("https://test.pypi.org/legacy/?ok")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
.env(EnvVars::PATH, venv_bin_path(&context.venv)), @r" .env(EnvVars::PATH, venv_bin_path(&context.venv)), @r"
success: false success: false
exit_code: 2 exit_code: 2
@ -294,7 +294,7 @@ fn check_keyring_behaviours() {
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
Keyring request for dummy@https://test.pypi.org/legacy/?ok Keyring request for dummy@https://test.pypi.org/legacy/?ok
Keyring request for dummy@test.pypi.org Keyring request for dummy@test.pypi.org
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers
" "
); );
@ -308,7 +308,7 @@ fn check_keyring_behaviours() {
.arg("subprocess") .arg("subprocess")
.arg("--publish-url") .arg("--publish-url")
.arg("https://test.pypi.org/legacy/?ok") .arg("https://test.pypi.org/legacy/?ok")
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
.env(EnvVars::KEYRING_TEST_CREDENTIALS, r#"{"https://test.pypi.org/legacy/?ok": {"dummy": "dummy"}}"#) .env(EnvVars::KEYRING_TEST_CREDENTIALS, r#"{"https://test.pypi.org/legacy/?ok": {"dummy": "dummy"}}"#)
.env(EnvVars::PATH, venv_bin_path(&context.venv)), @r" .env(EnvVars::PATH, venv_bin_path(&context.venv)), @r"
success: false success: false
@ -319,7 +319,7 @@ fn check_keyring_behaviours() {
Publishing 1 file to https://test.pypi.org/legacy/?ok Publishing 1 file to https://test.pypi.org/legacy/?ok
Keyring request for dummy@https://test.pypi.org/legacy/?ok Keyring request for dummy@https://test.pypi.org/legacy/?ok
Uploading ok-1.0.0-py3-none-any.whl ([SIZE]) Uploading ok-1.0.0-py3-none-any.whl ([SIZE])
error: Failed to publish `../../scripts/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok error: Failed to publish `../../test/links/ok-1.0.0-py3-none-any.whl` to https://test.pypi.org/legacy/?ok
Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers Caused by: Upload failed with status code 403 Forbidden. Server says: 403 Username/Password authentication is no longer supported. Migrate to API Tokens or Trusted Publishers instead. See https://test.pypi.org/help/#apitoken and https://test.pypi.org/help/#trusted-publishers
" "
); );
@ -351,7 +351,7 @@ fn invalid_index() {
let ok_wheel = current_dir() let ok_wheel = current_dir()
.unwrap() .unwrap()
.join("../../scripts/links/ok-1.0.0-py3-none-any.whl"); .join("../../test/links/ok-1.0.0-py3-none-any.whl");
// No such index // No such index
uv_snapshot!(context.filters(), context.publish() uv_snapshot!(context.filters(), context.publish()
@ -537,7 +537,7 @@ async fn gitlab_trusted_publishing_pypi_id_token() {
.arg("always") .arg("always")
.arg("--publish-url") .arg("--publish-url")
.arg(format!("{}/upload", server.uri())) .arg(format!("{}/upload", server.uri()))
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
.env(EnvVars::GITLAB_CI, "true") .env(EnvVars::GITLAB_CI, "true")
.env_remove(EnvVars::GITHUB_ACTIONS) .env_remove(EnvVars::GITHUB_ACTIONS)
.env(EnvVars::PYPI_ID_TOKEN, "gitlab-oidc-jwt"), @r" .env(EnvVars::PYPI_ID_TOKEN, "gitlab-oidc-jwt"), @r"
@ -591,7 +591,7 @@ async fn gitlab_trusted_publishing_testpypi_id_token() {
.arg("always") .arg("always")
.arg("--publish-url") .arg("--publish-url")
.arg(format!("{}/upload", server.uri())) .arg(format!("{}/upload", server.uri()))
.arg("../../scripts/links/ok-1.0.0-py3-none-any.whl") .arg("../../test/links/ok-1.0.0-py3-none-any.whl")
// Emulate GitLab CI with TESTPYPI_ID_TOKEN present // Emulate GitLab CI with TESTPYPI_ID_TOKEN present
.env(EnvVars::GITLAB_CI, "true") .env(EnvVars::GITLAB_CI, "true")
.env_remove(EnvVars::GITHUB_ACTIONS) .env_remove(EnvVars::GITHUB_ACTIONS)

View File

@ -43,7 +43,7 @@ fn find_uv_bin_venv() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -52,7 +52,7 @@ fn find_uv_bin_venv() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -83,7 +83,7 @@ fn find_uv_bin_target() {
// Install in a target directory // Install in a target directory
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")) .arg(context.workspace_root.join("test/packages/fake-uv"))
.arg("--target") .arg("--target")
.arg("target"), @r" .arg("target"), @r"
success: true success: true
@ -95,7 +95,7 @@ fn find_uv_bin_target() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -129,7 +129,7 @@ fn find_uv_bin_prefix() {
let prefix = context.temp_dir.child("prefix"); let prefix = context.temp_dir.child("prefix");
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")) .arg(context.workspace_root.join("test/packages/fake-uv"))
.arg("--prefix") .arg("--prefix")
.arg(prefix.path()), @r" .arg(prefix.path()), @r"
success: true success: true
@ -141,7 +141,7 @@ fn find_uv_bin_prefix() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -183,7 +183,7 @@ fn find_uv_bin_base_prefix() {
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg("--python") .arg("--python")
.arg(base_venv.path()) .arg(base_venv.path())
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -193,7 +193,7 @@ fn find_uv_bin_base_prefix() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -239,7 +239,7 @@ fn find_uv_bin_in_ephemeral_environment() -> anyhow::Result<()> {
// We should find the binary in an ephemeral `--with` environment // We should find the binary in an ephemeral `--with` environment
uv_snapshot!(context.filters(), context.run() uv_snapshot!(context.filters(), context.run()
.arg("--with") .arg("--with")
.arg(context.workspace_root.join("scripts/packages/fake-uv")) .arg(context.workspace_root.join("test/packages/fake-uv"))
.arg("python") .arg("python")
.arg("-c") .arg("-c")
.arg(TEST_SCRIPT), @r" .arg(TEST_SCRIPT), @r"
@ -254,7 +254,7 @@ fn find_uv_bin_in_ephemeral_environment() -> anyhow::Result<()> {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -284,7 +284,7 @@ fn find_uv_bin_in_parent_of_ephemeral_environment() -> anyhow::Result<()> {
[tool.uv.sources] [tool.uv.sources]
uv = {{ path = "{}" }} uv = {{ path = "{}" }}
"#, "#,
context.workspace_root.join("scripts/packages/fake-uv").portable_display() context.workspace_root.join("test/packages/fake-uv").portable_display()
})?; })?;
// When running in an ephemeral environment, we should find the binary in the project // When running in an ephemeral environment, we should find the binary in the project
@ -305,7 +305,7 @@ fn find_uv_bin_in_parent_of_ephemeral_environment() -> anyhow::Result<()> {
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
@ -346,7 +346,7 @@ fn find_uv_bin_user_bin() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -355,7 +355,7 @@ fn find_uv_bin_user_bin() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -430,7 +430,7 @@ fn find_uv_bin_error_message() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -439,7 +439,7 @@ fn find_uv_bin_error_message() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -486,7 +486,7 @@ fn find_uv_bin_py38() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -495,7 +495,7 @@ fn find_uv_bin_py38() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -526,7 +526,7 @@ fn find_uv_bin_py39() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -535,7 +535,7 @@ fn find_uv_bin_py39() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -566,7 +566,7 @@ fn find_uv_bin_py310() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -575,7 +575,7 @@ fn find_uv_bin_py310() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -606,7 +606,7 @@ fn find_uv_bin_py311() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -615,7 +615,7 @@ fn find_uv_bin_py311() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -646,7 +646,7 @@ fn find_uv_bin_py312() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -655,7 +655,7 @@ fn find_uv_bin_py312() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -686,7 +686,7 @@ fn find_uv_bin_py313() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -695,7 +695,7 @@ fn find_uv_bin_py313() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );
@ -726,7 +726,7 @@ fn find_uv_bin_py314() {
// Install in a virtual environment // Install in a virtual environment
uv_snapshot!(context.filters(), context.pip_install() uv_snapshot!(context.filters(), context.pip_install()
.arg(context.workspace_root.join("scripts/packages/fake-uv")), @r" .arg(context.workspace_root.join("test/packages/fake-uv")), @r"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -735,7 +735,7 @@ fn find_uv_bin_py314() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv) + uv==0.1.0 (from file://[WORKSPACE]/test/packages/fake-uv)
" "
); );

View File

@ -1813,15 +1813,13 @@ fn run_with_editable() -> Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;

View File

@ -2304,7 +2304,7 @@ fn sync_extra_build_dependencies_setuptools() -> Result<()> {
fn sync_extra_build_dependencies_sources() -> Result<()> { fn sync_extra_build_dependencies_sources() -> Result<()> {
let context = TestContext::new("3.12").with_filtered_counts(); let context = TestContext::new("3.12").with_filtered_counts();
let anyio_local = context.workspace_root.join("scripts/packages/anyio_local"); let anyio_local = context.workspace_root.join("test/packages/anyio_local");
// Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time // Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time
let child = context.temp_dir.child("child"); let child = context.temp_dir.child("child");
@ -2536,7 +2536,7 @@ fn sync_extra_build_dependencies_index() -> Result<()> {
fn sync_extra_build_dependencies_sources_from_child() -> Result<()> { fn sync_extra_build_dependencies_sources_from_child() -> Result<()> {
let context = TestContext::new("3.12").with_filtered_counts(); let context = TestContext::new("3.12").with_filtered_counts();
let anyio_local = context.workspace_root.join("scripts/packages/anyio_local"); let anyio_local = context.workspace_root.join("test/packages/anyio_local");
// Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time // Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time
let child = context.temp_dir.child("child"); let child = context.temp_dir.child("child");
@ -2882,7 +2882,7 @@ fn sync_relative_wheel() -> Result<()> {
context.temp_dir.child("wheels").create_dir_all()?; context.temp_dir.child("wheels").create_dir_all()?;
fs_err::copy( fs_err::copy(
"../../scripts/links/ok-1.0.0-py3-none-any.whl", "../../test/links/ok-1.0.0-py3-none-any.whl",
context.temp_dir.join("wheels/ok-1.0.0-py3-none-any.whl"), context.temp_dir.join("wheels/ok-1.0.0-py3-none-any.whl"),
)?; )?;
@ -5856,7 +5856,7 @@ fn sync_extra_build_dependencies_script() -> Result<()> {
#[test] #[test]
fn sync_extra_build_dependencies_script_sources() -> Result<()> { fn sync_extra_build_dependencies_script_sources() -> Result<()> {
let context = TestContext::new("3.12").with_filtered_counts(); let context = TestContext::new("3.12").with_filtered_counts();
let anyio_local = context.workspace_root.join("scripts/packages/anyio_local"); let anyio_local = context.workspace_root.join("test/packages/anyio_local");
// Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time // Write a test package that arbitrarily requires `anyio` at a specific _path_ at build time
let child = context.temp_dir.child("child"); let child = context.temp_dir.child("child");
@ -10263,7 +10263,7 @@ fn sync_build_tag() -> Result<()> {
// Populate the `--find-links` entries. // Populate the `--find-links` entries.
fs_err::create_dir_all(context.temp_dir.join("links"))?; fs_err::create_dir_all(context.temp_dir.join("links"))?;
for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { for entry in fs_err::read_dir(context.workspace_root.join("test/links"))? {
let entry = entry?; let entry = entry?;
let path = entry.path(); let path = entry.path();
if path if path
@ -10538,7 +10538,7 @@ fn find_links_relative_in_config_works_from_subdir() -> Result<()> {
let wheel_src = context let wheel_src = context
.workspace_root .workspace_root
.join("scripts/links/ok-1.0.0-py3-none-any.whl"); .join("test/links/ok-1.0.0-py3-none-any.whl");
let wheel_dst = packages.child("ok-1.0.0-py3-none-any.whl"); let wheel_dst = packages.child("ok-1.0.0-py3-none-any.whl");
fs_err::copy(&wheel_src, &wheel_dst)?; fs_err::copy(&wheel_src, &wheel_dst)?;

View File

@ -295,7 +295,7 @@ fn tool_install_with_editable() -> Result<()> {
let bin_dir = context.temp_dir.child("bin"); let bin_dir = context.temp_dir.child("bin");
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
@ -597,7 +597,7 @@ fn tool_install_editable() {
// Install `black` as an editable package. // Install `black` as an editable package.
uv_snapshot!(context.filters(), context.tool_install() uv_snapshot!(context.filters(), context.tool_install()
.arg("-e") .arg("-e")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str()) .env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()) .env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str())
.env(EnvVars::PATH, bin_dir.as_os_str()), @r###" .env(EnvVars::PATH, bin_dir.as_os_str()), @r###"
@ -609,7 +609,7 @@ fn tool_install_editable() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
Installed 1 executable: black Installed 1 executable: black
"###); "###);
@ -649,7 +649,7 @@ fn tool_install_editable() {
// We should have a tool receipt // We should have a tool receipt
assert_snapshot!(fs_err::read_to_string(tool_dir.join("black").join("uv-receipt.toml")).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(tool_dir.join("black").join("uv-receipt.toml")).unwrap(), @r###"
[tool] [tool]
requirements = [{ name = "black", editable = "[WORKSPACE]/scripts/packages/black_editable" }] requirements = [{ name = "black", editable = "[WORKSPACE]/test/packages/black_editable" }]
entrypoints = [ entrypoints = [
{ name = "black", install-path = "[TEMP_DIR]/bin/black", from = "black" }, { name = "black", install-path = "[TEMP_DIR]/bin/black", from = "black" },
] ]
@ -717,7 +717,7 @@ fn tool_install_editable() {
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
- black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) - black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
+ black==24.2.0 + black==24.2.0
+ click==8.1.7 + click==8.1.7
+ mypy-extensions==1.0.0 + mypy-extensions==1.0.0
@ -898,7 +898,7 @@ fn tool_install_editable_from() {
.arg("black") .arg("black")
.arg("-e") .arg("-e")
.arg("--from") .arg("--from")
.arg(context.workspace_root.join("scripts/packages/black_editable")) .arg(context.workspace_root.join("test/packages/black_editable"))
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str()) .env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()) .env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str())
.env(EnvVars::PATH, bin_dir.as_os_str()), @r###" .env(EnvVars::PATH, bin_dir.as_os_str()), @r###"
@ -910,7 +910,7 @@ fn tool_install_editable_from() {
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ black==0.1.0 (from file://[WORKSPACE]/scripts/packages/black_editable) + black==0.1.0 (from file://[WORKSPACE]/test/packages/black_editable)
Installed 1 executable: black Installed 1 executable: black
"###); "###);
@ -950,7 +950,7 @@ fn tool_install_editable_from() {
// We should have a tool receipt // We should have a tool receipt
assert_snapshot!(fs_err::read_to_string(tool_dir.join("black").join("uv-receipt.toml")).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(tool_dir.join("black").join("uv-receipt.toml")).unwrap(), @r###"
[tool] [tool]
requirements = [{ name = "black", editable = "[WORKSPACE]/scripts/packages/black_editable" }] requirements = [{ name = "black", editable = "[WORKSPACE]/test/packages/black_editable" }]
entrypoints = [ entrypoints = [
{ name = "black", install-path = "[TEMP_DIR]/bin/black", from = "black" }, { name = "black", install-path = "[TEMP_DIR]/bin/black", from = "black" },
] ]
@ -4394,7 +4394,7 @@ fn tool_install_find_links() {
// Run with `--find-links`. // Run with `--find-links`.
uv_snapshot!(context.filters(), context.tool_run() uv_snapshot!(context.filters(), context.tool_run()
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")) .arg(context.workspace_root.join("test/links/"))
.arg("basic-app") .arg("basic-app")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str()) .env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r" .env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
@ -4413,7 +4413,7 @@ fn tool_install_find_links() {
// Install with `--find-links`. // Install with `--find-links`.
uv_snapshot!(context.filters(), context.tool_install() uv_snapshot!(context.filters(), context.tool_install()
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")) .arg(context.workspace_root.join("test/links/"))
.arg("basic-app") .arg("basic-app")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str()) .env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()) .env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str())
@ -4464,7 +4464,7 @@ fn tool_install_find_links() {
uv_snapshot!(context.filters(), context.tool_run() uv_snapshot!(context.filters(), context.tool_run()
.arg("--offline") .arg("--offline")
.arg("--find-links") .arg("--find-links")
.arg(context.workspace_root.join("scripts/links/")) .arg(context.workspace_root.join("test/links/"))
.arg("basic-app") .arg("basic-app")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str()) .env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r" .env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"

View File

@ -1381,15 +1381,13 @@ fn tool_run_csv_with_shorthand() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -1445,15 +1443,13 @@ fn tool_run_csv_with() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -1509,15 +1505,13 @@ fn tool_run_csv_with() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -1573,15 +1567,13 @@ fn tool_run_repeated_with() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -1639,15 +1631,13 @@ fn tool_run_repeated_with() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -1704,15 +1694,13 @@ fn tool_run_with_editable() -> anyhow::Result<()> {
let anyio_local = context.temp_dir.child("src").child("anyio_local"); let anyio_local = context.temp_dir.child("src").child("anyio_local");
copy_dir_all( copy_dir_all(
context.workspace_root.join("scripts/packages/anyio_local"), context.workspace_root.join("test/packages/anyio_local"),
&anyio_local, &anyio_local,
)?; )?;
let black_editable = context.temp_dir.child("src").child("black_editable"); let black_editable = context.temp_dir.child("src").child("black_editable");
copy_dir_all( copy_dir_all(
context context.workspace_root.join("test/packages/black_editable"),
.workspace_root
.join("scripts/packages/black_editable"),
&black_editable, &black_editable,
)?; )?;
@ -3419,7 +3407,7 @@ fn tool_run_windows_dotted_package_name() -> anyhow::Result<()> {
let bin_dir = context.temp_dir.child("bin"); let bin_dir = context.temp_dir.child("bin");
// Copy the test package to a temporary location // Copy the test package to a temporary location
let workspace_packages = context.workspace_root.join("scripts").join("packages"); let workspace_packages = context.workspace_root.join("test").join("packages");
let test_package_source = workspace_packages.join("package.name.with.dots"); let test_package_source = workspace_packages.join("package.name.with.dots");
let test_package_dest = context.temp_dir.child("package.name.with.dots"); let test_package_dest = context.temp_dir.child("package.name.with.dots");

View File

@ -19,7 +19,7 @@ fn workspaces_dir() -> PathBuf {
.unwrap() .unwrap()
.parent() .parent()
.unwrap() .unwrap()
.join("scripts") .join("test")
.join("workspaces") .join("workspaces")
} }

View File

@ -69,7 +69,7 @@ fn workspace_metadata_from_member() -> Result<()> {
let albatross_workspace = context let albatross_workspace = context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-root-workspace"); .join("test/workspaces/albatross-root-workspace");
copy_dir_ignore(albatross_workspace, &workspace)?; copy_dir_ignore(albatross_workspace, &workspace)?;

View File

@ -46,7 +46,7 @@ fn workspace_list_root_workspace() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-root-workspace"), .join("test/workspaces/albatross-root-workspace"),
&workspace, &workspace,
)?; )?;
@ -75,7 +75,7 @@ fn workspace_list_virtual_workspace() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-virtual-workspace"), .join("test/workspaces/albatross-virtual-workspace"),
&workspace, &workspace,
)?; )?;
@ -104,7 +104,7 @@ fn workspace_list_from_member() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-root-workspace"), .join("test/workspaces/albatross-root-workspace"),
&workspace, &workspace,
)?; )?;
@ -208,7 +208,7 @@ fn workspace_list_with_excluded() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-project-in-excluded"), .join("test/workspaces/albatross-project-in-excluded"),
&workspace, &workspace,
)?; )?;

View File

@ -46,7 +46,7 @@ fn workspace_metadata_root_workspace() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-root-workspace"), .join("test/workspaces/albatross-root-workspace"),
&workspace, &workspace,
)?; )?;
@ -92,7 +92,7 @@ fn workspace_metadata_virtual_workspace() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-virtual-workspace"), .join("test/workspaces/albatross-virtual-workspace"),
&workspace, &workspace,
)?; )?;
@ -138,7 +138,7 @@ fn workspace_metadata_from_member() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-root-workspace"), .join("test/workspaces/albatross-root-workspace"),
&workspace, &workspace,
)?; )?;
@ -274,7 +274,7 @@ fn workspace_metadata_with_excluded() -> Result<()> {
copy_dir_ignore( copy_dir_ignore(
context context
.workspace_root .workspace_root
.join("scripts/workspaces/albatross-project-in-excluded"), .join("test/workspaces/albatross-project-in-excluded"),
&workspace, &workspace,
)?; )?;

View File

@ -2,9 +2,9 @@ target-version = "py312"
exclude = [ exclude = [
"crates/uv-virtualenv/src/activator/activate_this.py", "crates/uv-virtualenv/src/activator/activate_this.py",
"crates/uv-virtualenv/src/_virtualenv.py", "crates/uv-virtualenv/src/_virtualenv.py",
"ecosystem", "test/ecosystem",
"scripts/workspaces", "test/workspaces",
"scripts/packages", "test/packages",
] ]
[lint] [lint]

Some files were not shown because too many files have changed in this diff Show More