reset checks after each package, thanks to Daniel García Moreno
This commit is contained in:
parent
b63b18b807
commit
6ea1ab8f37
71
1163.patch
Normal file
71
1163.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
From 50a33b41c67342c4b0817670a184c0ba263e77b5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Moreno?= <dani@danigm.net>
|
||||||
|
Date: Wed, 3 Jan 2024 15:00:55 +0100
|
||||||
|
Subject: [PATCH] lint: Reset all checks for each package
|
||||||
|
|
||||||
|
Some check classes keep state during checking and this cause problems
|
||||||
|
when checking several files with the same call.
|
||||||
|
|
||||||
|
This patch resets all the checks for each package to check. This is a
|
||||||
|
quick solution, maybe the best way to handle this is to reset the state
|
||||||
|
for each check in with a common method in the AbstractCheck, a common
|
||||||
|
way to handle and reset the state to avoid this problem in the future.
|
||||||
|
|
||||||
|
Fix https://github.com/rpm-software-management/rpmlint/issues/1161
|
||||||
|
---
|
||||||
|
rpmlint/lint.py | 10 ++++++++++
|
||||||
|
test/test_cli.py | 9 +++++++++
|
||||||
|
2 files changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rpmlint/lint.py b/rpmlint/lint.py
|
||||||
|
index 5372e749c..b00937ca2 100644
|
||||||
|
--- a/rpmlint/lint.py
|
||||||
|
+++ b/rpmlint/lint.py
|
||||||
|
@@ -224,6 +224,7 @@ def _print_header(self):
|
||||||
|
def validate_installed_packages(self, packages):
|
||||||
|
for pkg in packages:
|
||||||
|
self.run_checks(pkg, pkg == packages[-1])
|
||||||
|
+ self.reset_checks()
|
||||||
|
|
||||||
|
def validate_files(self, files):
|
||||||
|
"""
|
||||||
|
@@ -243,6 +244,7 @@ def validate_files(self, files):
|
||||||
|
packages = sorted(packages)
|
||||||
|
for pkg in packages:
|
||||||
|
self.validate_file(pkg, pkg == packages[-1])
|
||||||
|
+ self.reset_checks()
|
||||||
|
|
||||||
|
def _expand_filelist(self, files):
|
||||||
|
packages = []
|
||||||
|
@@ -331,6 +333,14 @@ def load_checks(self):
|
||||||
|
if not selected_checks or check in selected_checks:
|
||||||
|
self.checks[check] = self.load_check(check)
|
||||||
|
|
||||||
|
+ def reset_checks(self):
|
||||||
|
+ """
|
||||||
|
+ Reset all check objects to set to the default state
|
||||||
|
+ """
|
||||||
|
+ to_reset = self.checks.keys()
|
||||||
|
+ for check in to_reset:
|
||||||
|
+ self.checks[check] = self.load_check(check)
|
||||||
|
+
|
||||||
|
def load_check(self, name):
|
||||||
|
"""Load a (check) module by its name, unless it is already loaded."""
|
||||||
|
module = importlib.import_module(f'.{name}', package='rpmlint.checks')
|
||||||
|
diff --git a/test/test_cli.py b/test/test_cli.py
|
||||||
|
index 2f0c55f08..03aea43a1 100644
|
||||||
|
--- a/test/test_cli.py
|
||||||
|
+++ b/test/test_cli.py
|
||||||
|
@@ -83,3 +83,12 @@ def test_parsing_fedora_conf(test_arguments):
|
||||||
|
if score_key.startswith('percent-in-'):
|
||||||
|
continue
|
||||||
|
assert score_key in checks
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+def test_reset_check():
|
||||||
|
+ files = ['test/spec/SpecCheck2.spec', 'test/spec/SpecCheck3.spec']
|
||||||
|
+ options = process_lint_args(['--checks', 'SpecCheck'] + files)
|
||||||
|
+ lint = Lint(options)
|
||||||
|
+ lint.run()
|
||||||
|
+ out = lint.output.print_results(lint.output.results, lint.config)
|
||||||
|
+ assert 'more-than-one-%changelog-section' not in out
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
Name: rpmlint
|
Name: rpmlint
|
||||||
Version: 2.5.0
|
Version: 2.5.0
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Tool for checking common errors in RPM packages
|
Summary: Tool for checking common errors in RPM packages
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
URL: https://github.com/rpm-software-management/rpmlint
|
URL: https://github.com/rpm-software-management/rpmlint
|
||||||
@ -14,6 +14,10 @@ Source3: scoring.toml
|
|||||||
Source4: users-groups.toml
|
Source4: users-groups.toml
|
||||||
Source5: warn-on-functions.toml
|
Source5: warn-on-functions.toml
|
||||||
|
|
||||||
|
# Fix from @danigm to reset checks for each package
|
||||||
|
# https://github.com/rpm-software-management/rpmlint/pull/1163
|
||||||
|
Patch0: https://patch-diff.githubusercontent.com/raw/rpm-software-management/rpmlint/pull/1163.patch
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
# use git to apply patches; it handles binary diffs
|
# use git to apply patches; it handles binary diffs
|
||||||
@ -99,6 +103,9 @@ cp -a %{SOURCE1} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{buildroot}%{_sysconfdir}/xdg
|
|||||||
%{_bindir}/rpmlint
|
%{_bindir}/rpmlint
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 4 2024 Tom Callaway <spot@fedoraproject.org> - 2.5.0-3
|
||||||
|
- reset checks after each package, thanks to Daniel García Moreno
|
||||||
|
|
||||||
* Sat Nov 25 2023 Zephyr Lykos <fedora@mochaa.ws> - 2.5.0-2
|
* Sat Nov 25 2023 Zephyr Lykos <fedora@mochaa.ws> - 2.5.0-2
|
||||||
- Migrate patches to pyproject.toml (rhbz#1899279)
|
- Migrate patches to pyproject.toml (rhbz#1899279)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user