Ejemplo n.º 1
0
    def set_rights(self, path, read=None, write=None, execute=None, traverse=None, win_delete=None):
        if read is None and write is None and execute is None and traverse is None and win_delete is None:
            return # Bail if nothing to do

        assert check_default_filesystem_supports_permissions(), 'Cannot set permissions on this file system'
        assert traverse is not False or check_default_filesystem_is_posix(),\
            'Traverse permission only makes sense in POSIX filesystems'

        full_path = self.resolve_test_path(path)

        if check_default_filesystem_is_posix():
            set_file_rights(full_path, read=read, write=write, execute=execute, traverse=traverse)
        elif windows_utils.on_windows():
            windows_utils.set_file_rights(full_path, read=read, write=write, execute=execute, delete=win_delete)
        else:
            raise AssertionError("Don't know how to set permissions on this file system")
Ejemplo n.º 2
0
    def reset_rights(self, path, recursive=False):
        if not check_default_filesystem_supports_permissions():
            return

        full_path = self.resolve_test_path(path)

        if check_default_filesystem_is_posix():
            is_dir = os.path.isdir(full_path)

            set_file_rights(
                full_path,
                read=True,
                write=True,
                execute=True if not is_dir else None,
                traverse=True if is_dir and check_default_filesystem_is_posix() else None,
            )

            if recursive and is_dir:
                for item in os.listdir(full_path):
                    self.reset_rights(os.path.join(path, item), True)
        elif windows_utils.on_windows():
            windows_utils.reset_file_rights(full_path, recursive=recursive)
        else:
            raise AssertionError("Don't know how to reset permissions on this file system")