WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 0fa080b

Browse files
CI: Add doctests for commit msg validation
Signed-off-by: CuriousCorrelation <[email protected]>
1 parent b73d107 commit 0fa080b

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

tests/framework/gitlint_rules.py

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,78 @@ class EndsSigned(CommitRule):
2323
id = "UC2"
2424

2525
def validate(self, commit):
26-
"""Validate user defined gitlint rules."""
26+
r"""Validate user defined gitlint rules.
27+
28+
>>> from gitlint.tests.base import BaseTestCase
29+
>>> from gitlint.rules import RuleViolation
30+
...
31+
>>> ends_signed = EndsSigned()
32+
...
33+
>>> msg1 = (
34+
... f"Title\n\nMessage.\n\n"
35+
... f"Signed-off-by: name <email@domain>"
36+
... )
37+
>>> commit1 = BaseTestCase.gitcommit(msg1)
38+
>>> ends_signed.validate(commit1)
39+
[]
40+
>>> msg2 = (
41+
... f"Title\n\nMessage.\n\n"
42+
... f"Signed-off-by: name <email>\n\n"
43+
... f"Co-authored-by: name <email>"
44+
... )
45+
>>> commit2 = BaseTestCase.gitcommit(msg2)
46+
>>> ends_signed.validate(commit2)
47+
[]
48+
>>> msg3 = (
49+
... f"Title\n\nMessage.\n\n"
50+
... )
51+
>>> commit3 = BaseTestCase.gitcommit(msg3)
52+
>>> vio3 = ends_signed.validate(commit3)
53+
>>> vio_msg3 = (
54+
... f"'Signed-off-by:' not found "
55+
... f"in commit message body"
56+
... )
57+
>>> vio3 == [RuleViolation("UC2", vio_msg3)]
58+
True
59+
>>> msg4 = (
60+
... f"Title\n\nMessage.\n\n"
61+
... f"Signed-off-by: name <email@domain>\n\na sentence"
62+
... )
63+
>>> commit4 = BaseTestCase.gitcommit(msg4)
64+
>>> vio4 = ends_signed.validate(commit4)
65+
>>> vio_msg4 = (
66+
... f"Non 'Co-authored-by:' or 'Signed-off-by:'"
67+
... f" string found following 1st 'Signed-off-by:'"
68+
... )
69+
>>> vio4 == [RuleViolation("UC2", vio_msg4, None, 5)]
70+
True
71+
>>> msg5 = (
72+
... f"Title\n\nMessage.\n\n"
73+
... f"Co-authored-by: name <email@domain>\n\n"
74+
... f"a sentence."
75+
... )
76+
>>> commit5 = BaseTestCase.gitcommit(msg5)
77+
>>> vio5 = ends_signed.validate(commit5)
78+
>>> vio_msg5 = (
79+
... f"'Co-authored-by:' found before 'Signed-off-by:'"
80+
... )
81+
>>> vio5 == [RuleViolation("UC2", vio_msg5, None, 3)]
82+
True
83+
>>> msg6 = (
84+
... f"Title\n\nMessage.\n\n"
85+
... f"Signed-off-by: name <email@domain>\n\n"
86+
... f"Co-authored-by: name <email@domain>\n\n"
87+
... f"a sentence"
88+
... )
89+
>>> commit6 = BaseTestCase.gitcommit(msg6)
90+
>>> vio6 = ends_signed.validate(commit6)
91+
>>> vio_msg6 = (
92+
... f"Non 'Co-authored-by:' string found "
93+
... f"after 1st 'Co-authored-by:'"
94+
... )
95+
>>> vio6 == [RuleViolation("UC2", vio_msg6, None, 6)]
96+
True
97+
"""
2798
# Utilities
2899
def rtn(stmt, i):
29100
return [RuleViolation(self.id, stmt, None, i)]

0 commit comments

Comments
 (0)