@@ -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