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