@@ -243,15 +243,15 @@ def assert_permission(self, path, mode):
243
243
target_mode = os .stat (path ).st_mode & 0o777
244
244
assert (target_mode & mode ) == mode , oct (target_mode )
245
245
246
- def assert_installed (self ):
246
+ def assert_installed (self , expected_permission ):
247
247
# lib
248
248
assert os .path .isdir (
249
249
os .path .join (self .scheme .purelib , 'sample' ))
250
250
# dist-info
251
251
metadata = os .path .join (self .dest_dist_info , 'METADATA' )
252
- self .assert_permission (metadata , 0o644 )
252
+ self .assert_permission (metadata , expected_permission )
253
253
record = os .path .join (self .dest_dist_info , 'RECORD' )
254
- self .assert_permission (record , 0o644 )
254
+ self .assert_permission (record , expected_permission )
255
255
# data files
256
256
data_file = os .path .join (self .scheme .data , 'my_data' , 'data_file' )
257
257
assert os .path .isfile (data_file )
@@ -268,7 +268,28 @@ def test_std_install(self, data, tmpdir):
268
268
scheme = self .scheme ,
269
269
req_description = str (self .req ),
270
270
)
271
- self .assert_installed ()
271
+ self .assert_installed (0o644 )
272
+
273
+ @pytest .mark .parametrize ("user_mask, expected_permission" , [
274
+ (0o27 , 0o640 )
275
+ ])
276
+ def test_std_install_with_custom_umask (self , data , tmpdir ,
277
+ user_mask , expected_permission ):
278
+ """Test that the files created after install honor the permissions
279
+ set when the user sets a custom umask"""
280
+
281
+ prev_umask = os .umask (user_mask )
282
+ try :
283
+ self .prep (data , tmpdir )
284
+ wheel .install_wheel (
285
+ self .name ,
286
+ self .wheelpath ,
287
+ scheme = self .scheme ,
288
+ req_description = str (self .req ),
289
+ )
290
+ self .assert_installed (expected_permission )
291
+ finally :
292
+ os .umask (prev_umask )
272
293
273
294
def test_std_install_with_direct_url (self , data , tmpdir ):
274
295
"""Test that install_wheel creates direct_url.json metadata when
@@ -340,7 +361,7 @@ def test_dist_info_contains_empty_dir(self, data, tmpdir):
340
361
req_description = str (self .req ),
341
362
_temp_dir_for_testing = self .src ,
342
363
)
343
- self .assert_installed ()
364
+ self .assert_installed (0o644 )
344
365
assert not os .path .isdir (
345
366
os .path .join (self .dest_dist_info , 'empty_dir' ))
346
367
0 commit comments