def test_author_valid_email_rule(self): rule = AuthorValidEmail() # valid email addresses valid_email_addresses = [ "fö[email protected]", "Jö[email protected]", "jö[email protected]", "jöhn/[email protected]", "jö[email protected]" ] for email in valid_email_addresses: commit = self.gitcommit("", 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("") 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 = [ "föo@bar", "JöhnDoe", "Jöhn Doe", "Jöhn [email protected]", " Jö[email protected]", "JöhnDoe@ foo.com", "JöhnDoe@foo. com", "JöhnDoe@foo. com", "@bår.com", "fö[email protected]" ] for email in invalid_email_addresses: commit = self.gitcommit("", 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): # regex=None -> the rule isn't applied rule = AuthorValidEmail() rule.options['regex'].set(None) emailadresses = ["föo", None, "hür dür"] for email in emailadresses: commit = self.gitcommit("", author_email=email) violations = rule.validate(commit) self.assertIsNone(violations) # Custom domain rule = AuthorValidEmail({'regex': "[^@]+@bår.com"}) valid_email_addresses = [ "föo@bår.com", "Jöhn.Doe@bår.com", "jöhn+doe@bår.com", "jöhn/doe@bår.com" ] for email in valid_email_addresses: commit = self.gitcommit("", author_email=email) violations = rule.validate(commit) self.assertIsNone(violations) # Invalid email addresses invalid_email_addresses = ["fö[email protected]"] for email in invalid_email_addresses: commit = self.gitcommit("", 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ö[email protected]"] 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) ])