From 5eac4f81eb1cfaf6bd8d07a5d78a48de28ae8e4c Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Sat, 6 May 2023 23:25:31 +0200 Subject: [PATCH] utils/check-package: check ignored files exist When an ignored file is removed (e.g. a package patch is no longer needed after a version bump), the corresponding entry in the ignore list is no longer needed. However, we currently only validate that an ignored *test* still fails, not that a ignore files is now missing. Add a new test to check-package that does that check, and add a test-case for that check. Signed-off-by: Yann E. MORIN Cc: Ricardo Martincoski --- utils/check-package | 4 ++++ utils/checkpackagelib/lib_ignore.py | 14 ++++++++++++++ utils/checkpackagelib/test_lib_ignore.py | 18 ++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 utils/checkpackagelib/lib_ignore.py create mode 100644 utils/checkpackagelib/test_lib_ignore.py diff --git a/utils/check-package b/utils/check-package index 83b9750f5a..3de3a72e0c 100755 --- a/utils/check-package +++ b/utils/check-package @@ -11,6 +11,7 @@ import sys import checkpackagelib.base import checkpackagelib.lib_config import checkpackagelib.lib_hash +import checkpackagelib.lib_ignore import checkpackagelib.lib_mk import checkpackagelib.lib_patch import checkpackagelib.lib_python @@ -107,6 +108,7 @@ def get_lib_from_filetype(fname): CONFIG_IN_FILENAME = re.compile(r"Config\.\S*$") DO_CHECK_INTREE = re.compile(r"|".join([ + r".checkpackageignore", r"Config.in", r"arch/", r"board/", @@ -146,6 +148,8 @@ def get_lib_from_filename(fname): if os.path.basename(fname) == "external.mk" and \ os.path.exists(fname[:-2] + "desc"): return None + if fname == ".checkpackageignore": + return checkpackagelib.lib_ignore if CONFIG_IN_FILENAME.search(fname): return checkpackagelib.lib_config if fname.endswith(".hash"): diff --git a/utils/checkpackagelib/lib_ignore.py b/utils/checkpackagelib/lib_ignore.py new file mode 100644 index 0000000000..f3698fc3b4 --- /dev/null +++ b/utils/checkpackagelib/lib_ignore.py @@ -0,0 +1,14 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +import os + +from checkpackagelib.base import _CheckFunction + + +class IgnoreMissingFile(_CheckFunction): + def check_line(self, lineno, text): + fields = text.split() + if not os.path.exists(fields[0]): + return ["{}:{}: ignored file {} is missing" + .format(self.filename, lineno, fields[0]), + text] diff --git a/utils/checkpackagelib/test_lib_ignore.py b/utils/checkpackagelib/test_lib_ignore.py new file mode 100644 index 0000000000..6cd856d669 --- /dev/null +++ b/utils/checkpackagelib/test_lib_ignore.py @@ -0,0 +1,18 @@ +import pytest +import checkpackagelib.test_util as util +import checkpackagelib.lib_ignore as m + + +IgnoreMissingFile = [ + ('missing ignored file', + '.checkpackageignore', + 'this-file-does-not-exist SomeTest', + [['.checkpackageignore:1: ignored file this-file-does-not-exist is missing', + 'this-file-does-not-exist SomeTest']]), + ] + + +@pytest.mark.parametrize('testname,filename,string,expected', IgnoreMissingFile) +def test_IgnoreMissingFile(testname, filename, string, expected): + warnings = util.check_file(m.IgnoreMissingFile, filename, string) + assert warnings == expected