99import isolate
1010import pytest
1111from isolate .backends import BaseEnvironment , EnvironmentCreationError
12- from isolate .backends .common import get_executable , sha256_digest_of
12+ from isolate .backends .common import Requirements , get_executable , sha256_digest_of
1313from isolate .backends .conda import CondaEnvironment
1414from isolate .backends .local import LocalPythonEnvironment
1515from isolate .backends .pyenv import PyenvEnvironment , _get_pyenv_executable
@@ -402,7 +402,7 @@ def test_layered_requirements_in_key(self, tmp_path):
402402 "requirements" : [["pyjokes==0.6.0" ], ["pip==23.0.1" ]],
403403 },
404404 )
405- assert base .key = = layered .key
405+ assert base .key ! = layered .key
406406
407407 def test_layered_requirements_order_affects_key (self , tmp_path ):
408408 first = self .get_environment (
@@ -438,7 +438,7 @@ def cli_run(args):
438438 )
439439
440440 environment = VirtualPythonEnvironment (
441- requirements = [["pip==23.0.1" ], ["pyjokes==0.6.0" ]],
441+ requirements = Requirements . from_raw ( [["pip==23.0.1" ], ["pyjokes==0.6.0" ]]) ,
442442 )
443443 environment .apply_settings (IsolateSettings (Path (tmp_path )))
444444 environment .create ()
@@ -459,6 +459,28 @@ def test_try_using_uv(self, tmp_path):
459459 assert pyjokes_version == "0.5.0"
460460
461461
462+ class TestRequirements :
463+ def test_from_raw_single_layer (self ):
464+ requirements = Requirements .from_raw (["a" , "b" ])
465+ assert requirements .layers == [["a" , "b" ]]
466+
467+ def test_from_raw_multi_layer (self ):
468+ requirements = Requirements .from_raw ([["a" ], ["b" , "c" ]])
469+ assert requirements .layers == [["a" ], ["b" , "c" ]]
470+
471+ def test_from_raw_none (self ):
472+ requirements = Requirements .from_raw (None )
473+ assert requirements .layers == []
474+
475+ def test_keys_single_layer_backward_compat (self ):
476+ requirements = Requirements .from_raw (["a" , "b" ])
477+ assert requirements .keys () == ["a" , "b" ]
478+
479+ def test_keys_multi_layer_prefixes (self ):
480+ requirements = Requirements .from_raw ([["a" ], ["b" , "c" ]])
481+ assert requirements .keys () == ["layer0:\n a" , "layer1:\n b\n c" ]
482+
483+
462484# Since mamba is an external dependency, we'll skip tests using it
463485# if it is not installed.
464486try :
@@ -933,7 +955,7 @@ def test_pyenv_environment(python_version, tmp_path):
933955@pytest .mark .skipif (not IS_PYENV_AVAILABLE , reason = "Pyenv is not available" )
934956def test_virtual_env_custom_python_version_with_pyenv (tmp_path , monkeypatch ):
935957 pyjokes_env = VirtualPythonEnvironment (
936- requirements = ["pyjokes==0.6.0" ],
958+ requirements = Requirements . from_raw ( ["pyjokes==0.6.0" ]) ,
937959 python_version = "3.9" ,
938960 )
939961
0 commit comments