commit: fdcf83d0811019e0a465006493fe4acad77043da
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 24 16:39:20 2023 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon Apr 24 16:39:20 2023 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=fdcf83d0
MissingEAPIBlankLine: make it optional
Requested by multiple devs, maybe in future we would improve logic, and
un-optional it.
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcheck/checks/whitespace.py | 29 ++++++++++++++++------
.../MissingEAPIBlankLine/expected.json | 1 -
.../WhitespaceCheck/MissingEAPIBlankLine/fix.patch | 9 -------
.../MissingEAPIBlankLine-0.ebuild | 5 ----
tests/checks/test_whitespace.py | 18 ++++++++++++++
5 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/src/pkgcheck/checks/whitespace.py
b/src/pkgcheck/checks/whitespace.py
index 31667f9c..a853e0b0 100644
--- a/src/pkgcheck/checks/whitespace.py
+++ b/src/pkgcheck/checks/whitespace.py
@@ -4,7 +4,7 @@ import re
from typing import NamedTuple
from .. import results, sources
-from . import Check
+from . import Check, OptionalCheck
class _Whitespace(results.LinesResult, results.Style):
@@ -131,7 +131,6 @@ class WhitespaceCheck(Check):
TrailingEmptyLine,
NoFinalNewline,
BadWhitespaceCharacter,
- MissingEAPIBlankLine,
}
)
@@ -148,14 +147,8 @@ class WhitespaceCheck(Check):
leading = []
indent = []
double_empty = []
- eapi_lineno = None
for lineno, line in enumerate(pkg.lines, 1):
- if line.startswith("EAPI="):
- eapi_lineno = lineno
- elif eapi_lineno is not None and lineno == eapi_lineno + 1 and
line != "\n":
- yield MissingEAPIBlankLine(pkg=pkg)
-
for match in self.bad_whitespace_regex.finditer(line):
yield BadWhitespaceCharacter(
repr(match.group("char")),
@@ -191,3 +184,23 @@ class WhitespaceCheck(Check):
# Dealing with empty ebuilds is just paranoia
if pkg.lines and not pkg.lines[-1].endswith("\n"):
yield NoFinalNewline(pkg=pkg)
+
+
+class MissingWhitespaceCheck(OptionalCheck):
+ """Scan ebuild for missing whitespace."""
+
+ _source = sources.EbuildFileRepoSource
+ known_results = frozenset(
+ {
+ MissingEAPIBlankLine,
+ }
+ )
+
+ def feed(self, pkg):
+ eapi_lineno = None
+
+ for lineno, line in enumerate(pkg.lines, 1):
+ if line.startswith("EAPI="):
+ eapi_lineno = lineno
+ elif eapi_lineno is not None and lineno == eapi_lineno + 1 and
line != "\n":
+ yield MissingEAPIBlankLine(pkg=pkg)
diff --git
a/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/expected.json
b/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/expected.json
deleted file mode 100644
index d0630087..00000000
---
a/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/expected.json
+++ /dev/null
@@ -1 +0,0 @@
-{"__class__": "MissingEAPIBlankLine", "category": "WhitespaceCheck",
"package": "MissingEAPIBlankLine", "version": "0"}
diff --git
a/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/fix.patch
b/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/fix.patch
deleted file mode 100644
index e6b838e3..00000000
---
a/testdata/data/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/fix.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff -Naur
standalone/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
fixed/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
----
standalone/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
-+++ fixed/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
-@@ -1,4 +1,5 @@
- EAPI=7
-+
- DESCRIPTION="Ebuild is missing blank line after EAPI"
- HOMEPAGE="https://github.com/pkgcore/pkgcheck"
- SLOT="0"
diff --git
a/testdata/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
b/testdata/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
deleted file mode 100644
index fc5a6781..00000000
---
a/testdata/repos/standalone/WhitespaceCheck/MissingEAPIBlankLine/MissingEAPIBlankLine-0.ebuild
+++ /dev/null
@@ -1,5 +0,0 @@
-EAPI=7
-DESCRIPTION="Ebuild is missing blank line after EAPI"
-HOMEPAGE="https://github.com/pkgcore/pkgcheck"
-SLOT="0"
-LICENSE="BSD"
diff --git a/tests/checks/test_whitespace.py b/tests/checks/test_whitespace.py
index f90495b6..e6324d77 100644
--- a/tests/checks/test_whitespace.py
+++ b/tests/checks/test_whitespace.py
@@ -150,3 +150,21 @@ class TestMultipleChecks(WhitespaceCheckTest):
reports = self.assertReports(self.check, fake_pkg)
assert len(reports) == 4
+
+
+class TestMissingWhitespaceCheck(misc.ReportTestCase):
+ check_kls = whitespace.MissingWhitespaceCheck
+ check = whitespace.MissingWhitespaceCheck(None)
+
+ def test_it(self):
+ fake_src = [
+ "# This is a comment\n",
+ "# This is a comment\n",
+ "# This is a comment, and no blank line before EAPI\n",
+ "EAPI=8\n",
+ "inherit fake\n", # no blank line after EAPI=
+ ]
+ fake_pkg = misc.FakePkg("dev-util/diffball-0.5", lines=fake_src)
+
+ r = self.assertReport(self.check, fake_pkg)
+ assert isinstance(r, whitespace.MissingEAPIBlankLine)