From 5f208e04c159791e668031a7fa83f98724ec8d24 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 3 Nov 2020 07:07:45 +0100 Subject: Adding upstream version 0.14.0. Signed-off-by: Daniel Baumann --- gitlint/tests/rules/test_user_rules.py | 137 ++++++++++++++++++++------------- 1 file changed, 85 insertions(+), 52 deletions(-) (limited to 'gitlint/tests/rules/test_user_rules.py') diff --git a/gitlint/tests/rules/test_user_rules.py b/gitlint/tests/rules/test_user_rules.py index 57c03a0..52d0283 100644 --- a/gitlint/tests/rules/test_user_rules.py +++ b/gitlint/tests/rules/test_user_rules.py @@ -92,7 +92,7 @@ class UserRuleTests(BaseTestCase): find_rule_classes(user_rule_path) def test_find_rule_classes_nonexisting_path(self): - with self.assertRaisesRegex(UserRuleError, u"Invalid extra-path: föo/bar"): + with self.assertRaisesMessage(UserRuleError, u"Invalid extra-path: föo/bar"): find_rule_classes(u"föo/bar") def test_assert_valid_rule_class(self): @@ -111,15 +111,23 @@ class UserRuleTests(BaseTestCase): def validate(self): pass + class MyConfigurationRuleClass(rules.ConfigurationRule): + id = 'UC3' + name = u'my-cönfiguration-rule' + + def apply(self): + pass + # Just assert that no error is raised self.assertIsNone(assert_valid_rule_class(MyLineRuleClass)) self.assertIsNone(assert_valid_rule_class(MyCommitRuleClass)) + self.assertIsNone(assert_valid_rule_class(MyConfigurationRuleClass)) def test_assert_valid_rule_class_negative(self): # general test to make sure that incorrect rules will raise an exception user_rule_path = self.get_sample_path("user_rules/incorrect_linerule") - with self.assertRaisesRegex(UserRuleError, - "User-defined rule class 'MyUserLineRule' must have a 'validate' method"): + with self.assertRaisesMessage(UserRuleError, + "User-defined rule class 'MyUserLineRule' must have a 'validate' method"): find_rule_classes(user_rule_path) def test_assert_valid_rule_class_negative_parent(self): @@ -127,76 +135,101 @@ class UserRuleTests(BaseTestCase): class MyRuleClass(object): pass - expected_msg = "User-defined rule class 'MyRuleClass' must extend from gitlint.rules.LineRule " + \ - "or gitlint.rules.CommitRule" - with self.assertRaisesRegex(UserRuleError, expected_msg): + expected_msg = "User-defined rule class 'MyRuleClass' must extend from gitlint.rules.LineRule, " + \ + "gitlint.rules.CommitRule or gitlint.rules.ConfigurationRule" + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) def test_assert_valid_rule_class_negative_id(self): - class MyRuleClass(rules.LineRule): - pass - # Rule class must have an id - expected_msg = "User-defined rule class 'MyRuleClass' must have an 'id' attribute" - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + for parent_class in [rules.LineRule, rules.CommitRule]: - # Rule ids must be non-empty - MyRuleClass.id = "" - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + class MyRuleClass(parent_class): + pass - # Rule ids must not start with one of the reserved id letters - for letter in ["T", "R", "B", "M"]: - MyRuleClass.id = letter + "1" - expected_msg = "The id '{0}' of 'MyRuleClass' is invalid. Gitlint reserves ids starting with R,T,B,M" - with self.assertRaisesRegex(UserRuleError, expected_msg.format(letter)): + # Rule class must have an id + expected_msg = "User-defined rule class 'MyRuleClass' must have an 'id' attribute" + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) + # Rule ids must be non-empty + MyRuleClass.id = "" + with self.assertRaisesMessage(UserRuleError, expected_msg): + assert_valid_rule_class(MyRuleClass) + + # Rule ids must not start with one of the reserved id letters + for letter in ["T", "R", "B", "M", "I"]: + MyRuleClass.id = letter + "1" + expected_msg = "The id '{0}' of 'MyRuleClass' is invalid. Gitlint reserves ids starting with R,T,B,M,I" + with self.assertRaisesMessage(UserRuleError, expected_msg.format(letter)): + assert_valid_rule_class(MyRuleClass) + def test_assert_valid_rule_class_negative_name(self): - class MyRuleClass(rules.LineRule): - id = "UC1" + for parent_class in [rules.LineRule, rules.CommitRule]: - # Rule class must have an name - expected_msg = "User-defined rule class 'MyRuleClass' must have a 'name' attribute" - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + class MyRuleClass(parent_class): + id = "UC1" - # Rule names must be non-empty - MyRuleClass.name = "" - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + # Rule class must have an name + expected_msg = "User-defined rule class 'MyRuleClass' must have a 'name' attribute" + with self.assertRaisesMessage(UserRuleError, expected_msg): + assert_valid_rule_class(MyRuleClass) + + # Rule names must be non-empty + MyRuleClass.name = "" + with self.assertRaisesMessage(UserRuleError, expected_msg): + assert_valid_rule_class(MyRuleClass) def test_assert_valid_rule_class_negative_option_spec(self): - class MyRuleClass(rules.LineRule): - id = "UC1" - name = u"my-rüle-class" - # if set, option_spec must be a list of gitlint options - MyRuleClass.options_spec = u"föo" - expected_msg = "The options_spec attribute of user-defined rule class 'MyRuleClass' must be a list " + \ - "of gitlint.options.RuleOption" - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + for parent_class in [rules.LineRule, rules.CommitRule]: - # option_spec is a list, but not of gitlint options - MyRuleClass.options_spec = [u"föo", 123] # pylint: disable=bad-option-value,redefined-variable-type - with self.assertRaisesRegex(UserRuleError, expected_msg): - assert_valid_rule_class(MyRuleClass) + class MyRuleClass(parent_class): + id = "UC1" + name = u"my-rüle-class" + + # if set, option_spec must be a list of gitlint options + MyRuleClass.options_spec = u"föo" + expected_msg = "The options_spec attribute of user-defined rule class 'MyRuleClass' must be a list " + \ + "of gitlint.options.RuleOption" + with self.assertRaisesMessage(UserRuleError, expected_msg): + assert_valid_rule_class(MyRuleClass) + + # option_spec is a list, but not of gitlint options + MyRuleClass.options_spec = [u"föo", 123] # pylint: disable=bad-option-value,redefined-variable-type + with self.assertRaisesMessage(UserRuleError, expected_msg): + assert_valid_rule_class(MyRuleClass) def test_assert_valid_rule_class_negative_validate(self): - class MyRuleClass(rules.LineRule): - id = "UC1" + + baseclasses = [rules.LineRule, rules.CommitRule] + for clazz in baseclasses: + class MyRuleClass(clazz): + id = "UC1" + name = u"my-rüle-class" + + with self.assertRaisesMessage(UserRuleError, + "User-defined rule class 'MyRuleClass' must have a 'validate' method"): + assert_valid_rule_class(MyRuleClass) + + # validate attribute - not a method + MyRuleClass.validate = u"föo" + with self.assertRaisesMessage(UserRuleError, + "User-defined rule class 'MyRuleClass' must have a 'validate' method"): + assert_valid_rule_class(MyRuleClass) + + def test_assert_valid_rule_class_negative_apply(self): + class MyRuleClass(rules.ConfigurationRule): + id = "UCR1" name = u"my-rüle-class" - with self.assertRaisesRegex(UserRuleError, - "User-defined rule class 'MyRuleClass' must have a 'validate' method"): + expected_msg = "User-defined Configuration rule class 'MyRuleClass' must have an 'apply' method" + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) # validate attribute - not a method MyRuleClass.validate = u"föo" - with self.assertRaisesRegex(UserRuleError, - "User-defined rule class 'MyRuleClass' must have a 'validate' method"): + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) def test_assert_valid_rule_class_negative_target(self): @@ -210,12 +243,12 @@ class UserRuleTests(BaseTestCase): # no target expected_msg = "The target attribute of the user-defined LineRule class 'MyRuleClass' must be either " + \ "gitlint.rules.CommitMessageTitle or gitlint.rules.CommitMessageBody" - with self.assertRaisesRegex(UserRuleError, expected_msg): + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) # invalid target MyRuleClass.target = u"föo" - with self.assertRaisesRegex(UserRuleError, expected_msg): + with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) # valid target, no exception should be raised -- cgit v1.2.3