mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 21:24:44 +02:00

- simplify base.py, data.py - move some leftover regex patterns to patterns.py - remove pyparsing path logic, since this is no longer needed - rename PatchTestInput class to PatchtestParser - data.py: rename to patchtest_parser.py - patterns.py: rename to patchtest_patterns.py - move PatchTestDataStore to test_metadata.py since that's the only place it's used - remove unused logger code (From OE-Core rev: 1e971b05b036b0b1eb0bdbd9b26b54d06e74294c) Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
66 lines
2.7 KiB
Python
66 lines
2.7 KiB
Python
# Checks related to the python code done with pylint
|
|
#
|
|
# Copyright (C) 2016 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
import base
|
|
from io import StringIO
|
|
from patchtest_parser import PatchtestParser
|
|
from pylint.reporters.text import TextReporter
|
|
import pylint.lint as lint
|
|
|
|
|
|
class PyLint(base.Base):
|
|
pythonpatches = []
|
|
pylint_pretest = {}
|
|
pylint_test = {}
|
|
pylint_options = " -E --disable='E0611, E1101, F0401, E0602' --msg-template='L:{line} F:{module} I:{msg}'"
|
|
|
|
@classmethod
|
|
def setUpClassLocal(cls):
|
|
# get just those patches touching python files
|
|
cls.pythonpatches = []
|
|
for patch in cls.patchset:
|
|
if patch.path.endswith('.py'):
|
|
if not patch.is_removed_file:
|
|
cls.pythonpatches.append(patch)
|
|
|
|
def setUp(self):
|
|
if self.unidiff_parse_error:
|
|
self.skip('Python-unidiff parse error')
|
|
if not PyLint.pythonpatches:
|
|
self.skip('No python related patches, skipping test')
|
|
|
|
def pretest_pylint(self):
|
|
for pythonpatch in self.pythonpatches:
|
|
if pythonpatch.is_modified_file:
|
|
pylint_output = StringIO()
|
|
reporter = TextReporter(pylint_output)
|
|
lint.Run([self.pylint_options, pythonpatch.path], reporter=reporter, exit=False)
|
|
for line in pylint_output.readlines():
|
|
if not '*' in line:
|
|
if line.strip():
|
|
self.pylint_pretest[line.strip().split(' ',1)[0]] = line.strip().split(' ',1)[1]
|
|
|
|
def test_pylint(self):
|
|
for pythonpatch in self.pythonpatches:
|
|
# a condition checking whether a file is renamed or not
|
|
# unidiff doesn't support this yet
|
|
if pythonpatch.target_file is not pythonpatch.path:
|
|
path = pythonpatch.target_file[2:]
|
|
else:
|
|
path = pythonpatch.path
|
|
pylint_output = StringIO()
|
|
reporter = TextReporter(pylint_output)
|
|
lint.Run([self.pylint_options, pythonpatch.path], reporter=reporter, exit=False)
|
|
for line in pylint_output.readlines():
|
|
if not '*' in line:
|
|
if line.strip():
|
|
self.pylint_test[line.strip().split(' ',1)[0]] = line.strip().split(' ',1)[1]
|
|
|
|
for issue in self.pylint_test:
|
|
if self.pylint_test[issue] not in self.pylint_pretest.values():
|
|
self.fail('Errors in your Python code were encountered. Please check your code with a linter and resubmit',
|
|
data=[('Output', 'Please, fix the listed issues:'), ('', issue + ' ' + self.pylint_test[issue])])
|