diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-06-12 10:54:48 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-06-14 23:10:08 -0400 |
commit | b5ea9323a3a39a005a41580228a4722131d417b2 (patch) | |
tree | 38161b0c2c13acaaae036d080cea779787f53407 /.gitlab | |
parent | 503e830c3d01edc9db4e49e73841e45a20675a1e (diff) | |
download | haskell-b5ea9323a3a39a005a41580228a4722131d417b2.tar.gz |
lint: Only apply --interactive lint to testsuite .T files
Diffstat (limited to '.gitlab')
-rwxr-xr-x | .gitlab/linters/check-makefiles.py | 7 | ||||
-rw-r--r-- | .gitlab/linters/linter.py | 18 |
2 files changed, 18 insertions, 7 deletions
diff --git a/.gitlab/linters/check-makefiles.py b/.gitlab/linters/check-makefiles.py index 0a82a99d41..b647f6c1c5 100755 --- a/.gitlab/linters/check-makefiles.py +++ b/.gitlab/linters/check-makefiles.py @@ -12,9 +12,10 @@ from linter import run_linters, RegexpLinter linters = [ RegexpLinter(r'--interactive', - message = "Warning: Use `$(TEST_HC_OPTS_INTERACTIVE)` instead of `--interactive -ignore-dot-ghci -v0`.", - path_filter = lambda path: path == 'Makefile') + message = "Warning: Use `$(TEST_HC_OPTS_INTERACTIVE)` instead of `--interactive -ignore-dot-ghci -v0`." + ).add_path_filter(lambda path: path.suffix == '.T') ] if __name__ == '__main__': - run_linters(linters, subdir='testsuite') + run_linters(linters, + subdir='testsuite') diff --git a/.gitlab/linters/linter.py b/.gitlab/linters/linter.py index a5cdd179b7..c176ca20a4 100644 --- a/.gitlab/linters/linter.py +++ b/.gitlab/linters/linter.py @@ -7,7 +7,8 @@ import sys import re import textwrap import subprocess -from typing import List, Optional +from pathlib import Path +from typing import List, Optional, Callable from collections import namedtuple def lint_failure(file, line_no, line_content, message): @@ -46,12 +47,21 @@ class Linter(object): """ def __init__(self): self.warnings = [] # type: List[Warning] + self.path_filters = [] # type: List[Callable[[Path], bool]] def add_warning(self, w: Warning): self.warnings.append(w) + def add_path_filter(self, f: Callable[[Path], bool]) -> "Linter": + self.path_filters.append(f) + return self + + def do_lint(self, path): + if all(f(path) for f in self.path_filters): + self.lint(path) + def lint(self, path): - pass + raise NotImplementedError class LineLinter(Linter): """ @@ -66,7 +76,7 @@ class LineLinter(Linter): self.lint_line(path, line_no+1, line) def lint_line(self, path, line_no, line): - pass + raise NotImplementedError class RegexpLinter(LineLinter): """ @@ -97,7 +107,7 @@ def run_linters(linters: List[Linter], if path.startswith('.gitlab/linters'): continue for linter in linters: - linter.lint(path) + linter.do_lint(path) warnings = [warning for linter in linters |