Skip to content

Commit a68c3aa

Browse files
DimitriPapadopoulosadrienverge
authored andcommitted
document-end: Fix spurious "missing document end"
DocumentStartToken is preceded by DirectiveToken.
1 parent 7f2c071 commit a68c3aa

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

tests/rules/test_document_end.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,22 @@ def test_multiple_documents(self):
7171
'---\n'
7272
'third: document\n'
7373
'...\n', conf, problem=(6, 1))
74+
75+
def test_directives(self):
76+
conf = 'document-end: {present: true}'
77+
self.check('%YAML 1.2\n'
78+
'---\n'
79+
'document: end\n'
80+
'...\n', conf)
81+
self.check('%YAML 1.2\n'
82+
'%TAG ! tag:clarkevans.com,2002:\n'
83+
'---\n'
84+
'document: end\n'
85+
'...\n', conf)
86+
self.check('---\n'
87+
'first: document\n'
88+
'...\n'
89+
'%YAML 1.2\n'
90+
'---\n'
91+
'second: document\n'
92+
'...\n', conf)

yamllint/rules/document_end.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,13 @@ def check(conf, token, prev, next, nextnext, context):
9999
prev_is_end_or_stream_start = isinstance(
100100
prev, (yaml.DocumentEndToken, yaml.StreamStartToken)
101101
)
102+
prev_is_directive = isinstance(prev, yaml.DirectiveToken)
102103

103104
if is_stream_end and not prev_is_end_or_stream_start:
104105
yield LintProblem(token.start_mark.line, 1,
105106
'missing document end "..."')
106-
elif is_start and not prev_is_end_or_stream_start:
107+
elif is_start and not (prev_is_end_or_stream_start
108+
or prev_is_directive):
107109
yield LintProblem(token.start_mark.line + 1, 1,
108110
'missing document end "..."')
109111

0 commit comments

Comments
 (0)