1+ from __future__ import annotations
2+
13import logging
24import os
3- from typing import Sequence
5+ from typing import Callable , Generator , Sequence , Union
46import pytest
57import pytest_dependency # type: ignore
68import tempfile
79import xml .etree .ElementTree as ET
810
911from lib import installer , pxe
10- from lib .common import callable_marker , url_download , wait_for
12+ from lib .common import callable_marker , ensure_type , url_download , wait_for
1113from lib .installer import AnswerFile
1214from lib .commands import local_cmd
1315
@@ -39,7 +41,7 @@ def skip_package_source(version, package_source):
3941 return True , "unknown source type {}" .format (package_source )
4042
4143@pytest .fixture (scope = 'function' )
42- def answerfile (request ) :
44+ def answerfile (request : pytest . FixtureRequest ) -> Generator [ Union [ AnswerFile , None ], None , None ] :
4345 """
4446 Makes an AnswerFile object available to test and other fixtures.
4547
@@ -66,8 +68,8 @@ def answerfile(request):
6668 return
6769
6870 # construct answerfile definition from option "base", and explicit bits
69- answerfile_def = callable_marker (marker .args [0 ], request )
70- assert isinstance ( answerfile_def , AnswerFile )
71+ value = callable_marker (marker .args [0 ], request )
72+ answerfile_def = ensure_type ( AnswerFile , value )
7173
7274 yield answerfile_def
7375
@@ -322,8 +324,8 @@ def xcpng_chained(request):
322324 # take test name from mark
323325 marker = request .node .get_closest_marker ("continuation_of" )
324326 assert marker is not None , "xcpng_chained fixture requires 'continuation_of' marker"
325- continuation_of = callable_marker (marker .args [0 ], request )
326- assert isinstance ( continuation_of , Sequence )
327+ value = callable_marker (marker .args [0 ], request )
328+ continuation_of = ensure_type ( Sequence [ dict ], value )
327329
328330 vm_defs = [dict (name = vm_spec ['vm' ],
329331 image_test = vm_spec ['image_test' ],
0 commit comments