1
1
"""
2
2
tests specific to "pip install --user"
3
3
"""
4
+ import os
4
5
import textwrap
5
6
from os .path import curdir , isdir , isfile
6
7
from pathlib import Path
7
8
8
9
import pytest
9
10
10
11
from tests .lib import pyversion # noqa: F401
11
- from tests .lib import PipTestEnvironment , TestData , need_svn
12
+ from tests .lib import (
13
+ PipTestEnvironment ,
14
+ TestData ,
15
+ create_basic_wheel_for_package ,
16
+ need_svn ,
17
+ )
12
18
from tests .lib .local_repos import local_checkout
13
19
from tests .lib .venv import VirtualEnvironment
14
20
@@ -142,7 +148,6 @@ def test_install_user_conflict_in_usersite(
142
148
result2 .did_create (egg_info_folder )
143
149
assert not isfile (initools_v3_file ), initools_v3_file
144
150
145
- @pytest .mark .network
146
151
@pytest .mark .incompatible_with_test_venv
147
152
def test_install_user_conflict_in_globalsite (
148
153
self , virtualenv : VirtualEnvironment , script : PipTestEnvironment
@@ -151,30 +156,41 @@ def test_install_user_conflict_in_globalsite(
151
156
Test user install with conflict in global site ignores site and
152
157
installs to usersite
153
158
"""
154
- _patch_dist_in_site_packages (virtualenv )
159
+ create_basic_wheel_for_package (script , "initools" , "0.1" )
160
+ create_basic_wheel_for_package (script , "initools" , "0.2" )
155
161
156
- script . pip ( "install" , "INITools==0.2" , "--no-binary=:all:" )
162
+ _patch_dist_in_site_packages ( virtualenv )
157
163
158
- result2 = script .pip ("install" , "--user" , "INITools==0.1" , "--no-binary=:all:" )
164
+ script .pip (
165
+ "install" ,
166
+ "--no-index" ,
167
+ "--find-links" ,
168
+ script .scratch_path ,
169
+ "initools==0.2" ,
170
+ )
171
+ result2 = script .pip (
172
+ "install" ,
173
+ "--no-index" ,
174
+ "--find-links" ,
175
+ script .scratch_path ,
176
+ "--user" ,
177
+ "initools==0.1" ,
178
+ )
159
179
160
180
# usersite has 0.1
161
- # we still test for egg-info because no-binary implies setup.py install
162
- egg_info_folder = script .user_site / f"INITools-0.1-py{ pyversion } .egg-info"
181
+ dist_info_folder = script .user_site / "initools-0.1.dist-info"
163
182
initools_folder = script .user_site / "initools"
164
- result2 .did_create (egg_info_folder )
183
+ result2 .did_create (dist_info_folder )
165
184
result2 .did_create (initools_folder )
166
185
167
186
# site still has 0.2 (can't look in result1; have to check)
168
- egg_info_folder = (
169
- script .base_path
170
- / script .site_packages
171
- / f"INITools-0.2-py{ pyversion } .egg-info"
187
+ dist_info_folder = (
188
+ script .base_path / script .site_packages / "initools-0.2.dist-info"
172
189
)
173
190
initools_folder = script .base_path / script .site_packages / "initools"
174
- assert isdir (egg_info_folder )
191
+ assert isdir (dist_info_folder )
175
192
assert isdir (initools_folder )
176
193
177
- @pytest .mark .network
178
194
@pytest .mark .incompatible_with_test_venv
179
195
def test_upgrade_user_conflict_in_globalsite (
180
196
self , virtualenv : VirtualEnvironment , script : PipTestEnvironment
@@ -183,31 +199,42 @@ def test_upgrade_user_conflict_in_globalsite(
183
199
Test user install/upgrade with conflict in global site ignores site and
184
200
installs to usersite
185
201
"""
202
+ create_basic_wheel_for_package (script , "initools" , "0.2" )
203
+ create_basic_wheel_for_package (script , "initools" , "0.3.1" )
204
+
186
205
_patch_dist_in_site_packages (virtualenv )
187
206
188
- script .pip ("install" , "INITools==0.2" , "--no-binary=:all:" )
207
+ script .pip (
208
+ "install" ,
209
+ "--no-index" ,
210
+ "--find-links" ,
211
+ script .scratch_path ,
212
+ "initools==0.2" ,
213
+ )
189
214
result2 = script .pip (
190
- "install" , "--user" , "--upgrade" , "INITools" , "--no-binary=:all:"
215
+ "install" ,
216
+ "--no-index" ,
217
+ "--find-links" ,
218
+ script .scratch_path ,
219
+ "--user" ,
220
+ "--upgrade" ,
221
+ "initools" ,
191
222
)
192
223
193
224
# usersite has 0.3.1
194
- # we still test for egg-info because no-binary implies setup.py install
195
- egg_info_folder = script .user_site / f"INITools-0.3.1-py{ pyversion } .egg-info"
225
+ dist_info_folder = script .user_site / "initools-0.3.1.dist-info"
196
226
initools_folder = script .user_site / "initools"
197
- result2 .did_create (egg_info_folder )
227
+ result2 .did_create (dist_info_folder )
198
228
result2 .did_create (initools_folder )
199
229
200
230
# site still has 0.2 (can't look in result1; have to check)
201
- egg_info_folder = (
202
- script .base_path
203
- / script .site_packages
204
- / f"INITools-0.2-py{ pyversion } .egg-info"
231
+ dist_info_folder = (
232
+ script .base_path / script .site_packages / "initools-0.2.dist-info"
205
233
)
206
234
initools_folder = script .base_path / script .site_packages / "initools"
207
- assert isdir (egg_info_folder ), result2 .stdout
235
+ assert isdir (dist_info_folder ), result2 .stdout
208
236
assert isdir (initools_folder )
209
237
210
- @pytest .mark .network
211
238
@pytest .mark .incompatible_with_test_venv
212
239
def test_install_user_conflict_in_globalsite_and_usersite (
213
240
self , virtualenv : VirtualEnvironment , script : PipTestEnvironment
@@ -216,34 +243,54 @@ def test_install_user_conflict_in_globalsite_and_usersite(
216
243
Test user install with conflict in globalsite and usersite ignores
217
244
global site and updates usersite.
218
245
"""
219
- _patch_dist_in_site_packages (virtualenv )
246
+ initools_v3_file_name = os .path .join ("initools" , "configparser.py" )
247
+ create_basic_wheel_for_package (script , "initools" , "0.1" )
248
+ create_basic_wheel_for_package (script , "initools" , "0.2" )
249
+ create_basic_wheel_for_package (
250
+ script ,
251
+ "initools" ,
252
+ "0.3" ,
253
+ extra_files = {initools_v3_file_name : "# Hi!" },
254
+ )
220
255
221
- script .pip ("install" , "INITools==0.2" , "--no-binary=:all:" )
222
- script .pip ("install" , "--user" , "INITools==0.3" , "--no-binary=:all:" )
256
+ _patch_dist_in_site_packages (virtualenv )
223
257
224
- result3 = script .pip ("install" , "--user" , "INITools==0.1" , "--no-binary=:all:" )
258
+ script .pip (
259
+ "install" ,
260
+ "--no-index" ,
261
+ "--find-links" ,
262
+ script .scratch_path ,
263
+ "initools==0.2" ,
264
+ )
265
+ script .pip (
266
+ "install" ,
267
+ "--no-index" ,
268
+ "--find-links" ,
269
+ script .scratch_path ,
270
+ "--user" ,
271
+ "initools==0.3" ,
272
+ )
273
+ result3 = script .pip (
274
+ "install" ,
275
+ "--no-index" ,
276
+ "--find-links" ,
277
+ script .scratch_path ,
278
+ "--user" ,
279
+ "initools==0.1" ,
280
+ )
225
281
226
282
# usersite has 0.1
227
- # we still test for egg-info because no-binary implies setup.py install
228
- egg_info_folder = script .user_site / f"INITools-0.1-py{ pyversion } .egg-info"
229
- initools_v3_file = (
230
- # file only in 0.3
231
- script .base_path
232
- / script .user_site
233
- / "initools"
234
- / "configparser.py"
235
- )
236
- result3 .did_create (egg_info_folder )
283
+ dist_info_folder = script .user_site / "initools-0.1.dist-info"
284
+ result3 .did_create (dist_info_folder )
285
+ initools_v3_file = script .base_path / script .user_site / initools_v3_file_name
237
286
assert not isfile (initools_v3_file ), initools_v3_file
238
287
239
288
# site still has 0.2 (can't just look in result1; have to check)
240
- egg_info_folder = (
241
- script .base_path
242
- / script .site_packages
243
- / f"INITools-0.2-py{ pyversion } .egg-info"
289
+ dist_info_folder = (
290
+ script .base_path / script .site_packages / "initools-0.2.dist-info"
244
291
)
245
292
initools_folder = script .base_path / script .site_packages / "initools"
246
- assert isdir (egg_info_folder )
293
+ assert isdir (dist_info_folder )
247
294
assert isdir (initools_folder )
248
295
249
296
@pytest .mark .network
0 commit comments