3737 setup_venv_pex_process ,
3838)
3939from pants .backend .python .util_rules .pex_from_targets import RequirementsPexRequest
40- from pants .backend .python .util_rules .pex_requirements import PexRequirements
40+ from pants .backend .python .util_rules .pex_requirements import PexRequirements , Resolve
4141from pants .backend .python .util_rules .python_sources import (
4242 PythonSourceFilesRequest ,
4343 prepare_python_sources ,
@@ -294,7 +294,24 @@ async def setup_pytest_for_target(
294294 requirements_pex_get = create_pex (** implicitly (RequirementsPexRequest (addresses )))
295295
296296 pytest_pex_get = None
297- if not use_target_resolve_for_pytest :
297+ if use_target_resolve_for_pytest :
298+ # We still need to create a PEX with pytest requirements from the target resolve
299+ # just need to make sure the versions are coming from the target resolve.
300+ pytest_req_strings = pytest .requirements if pytest .requirements else pytest .default_requirements
301+ pytest_requirements = PexRequirements (
302+ pytest_req_strings ,
303+ from_superset = Resolve (target_resolve , use_entire_lockfile = False ),
304+ description_of_origin = "pytest requirements from target resolve" ,
305+ )
306+ pytest_pex_get = create_pex (
307+ PexRequest (
308+ output_filename = "pytest_from_target_resolve.pex" ,
309+ internal_only = True ,
310+ requirements = pytest_requirements ,
311+ interpreter_constraints = interpreter_constraints ,
312+ )
313+ )
314+ else :
298315 pytest_pex_get = create_pex (
299316 pytest .to_pex_request (interpreter_constraints = interpreter_constraints )
300317 )
@@ -316,37 +333,21 @@ async def setup_pytest_for_target(
316333 EnvironmentVarsRequest (request .metadata .extra_env_vars ), ** implicitly ()
317334 )
318335
319- if pytest_pex_get is not None :
320- (
321- pytest_pex ,
322- requirements_pex ,
323- prepared_sources ,
324- field_set_source_files ,
325- field_set_extra_env ,
326- extra_output_directory_digest ,
327- ) = await concurrently (
328- pytest_pex_get ,
329- requirements_pex_get ,
330- prepared_sources_get ,
331- field_set_source_files_get ,
332- field_set_extra_env_get ,
333- extra_output_directory_digest_get ,
334- )
335- else :
336- pytest_pex = None
337- (
338- requirements_pex ,
339- prepared_sources ,
340- field_set_source_files ,
341- field_set_extra_env ,
342- extra_output_directory_digest ,
343- ) = await concurrently (
344- requirements_pex_get ,
345- prepared_sources_get ,
346- field_set_source_files_get ,
347- field_set_extra_env_get ,
348- extra_output_directory_digest_get ,
349- )
336+ (
337+ pytest_pex ,
338+ requirements_pex ,
339+ prepared_sources ,
340+ field_set_source_files ,
341+ field_set_extra_env ,
342+ extra_output_directory_digest ,
343+ ) = await concurrently (
344+ pytest_pex_get ,
345+ requirements_pex_get ,
346+ prepared_sources_get ,
347+ field_set_source_files_get ,
348+ field_set_extra_env_get ,
349+ extra_output_directory_digest_get ,
350+ )
350351
351352 local_dists = await build_local_dists (
352353 LocalDistsPexRequest (
@@ -356,9 +357,7 @@ async def setup_pytest_for_target(
356357 )
357358 )
358359
359- pex_path_components : list [Pex ] = [requirements_pex , local_dists .pex , * request .additional_pexes ]
360- if pytest_pex is not None :
361- pex_path_components .insert (0 , pytest_pex )
360+ pex_path_components : list [Pex ] = [pytest_pex , requirements_pex , local_dists .pex , * request .additional_pexes ]
362361
363362 pytest_runner_pex_get = create_venv_pex (
364363 ** implicitly (
0 commit comments