From: Thomas Huth <[email protected]> To avoid that new pylint-related warnings get committed, let's check the files with pylint during each run (similar to what we are doing for the iotests already).
Signed-off-by: Thomas Huth <[email protected]> --- tests/functional/generic/meson.build | 1 + tests/functional/generic/test_linters.py | 41 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 tests/functional/generic/test_linters.py diff --git a/tests/functional/generic/meson.build b/tests/functional/generic/meson.build index 013cc96fbf8..09763c5d229 100644 --- a/tests/functional/generic/meson.build +++ b/tests/functional/generic/meson.build @@ -3,6 +3,7 @@ tests_generic_system = [ 'empty_cpu_model', 'info_usernet', + 'linters', 'version', 'vnc', ] diff --git a/tests/functional/generic/test_linters.py b/tests/functional/generic/test_linters.py new file mode 100755 index 00000000000..b5b90fcf7a3 --- /dev/null +++ b/tests/functional/generic/test_linters.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +'''Python linter tests''' + +import os + +from pathlib import Path +from qemu_test import QemuBaseTest, skipIfMissingImports + + +class LinterTest(QemuBaseTest): + ''' + Run python linters on the test *.py files + ''' + + @skipIfMissingImports("pylint") + def test_pylint(self): + '''Check source files with pylint''' + from pylint.lint import Run as pylint_run + from pylint.reporters.collecting_reporter import CollectingReporter + srcdir = os.path.join(Path(__file__).parent.parent, self.arch) + rcfile = os.path.join(Path(__file__).parent.parent, "pylintrc") + self.log.info('Checking files in %s with pylint', srcdir) + reporter = CollectingReporter() + pylint_run(["--rcfile", rcfile, srcdir], reporter=reporter, exit=False) + if reporter.messages: + fmt = '"{path}:{line}: {msg_id}: {msg} ({symbol})"' + for msg in reporter.messages: + if msg.category == "error": + self.log.error(msg.format(fmt)) + elif msg.category == "warning": + self.log.warning(msg.format(fmt)) + else: + self.log.info(msg.format(fmt)) + self.fail("Pylint failed, see base.log for details.") + + +if __name__ == '__main__': + QemuBaseTest.main() -- 2.51.1
