summaryrefslogtreecommitdiffstats
path: root/gitlint/tests/contrib/test_signedoff_by.py
blob: 934aec52aab28ed7d8f43792d9ff59f83eab46a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
from gitlint.tests.base import BaseTestCase
from gitlint.rules import RuleViolation
from gitlint.contrib.rules.signedoff_by import SignedOffBy

from gitlint.config import LintConfig


class ContribSignedOffByTests(BaseTestCase):

    def test_enable(self):
        # Test that rule can be enabled in config
        for rule_ref in ['CC1', 'contrib-body-requires-signed-off-by']:
            config = LintConfig()
            config.contrib = [rule_ref]
            self.assertIn(SignedOffBy(), config.rules)

    def test_signedoff_by(self):
        # No violations when 'Signed-Off-By' line is present
        rule = SignedOffBy()
        violations = rule.validate(self.gitcommit(u"Föobar\n\nMy Body\nSigned-Off-By: John Smith"))
        self.assertListEqual([], violations)

        # Assert violation when no 'Signed-Off-By' line is present
        violations = rule.validate(self.gitcommit(u"Föobar\n\nMy Body"))
        expected_violation = RuleViolation("CC1", "Body does not contain a 'Signed-Off-By' line", line_nr=1)
        self.assertListEqual(violations, [expected_violation])

        # Assert violation when no 'Signed-Off-By' in title but not in body
        violations = rule.validate(self.gitcommit(u"Signed-Off-By\n\nFöobar"))
        self.assertListEqual(violations, [expected_violation])