@@ -84,6 +84,12 @@ def pytest_addoption(parser: Parser) -> None:
84
84
default = None ,
85
85
help = "use given proxy in session network tests" ,
86
86
)
87
+ parser .addoption (
88
+ "--use-zipapp" ,
89
+ action = "store" ,
90
+ default = None ,
91
+ help = "use given pip zipapp when running pip in tests" ,
92
+ )
87
93
88
94
89
95
def pytest_collection_modifyitems (config : Config , items : List [pytest .Function ]) -> None :
@@ -487,7 +493,7 @@ def with_wheel(virtualenv: VirtualEnvironment, wheel_install: Path) -> None:
487
493
488
494
class ScriptFactory (Protocol ):
489
495
def __call__ (
490
- self , tmpdir : Path , virtualenv : Optional [VirtualEnvironment ] = None
496
+ self , tmpdir : Path , virtualenv : Optional [VirtualEnvironment ] = None , zipapp : Optional [ str ] = None
491
497
) -> PipTestEnvironment :
492
498
...
493
499
@@ -497,7 +503,7 @@ def script_factory(
497
503
virtualenv_factory : Callable [[Path ], VirtualEnvironment ], deprecated_python : bool
498
504
) -> ScriptFactory :
499
505
def factory (
500
- tmpdir : Path , virtualenv : Optional [VirtualEnvironment ] = None
506
+ tmpdir : Path , virtualenv : Optional [VirtualEnvironment ] = None , zipapp : Optional [ str ] = None ,
501
507
) -> PipTestEnvironment :
502
508
if virtualenv is None :
503
509
virtualenv = virtualenv_factory (tmpdir .joinpath ("venv" ))
@@ -516,13 +522,16 @@ def factory(
516
522
assert_no_temp = True ,
517
523
# Deprecated python versions produce an extra deprecation warning
518
524
pip_expect_warning = deprecated_python ,
525
+ # Tell the Test Environment if we want to run pip via a zipapp
526
+ zipapp = zipapp ,
519
527
)
520
528
521
529
return factory
522
530
523
531
524
532
@pytest .fixture
525
533
def script (
534
+ request : pytest .FixtureRequest ,
526
535
tmpdir : Path ,
527
536
virtualenv : VirtualEnvironment ,
528
537
script_factory : ScriptFactory ,
@@ -533,7 +542,8 @@ def script(
533
542
test function. The returned object is a
534
543
``tests.lib.PipTestEnvironment``.
535
544
"""
536
- return script_factory (tmpdir .joinpath ("workspace" ), virtualenv )
545
+ zipapp = request .config .getoption ("--use-zipapp" )
546
+ return script_factory (tmpdir .joinpath ("workspace" ), virtualenv , zipapp )
537
547
538
548
539
549
@pytest .fixture (scope = "session" )
0 commit comments