@@ -99,3 +99,54 @@ def test_discovery_fallback_ok(session_app_data, caplog):
99
99
assert result .executable == sys .executable , caplog .text
100
100
101
101
assert "accepted" in caplog .text
102
+
103
+
104
+ @pytest .fixture
105
+ def mock_get_interpreter (mocker ):
106
+ return mocker .patch (
107
+ "virtualenv.discovery.builtin.get_interpreter" ,
108
+ lambda key , * args , ** kwargs : getattr (mocker .sentinel , key )
109
+ )
110
+
111
+
112
+ def test_returns_first_python_specified_when_only_env_var_one_is_specified (
113
+ mock_get_interpreter , mocker , monkeypatch , session_app_data
114
+ ):
115
+ monkeypatch .setenv ("VIRTUALENV_PYTHON" , "python_from_env_var" )
116
+ builtin = Builtin (
117
+ Namespace (app_data = session_app_data , try_first_with = [], python = ["python_from_env_var" ], env = os .environ ),
118
+ )
119
+
120
+ result = builtin .run ()
121
+
122
+ assert result == mocker .sentinel .python_from_env_var
123
+
124
+
125
+ def test_returns_second_python_specified_when_more_than_one_is_specified_and_env_var_is_specified (
126
+ mock_get_interpreter , mocker , monkeypatch , session_app_data
127
+ ):
128
+ monkeypatch .setenv ("VIRTUALENV_PYTHON" , "python_from_env_var" )
129
+ builtin = Builtin (
130
+ Namespace (
131
+ app_data = session_app_data ,
132
+ try_first_with = [],
133
+ python = ["python_from_env_var" , "python_from_cli" ],
134
+ env = os .environ ),
135
+ )
136
+
137
+ result = builtin .run ()
138
+
139
+ assert result == mocker .sentinel .python_from_cli
140
+
141
+
142
+ def test_returns_first_python_specified_when_no_env_var_is_specified (
143
+ mock_get_interpreter , mocker , monkeypatch , session_app_data
144
+ ):
145
+ monkeypatch .delenv ("VIRTUALENV_PYTHON" , raising = False )
146
+ builtin = Builtin (
147
+ Namespace (app_data = session_app_data , try_first_with = [], python = ["python_from_cli" ], env = os .environ ),
148
+ )
149
+
150
+ result = builtin .run ()
151
+
152
+ assert result == mocker .sentinel .python_from_cli
0 commit comments