@@ -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 ), # noqa: ARG005
109
+ )
110
+
111
+
112
+ @pytest .mark .usefixtures ("mock_get_interpreter" )
113
+ def test_returns_first_python_specified_when_only_env_var_one_is_specified (mocker , monkeypatch , session_app_data ):
114
+ monkeypatch .setenv ("VIRTUALENV_PYTHON" , "python_from_env_var" )
115
+ builtin = Builtin (
116
+ Namespace (app_data = session_app_data , try_first_with = [], python = ["python_from_env_var" ], env = os .environ ),
117
+ )
118
+
119
+ result = builtin .run ()
120
+
121
+ assert result == mocker .sentinel .python_from_env_var
122
+
123
+
124
+ @pytest .mark .usefixtures ("mock_get_interpreter" )
125
+ def test_returns_second_python_specified_when_more_than_one_is_specified_and_env_var_is_specified (
126
+ 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
+
138
+ result = builtin .run ()
139
+
140
+ assert result == mocker .sentinel .python_from_cli
141
+
142
+
143
+ @pytest .mark .usefixtures ("mock_get_interpreter" )
144
+ def test_returns_first_python_specified_when_no_env_var_is_specified (mocker , monkeypatch , session_app_data ):
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