check also spec files for forbidden control chars

This commit is contained in:
Frank Schreiner 2019-10-24 10:26:39 +02:00 committed by Neal Gompa (ニール・ゴンパ)
parent e1576e4fc1
commit bb3573020b
3 changed files with 74 additions and 0 deletions

View File

@ -387,6 +387,11 @@ class SpecCheck(AbstractCheck):
res = requires_regex.search(line)
if res:
reqs = Pkg.parse_deps(res.group(1))
e = Pkg.has_forbidden_controlchars(reqs)
if e:
self.output.add_info('E', pkg,
'forbidden-controlchar-found',
'Requires: %s' % e)
for req in unversioned(reqs):
if compop_regex.search(req):
self.output.add_info('W', pkg,
@ -396,6 +401,11 @@ class SpecCheck(AbstractCheck):
res = provides_regex.search(line)
if res:
provs = Pkg.parse_deps(res.group(1))
e = Pkg.has_forbidden_controlchars(provs)
if e:
self.output.add_info('E', pkg,
'forbidden-controlchar-found',
'Provides: %s' % e)
for prov in unversioned(provs):
if not prov.startswith('/'):
self.output.add_info('W', pkg, 'unversioned-explicit-provides',
@ -408,6 +418,11 @@ class SpecCheck(AbstractCheck):
res = obsoletes_regex.search(line)
if res:
obses = Pkg.parse_deps(res.group(1))
e = Pkg.has_forbidden_controlchars(obses)
if e:
self.output.add_info('E', pkg,
'forbidden-controlchar-found',
'Obsoletes: %s' % e)
for obs in unversioned(obses):
if not obs.startswith('/'):
self.output.add_info('W', pkg, 'unversioned-explicit-obsoletes',
@ -420,6 +435,11 @@ class SpecCheck(AbstractCheck):
res = conflicts_regex.search(line)
if res:
confs = Pkg.parse_deps(res.group(1))
e = Pkg.has_forbidden_controlchars(confs)
if e:
self.output.add_info('E', pkg,
'forbidden-controlchar-found',
'Conflicts: %s' % e)
for conf in unversioned(confs):
if compop_regex.search(conf):
self.output.add_info('W', pkg,
@ -427,6 +447,11 @@ class SpecCheck(AbstractCheck):
conf)
if current_section == 'changelog':
e = Pkg.has_forbidden_controlchars(line)
if e:
self.output.add_info('E', pkg,
'forbidden-controlchar-found',
'%%changelog: %s' % e)
for match in self.macro_regex.findall(line):
res = re.match('%+', match)
if len(res.group(0)) % 2:

36
test/spec/SpecCheck4.spec Normal file
View File

@ -0,0 +1,36 @@
Name: SpecCheck4
Version: 0.0.1
Release: 0
Summary: None here
Group: Undefined
License: GPLv2
URL: http://rpmlint.zarb.org/#%{name}
Source0: Source0.tar.gz
Requires: require
Provides: provide
Obsoletes: obsolete
Conflicts: conflict
%description
%prep
%setup -q
%build
%configure
%make_build
%install
%make_install
%post
%postun
%files
%license COPYING
%doc ChangeLog README
%changelog
* Wed Oct 23 14:15:39 UTC 2019 - Frank Schreiner <frank@fs.samaxi.de>
- changelog entry .... 

View File

@ -51,3 +51,16 @@ def test_distribution_tags(package, speccheck):
assert 'unversioned-explicit-obsoletes versioned-obsoletes' not in out
assert 'unversioned-explicit-obsoletes /' not in out
assert 'setup-not-quiet' in out
@pytest.mark.parametrize('package', ['spec/SpecCheck4'])
def test_forbidden_controlchars_found(package, speccheck):
output, test = speccheck
pkg = get_tested_spec_package(package)
test.check_spec(pkg)
out = output.print_results(output.results)
assert 'E: forbidden-controlchar-found Requires:' in out
assert 'E: forbidden-controlchar-found Provides:' in out
assert 'E: forbidden-controlchar-found Obsoletes:' in out
assert 'E: forbidden-controlchar-found Conflicts:' in out
assert 'E: forbidden-controlchar-found %changelog:' in out