iotests: Skip read-only cases in 118 when run as root
Some tests in 118 use chmod to remove write permissions from the file and assume that the image can indeed not be opened read-write afterwards. This doesn't work when the test is run as root, because root can still open the file as writable even when the permission bit isn't set. Introduce a @skip_if_root decorator and use it in 118 to skip the tests in question when the script is run as root. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
This commit is contained in:
parent
35e32d9e2e
commit
d926f4ddd2
|
@ -446,6 +446,7 @@ class TestChangeReadOnly(ChangeBaseClass):
|
||||||
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
||||||
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
||||||
|
|
||||||
|
@iotests.skip_if_user_is_root
|
||||||
def test_rw_ro_retain(self):
|
def test_rw_ro_retain(self):
|
||||||
os.chmod(new_img, 0o444)
|
os.chmod(new_img, 0o444)
|
||||||
self.vm.add_drive(old_img, 'media=disk', 'none')
|
self.vm.add_drive(old_img, 'media=disk', 'none')
|
||||||
|
@ -530,6 +531,7 @@ class TestChangeReadOnly(ChangeBaseClass):
|
||||||
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
||||||
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
||||||
|
|
||||||
|
@iotests.skip_if_user_is_root
|
||||||
def test_make_ro_rw(self):
|
def test_make_ro_rw(self):
|
||||||
os.chmod(new_img, 0o444)
|
os.chmod(new_img, 0o444)
|
||||||
self.vm.add_drive(old_img, 'media=disk', 'none')
|
self.vm.add_drive(old_img, 'media=disk', 'none')
|
||||||
|
@ -571,6 +573,7 @@ class TestChangeReadOnly(ChangeBaseClass):
|
||||||
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
self.assert_qmp(result, 'return[0]/inserted/ro', True)
|
||||||
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
|
||||||
|
|
||||||
|
@iotests.skip_if_user_is_root
|
||||||
def test_make_ro_rw_by_retain(self):
|
def test_make_ro_rw_by_retain(self):
|
||||||
os.chmod(new_img, 0o444)
|
os.chmod(new_img, 0o444)
|
||||||
self.vm.add_drive(old_img, 'media=disk', 'none')
|
self.vm.add_drive(old_img, 'media=disk', 'none')
|
||||||
|
|
|
@ -931,6 +931,16 @@ def skip_if_unsupported(required_formats=[], read_only=False):
|
||||||
return func_wrapper
|
return func_wrapper
|
||||||
return skip_test_decorator
|
return skip_test_decorator
|
||||||
|
|
||||||
|
def skip_if_user_is_root(func):
|
||||||
|
'''Skip Test Decorator
|
||||||
|
Runs the test only without root permissions'''
|
||||||
|
def func_wrapper(*args, **kwargs):
|
||||||
|
if os.getuid() == 0:
|
||||||
|
case_notrun('{}: cannot be run as root'.format(args[0]))
|
||||||
|
else:
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
return func_wrapper
|
||||||
|
|
||||||
def execute_unittest(output, verbosity, debug):
|
def execute_unittest(output, verbosity, debug):
|
||||||
runner = unittest.TextTestRunner(stream=output, descriptions=True,
|
runner = unittest.TextTestRunner(stream=output, descriptions=True,
|
||||||
verbosity=verbosity)
|
verbosity=verbosity)
|
||||||
|
|
Loading…
Reference in a new issue