Skip to content

Commit 2703a9d

Browse files
committed
ci/package_checks: Add a check for installed licenses
1 parent 290ad38 commit 2703a9d

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

common/CI/package_checks.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ def _record(self) -> logging.LogRecord:
266266

267267
class PullRequestCheck:
268268
_package_files = ['package.yml']
269+
_pspec_files = ['pspec_x86_64.xml']
269270
_two_letter_dirs = ['py']
270271
_config: Optional[Config] = None
271272

@@ -290,6 +291,10 @@ def config(self) -> Config:
290291
def package_files(self) -> List[str]:
291292
return self.filter_files(*self._package_files)
292293

294+
@property
295+
def pspec_files(self) -> List[str]:
296+
return self.filter_files(*self._pspec_files)
297+
293298
def filter_files(self, *allowed: str) -> List[str]:
294299
return [f for f in self.files
295300
if os.path.basename(f) in allowed]
@@ -458,6 +463,26 @@ def _has_monitoring_yml(self, file: str) -> bool:
458463
return self._exists(os.path.join(os.path.dirname(file), 'monitoring.yaml'))
459464

460465

466+
class License(PullRequestCheck):
467+
_error = 'Package is missing license files'
468+
_level = Level.WARNING
469+
_globs = [
470+
'**/licenses/**',
471+
'/usr/lib/python*/site-packages/*.dist-info/LICENSE',
472+
]
473+
474+
def run(self) -> List[Result]:
475+
return [Result(message=self._error, file=f, level=self._level)
476+
for f in self.pspec_files
477+
if not self._has_license(f)]
478+
479+
def _has_license(self, file: str) -> bool:
480+
return any(self._match_globs(f) for f in PspecXML(self._read(file)).files)
481+
482+
def _match_globs(self, path: str) -> bool:
483+
return any(fnmatch.fnmatch(path, pattern) for pattern in self._globs)
484+
485+
461486
class PackageBumped(PullRequestCheck):
462487
_msg = 'Package release is not incremented by 1'
463488
_msg_new = 'Package release is not 1'
@@ -847,6 +872,7 @@ class Checker:
847872
FrozenPackage,
848873
Homepage,
849874
Monitoring,
875+
License,
850876
PackageBumped,
851877
PackageDependenciesOrder,
852878
PackageDirectory,

0 commit comments

Comments
 (0)