iotests/297: split test into sub-cases

Take iotest 297's main() test function and split it into two sub-cases
that can be skipped individually. We can also drop custom environment
setup from the pylint test as it isn't needed.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
Message-id: 20211019144918.3159078-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
John Snow 2021-10-19 10:49:13 -04:00
parent 7a90bcc269
commit 85cfec53d0
1 changed files with 39 additions and 24 deletions

View File

@ -82,36 +82,51 @@ def run_linter(
)
def main() -> None:
for linter in ('pylint', 'mypy'):
try:
run_linter(linter, ['--version'], suppress_output=True)
except subprocess.CalledProcessError:
iotests.notrun(f"'{linter}' not found")
def check_linter(linter: str) -> bool:
try:
run_linter(linter, ['--version'], suppress_output=True)
except subprocess.CalledProcessError:
iotests.case_notrun(f"'{linter}' not found")
return False
return True
def test_pylint(files: List[str]) -> None:
print('=== pylint ===')
sys.stdout.flush()
if not check_linter('pylint'):
return
run_linter('pylint', files)
def test_mypy(files: List[str]) -> None:
print('=== mypy ===')
sys.stdout.flush()
if not check_linter('mypy'):
return
env = os.environ.copy()
env['MYPYPATH'] = env['PYTHONPATH']
run_linter('mypy', files, env=env, suppress_output=True)
def main() -> None:
files = get_test_files()
iotests.logger.debug('Files to be checked:')
iotests.logger.debug(', '.join(sorted(files)))
env = os.environ.copy()
env['MYPYPATH'] = env['PYTHONPATH']
print('=== pylint ===')
sys.stdout.flush()
try:
run_linter('pylint', files, env=env)
except subprocess.CalledProcessError:
# pylint failure will be caught by diffing the IO.
pass
print('=== mypy ===')
sys.stdout.flush()
try:
run_linter('mypy', files, env=env, suppress_output=True)
except subprocess.CalledProcessError as exc:
if exc.output:
print(exc.output)
for test in (test_pylint, test_mypy):
try:
test(files)
except subprocess.CalledProcessError as exc:
# Linter failure will be caught by diffing the IO.
if exc.output:
print(exc.output)
iotests.script_main(main)