summaryrefslogtreecommitdiffstats
path: root/gitlint/tests/rules/test_meta_rules.py
blob: c94b8b3028da2b2693358146d4bdeffca9d78d91 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# -*- coding: utf-8 -*-
from gitlint.tests.base import BaseTestCase
from gitlint.rules import AuthorValidEmail, RuleViolation


class MetaRuleTests(BaseTestCase):
    def test_author_valid_email_rule(self):
        rule = AuthorValidEmail()

        # valid email addresses
        valid_email_addresses = [u"föo@bar.com", u"Jöhn.Doe@bar.com", u"jöhn+doe@bar.com", u"jöhn/doe@bar.com",
                                 u"jöhn.doe@subdomain.bar.com"]
        for email in valid_email_addresses:
            commit = self.gitcommit(u"", author_email=email)
            violations = rule.validate(commit)
            self.assertIsNone(violations)

        # No email address (=allowed for now, as gitlint also lints messages passed via stdin that don't have an
        # email address)
        commit = self.gitcommit(u"")
        violations = rule.validate(commit)
        self.assertIsNone(violations)

        # Invalid email addresses: no TLD, no domain, no @, space anywhere (=valid but not allowed by gitlint)
        invalid_email_addresses = [u"föo@bar", u"JöhnDoe", u"Jöhn Doe", u"Jöhn Doe@foo.com", u" JöhnDoe@foo.com",
                                   u"JöhnDoe@ foo.com", u"JöhnDoe@foo. com", u"JöhnDoe@foo. com", u"@bår.com",
                                   u"föo@.com"]
        for email in invalid_email_addresses:
            commit = self.gitcommit(u"", author_email=email)
            violations = rule.validate(commit)
            self.assertListEqual(violations,
                                 [RuleViolation("M1", "Author email for commit is invalid", email)])

    def test_author_valid_email_rule_custom_regex(self):
        # Custom domain
        rule = AuthorValidEmail({'regex': u"[^@]+@bår.com"})
        valid_email_addresses = [
            u"föo@bår.com", u"Jöhn.Doe@bår.com", u"jöhn+doe@bår.com", u"jöhn/doe@bår.com"]
        for email in valid_email_addresses:
            commit = self.gitcommit(u"", author_email=email)
            violations = rule.validate(commit)
            self.assertIsNone(violations)

        # Invalid email addresses
        invalid_email_addresses = [u"föo@hur.com"]
        for email in invalid_email_addresses:
            commit = self.gitcommit(u"", author_email=email)
            violations = rule.validate(commit)
            self.assertListEqual(violations,
                                 [RuleViolation("M1", "Author email for commit is invalid", email)])