Introduce option only_errors

* Validation can be runned only for errors. All warnigs will be ommited
* Minor issue in setup.cfg fixed. Now 'pip install -e .' works fine

Change-Id: I57d3f0713ef36535410ec4e50d3bb9286ea2741f
This commit is contained in:
sslypushenko 2016-09-20 18:14:44 +03:00
parent 9dcc3296ba
commit 5e6ae600d7
4 changed files with 28 additions and 11 deletions

View File

@ -35,6 +35,12 @@ class CheckError(Exception):
serialized[f] = self.__getattribute__(f)
return serialized
def is_warning(self):
return self.code.split(':')[-1].startswith('W')
def is_error(self):
return self.code.split(':')[-1].startswith('E')
def __repr__(self):
return 'CheckError({0})'.format(self.message)

View File

@ -127,10 +127,15 @@ class Manager(object):
'').format(plugin=ep.name, error=err))
raise err
def validate(self, validators=None, select=None, ignore=None):
def validate(self, validators=None, select=None, ignore=None,
only_errors=False):
validators = validators or self.validators
report_chains = []
for validator in validators:
v = validator(self.pkg)
report_chains.append(v.run())
return self._to_list(itertools.chain(*report_chains), select, ignore)
issues = self._to_list(itertools.chain(*report_chains), select, ignore)
if only_errors:
return [err for err in issues if err.is_error()]
else:
return issues

View File

@ -54,19 +54,16 @@ class ManagerTest(base.TestCase):
if e in expected_errors:
expected_errors.remove(e)
else:
self.force_failure('Unexpected error {}'.format(e))
self.fail('Unexpected error {}'.format(e))
self.assertEqual([], expected_errors, 'Expected errors left')
@mock.patch('muranopkgcheck.manager.pkg_loader')
@mock.patch('muranopkgcheck.manager.error.report')
def test_validate(self, m_error, m_pkg_loader):
fake_error = m_error.E007.return_value
fake_error.code = 'E007'
fake_error.to_dict.return_value = {'code': 'E007', 'message': 'Fake'}
fake_E000_error = m_error.E000.return_value
fake_E000_error.code = 'E000'
fake_E000_error.to_dict.return_value = {'code': 'E000',
'message': 'Fake'}
fake_error = error.CheckError('W007', 'Fake')
m_error.W007.return_value = fake_error
fake_E000_error = error.CheckError('E000', 'Fake')
m_error.E000.return_value = fake_E000_error
def error_generator():
yield fake_error
@ -97,7 +94,11 @@ class ManagerTest(base.TestCase):
errors)
m_validator.run.return_value = prepare_errors()
errors = mgr.validate(validators=[MockValidator], select=['E007'])
errors = mgr.validate(validators=[MockValidator], only_errors=True)
self._assert_errors([fake_E000_error, fake_E000_error], errors)
m_validator.run.return_value = prepare_errors()
errors = mgr.validate(validators=[MockValidator], select=['W007'])
self._assert_errors([fake_error, fake_error], errors)
m_validator.run.return_value = prepare_errors()

View File

@ -23,6 +23,11 @@ classifier =
packages =
muranopkgcheck
[egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0
[build_sphinx]
source-dir = doc/source
build-dir = doc/build