|
@@ -262,9 +262,10 @@ class BaseTestCase(unittest.TestCase):
|
|
|
def read_only(self, path):
|
|
|
"""Some paths need to be made read-only for testing
|
|
|
|
|
|
- Using chmod to remove write permissions is not enough due to
|
|
|
- the tests running with root privileges. Instead, the folder is
|
|
|
- rendered immutable with chattr or chflags, respectively.
|
|
|
+ To simulate operations on read-only repositories, writing
|
|
|
+ permissions are simply being withdrawn. However, if the tests
|
|
|
+ are being run with root privileges, this is not enough and
|
|
|
+ the folder has to be rendered immutable, additionally.
|
|
|
"""
|
|
|
if sys.platform.startswith('linux'):
|
|
|
cmd_immutable = 'chattr +i "%s"' % path
|
|
@@ -279,11 +280,13 @@ class BaseTestCase(unittest.TestCase):
|
|
|
message = 'Testing read-only repos is not supported on platform %s' % sys.platform
|
|
|
self.skipTest(message)
|
|
|
try:
|
|
|
+ os.system('chmod -R ugo-w "%s"' % path)
|
|
|
os.system(cmd_immutable)
|
|
|
yield
|
|
|
finally:
|
|
|
# Restore permissions to ensure clean-up doesn't fail
|
|
|
os.system(cmd_mutable)
|
|
|
+ os.system('chmod -R ugo+w "%s"' % path)
|
|
|
|
|
|
|
|
|
class changedir:
|