@@ -3482,6 +3482,89 @@ fn no_install_project_no_build() -> Result<()> {
3482
3482
Ok ( ( ) )
3483
3483
}
3484
3484
3485
+ /// Ensure that `--no-build` isn't enforced for projects that aren't installed in the first place.
3486
+ #[ test]
3487
+ fn virtual_no_build ( ) -> Result < ( ) > {
3488
+ let context = TestContext :: new ( "3.12" ) ;
3489
+
3490
+ let pyproject_toml = context. temp_dir . child ( "pyproject.toml" ) ;
3491
+ pyproject_toml. write_str (
3492
+ r#"
3493
+ [project]
3494
+ name = "project"
3495
+ version = "0.1.0"
3496
+ requires-python = ">=3.12"
3497
+ dependencies = ["anyio==3.7.0"]
3498
+ "# ,
3499
+ ) ?;
3500
+
3501
+ // Generate a lockfile.
3502
+ context. lock ( ) . assert ( ) . success ( ) ;
3503
+
3504
+ // `--no-build` should not raise an error, since we don't install virtual projects.
3505
+ uv_snapshot ! ( context. filters( ) , context. sync( ) . arg( "--no-build" ) , @r"
3506
+ success: true
3507
+ exit_code: 0
3508
+ ----- stdout -----
3509
+
3510
+ ----- stderr -----
3511
+ Resolved 4 packages in [TIME]
3512
+ Prepared 3 packages in [TIME]
3513
+ Installed 3 packages in [TIME]
3514
+ + anyio==3.7.0
3515
+ + idna==3.6
3516
+ + sniffio==1.3.1
3517
+ " ) ;
3518
+
3519
+ Ok ( ( ) )
3520
+ }
3521
+
3522
+ /// Ensure that `--no-build` isn't enforced for projects that aren't installed in the first place.
3523
+ #[ test]
3524
+ fn virtual_no_build_dynamic ( ) -> Result < ( ) > {
3525
+ let context = TestContext :: new ( "3.12" ) ;
3526
+
3527
+ let pyproject_toml = context. temp_dir . child ( "pyproject.toml" ) ;
3528
+ pyproject_toml. write_str (
3529
+ r#"
3530
+ [project]
3531
+ name = "project"
3532
+ version = "0.1.0"
3533
+ requires-python = ">=3.12"
3534
+ dynamic = ["dependencies"]
3535
+
3536
+ [tool.setuptools.dynamic]
3537
+ dependencies = {file = ["requirements.txt"]}
3538
+ "# ,
3539
+ ) ?;
3540
+
3541
+ context
3542
+ . temp_dir
3543
+ . child ( "requirements.txt" )
3544
+ . write_str ( "anyio==3.7.0" ) ?;
3545
+
3546
+ // Generate a lockfile.
3547
+ context. lock ( ) . assert ( ) . success ( ) ;
3548
+
3549
+ // `--no-build` should not raise an error, since we don't install virtual projects (and we even
3550
+ // allow building dynamic metadata under `--no-build`).
3551
+ uv_snapshot ! ( context. filters( ) , context. sync( ) . arg( "--no-build" ) , @r"
3552
+ success: true
3553
+ exit_code: 0
3554
+ ----- stdout -----
3555
+
3556
+ ----- stderr -----
3557
+ Resolved 4 packages in [TIME]
3558
+ Prepared 3 packages in [TIME]
3559
+ Installed 3 packages in [TIME]
3560
+ + anyio==3.7.0
3561
+ + idna==3.6
3562
+ + sniffio==1.3.1
3563
+ " ) ;
3564
+
3565
+ Ok ( ( ) )
3566
+ }
3567
+
3485
3568
/// Convert from a package to a virtual project.
3486
3569
#[ test]
3487
3570
fn convert_to_virtual ( ) -> Result < ( ) > {
0 commit comments