Skip to content

Commit c117d59

Browse files
check-files: detect merge artifacts
Detect Git merge artifacts. These are lines starting with "<<<<<<", "|||||||" or ">>>>>>>" followed by a space, or containing just "=======". For "=======", exempt Markdown files, because this can be used to underline a title, as a compromise between false negatives and false positives.
1 parent 0439805 commit c117d59

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

tests/scripts/check-files.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,27 @@ def issue_with_line(self, line):
135135
return b"\t" in line
136136

137137

138+
class MergeArtifactIssueTracker(IssueTracker):
139+
140+
def __init__(self):
141+
super().__init__()
142+
self.heading = "Merge artifact:"
143+
144+
def issue_with_line(self, filepath, line):
145+
# Detect leftover git conflict markers.
146+
if line.startswith(b'<<<<<<< ') or line.startswith(b'>>>>>>> '):
147+
return True
148+
if line.startswith(b'||||||| '): # from merge.conflictStyle=diff3
149+
return True
150+
if line.rstrip(b'\r\n') == b'=======' and \
151+
not filepath.endswith('.md'):
152+
return True
153+
return False
154+
155+
def check_file_line(self, filepath, line, line_number):
156+
if self.issue_with_line(filepath, line):
157+
self.record_issue(filepath, line_number)
158+
138159
class TodoIssueTracker(IssueTracker):
139160

140161
def __init__(self):
@@ -170,6 +191,7 @@ def __init__(self, log_file):
170191
LineEndingIssueTracker(),
171192
TrailingWhitespaceIssueTracker(),
172193
TabIssueTracker(),
194+
MergeArtifactIssueTracker(),
173195
TodoIssueTracker(),
174196
]
175197

0 commit comments

Comments
 (0)