iotests: make qemu_img_log and img_info_log raise on error

Add a `check: bool = True` parameter to both functions and make their
qemu_img() invocations raise on error by default.

users of img_info_log:
206, 207, 210, 211, 212, 213, 237, 242, 266, 274, 302

users of qemu_img_log:
044, 209, 274, 302, 304

iotests 242 and 266 need to use check=False for their negative tests.
iotests 206, 210, 211, 212, 213, 237, 274 and 302 continue working
normally.

As of this commit, all calls to QEMU_IMG made from iotests enforce a
return code of zero by default unless explicitly disabled or suppressed
by passing check=False or with an exception handler.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20220321201618.903471-19-jsnow@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
John Snow 2022-03-21 16:16:18 -04:00 committed by Hanna Reitz
parent f400e14da0
commit 8f685ac391
3 changed files with 7 additions and 5 deletions

View File

@ -100,7 +100,7 @@ add_bitmap(1, True, False)
log('Write an unknown bitmap flag \'{}\' into a new QCOW2 image at offset {}'
.format(hex(bitmap_flag_unknown), flag_offset))
toggle_flag(flag_offset)
img_info_log(disk)
img_info_log(disk, check=False)
toggle_flag(flag_offset)
log('Unset the unknown bitmap flag \'{}\' in the bitmap directory entry:\n'
.format(hex(bitmap_flag_unknown)))

View File

@ -137,7 +137,7 @@ def main():
iotests.log('')
vm.shutdown()
iotests.img_info_log(file_path)
iotests.img_info_log(file_path, check=False)
iotests.script_main(main,

View File

@ -312,13 +312,15 @@ def qemu_img_info(*args: str) -> Any:
def qemu_img_map(*args: str) -> Any:
return qemu_img_json('map', "--output", "json", *args)
def qemu_img_log(*args: str) -> 'subprocess.CompletedProcess[str]':
result = qemu_img(*args, check=False)
def qemu_img_log(*args: str, check: bool = True
) -> 'subprocess.CompletedProcess[str]':
result = qemu_img(*args, check=check)
log(result.stdout, filters=[filter_testfiles])
return result
def img_info_log(filename: str, filter_path: Optional[str] = None,
use_image_opts: bool = False, extra_args: Sequence[str] = (),
check: bool = True,
) -> None:
args = ['info']
if use_image_opts:
@ -328,7 +330,7 @@ def img_info_log(filename: str, filter_path: Optional[str] = None,
args += extra_args
args.append(filename)
output = qemu_img(*args, check=False).stdout
output = qemu_img(*args, check=check).stdout
if not filter_path:
filter_path = filename
log(filter_img_info(output, filter_path))