Skip to content

Commit 49079af

Browse files
committed
Add unit test for checking permissions with custom umask
1 parent 2423d58 commit 49079af

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

tests/unit/test_wheel.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,15 @@ def assert_permission(self, path, mode):
243243
target_mode = os.stat(path).st_mode & 0o777
244244
assert (target_mode & mode) == mode, oct(target_mode)
245245

246-
def assert_installed(self):
246+
def assert_installed(self, expected_permission):
247247
# lib
248248
assert os.path.isdir(
249249
os.path.join(self.scheme.purelib, 'sample'))
250250
# dist-info
251251
metadata = os.path.join(self.dest_dist_info, 'METADATA')
252-
self.assert_permission(metadata, 0o644)
252+
self.assert_permission(metadata, expected_permission)
253253
record = os.path.join(self.dest_dist_info, 'RECORD')
254-
self.assert_permission(record, 0o644)
254+
self.assert_permission(record, expected_permission)
255255
# data files
256256
data_file = os.path.join(self.scheme.data, 'my_data', 'data_file')
257257
assert os.path.isfile(data_file)
@@ -268,7 +268,27 @@ def test_std_install(self, data, tmpdir):
268268
scheme=self.scheme,
269269
req_description=str(self.req),
270270
)
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+
mask = os.umask(0)
282+
os.umask(user_mask)
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+
os.umask(mask)
272292

273293
def test_std_install_with_direct_url(self, data, tmpdir):
274294
"""Test that install_wheel creates direct_url.json metadata when
@@ -340,7 +360,7 @@ def test_dist_info_contains_empty_dir(self, data, tmpdir):
340360
req_description=str(self.req),
341361
_temp_dir_for_testing=self.src,
342362
)
343-
self.assert_installed()
363+
self.assert_installed(0o644)
344364
assert not os.path.isdir(
345365
os.path.join(self.dest_dist_info, 'empty_dir'))
346366

0 commit comments

Comments
 (0)