#!/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()