From de139943d8272773b5f19ed824d687b0232b9ba3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 11 Mar 2023 09:03:03 +0100 Subject: Adding upstream version 0.19.1. Signed-off-by: Daniel Baumann --- .../gitlint/tests/rules/test_body_rules.py | 6 ++--- .../tests/rules/test_configuration_rules.py | 26 ++++++++++++++++++++-- .../gitlint/tests/rules/test_meta_rules.py | 5 ++++- gitlint-core/gitlint/tests/rules/test_rules.py | 13 ++++++++++- .../gitlint/tests/rules/test_title_rules.py | 14 ++++++------ .../gitlint/tests/rules/test_user_rules.py | 23 +++++++++---------- 6 files changed, 61 insertions(+), 26 deletions(-) (limited to 'gitlint-core/gitlint/tests/rules') diff --git a/gitlint-core/gitlint/tests/rules/test_body_rules.py b/gitlint-core/gitlint/tests/rules/test_body_rules.py index 94b1edf..c142e6e 100644 --- a/gitlint-core/gitlint/tests/rules/test_body_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_body_rules.py @@ -1,5 +1,5 @@ -from gitlint.tests.base import BaseTestCase from gitlint import rules +from gitlint.tests.base import BaseTestCase class BodyRuleTests(BaseTestCase): @@ -100,13 +100,13 @@ class BodyRuleTests(BaseTestCase): expected_violation = rules.RuleViolation("B5", "Body message is too short (21<120)", "å" * 21, 3) rule = rules.BodyMinLength({"min-length": 120}) - commit = self.gitcommit("Title\n\n{}\n".format("å" * 21)) # pylint: disable=consider-using-f-string + commit = self.gitcommit("Title\n\n{}\n".format("å" * 21)) violations = rule.validate(commit) self.assertListEqual(violations, [expected_violation]) # Make sure we don't get the error if the body-length is exactly the min-length rule = rules.BodyMinLength({"min-length": 8}) - commit = self.gitcommit("Tïtle\n\n{}\n".format("å" * 8)) # pylint: disable=consider-using-f-string + commit = self.gitcommit("Tïtle\n\n{}\n".format("å" * 8)) violations = rule.validate(commit) self.assertIsNone(violations) diff --git a/gitlint-core/gitlint/tests/rules/test_configuration_rules.py b/gitlint-core/gitlint/tests/rules/test_configuration_rules.py index 9e3b07c..5935a4a 100644 --- a/gitlint-core/gitlint/tests/rules/test_configuration_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_configuration_rules.py @@ -1,6 +1,9 @@ -from gitlint.tests.base import BaseTestCase, EXPECTED_REGEX_STYLE_SEARCH_DEPRECATION_WARNING from gitlint import rules from gitlint.config import LintConfig +from gitlint.tests.base import ( + EXPECTED_REGEX_STYLE_SEARCH_DEPRECATION_WARNING, + BaseTestCase, +) class ConfigurationRuleTests(BaseTestCase): @@ -89,6 +92,25 @@ class ConfigurationRuleTests(BaseTestCase): self.assertEqual(config, LintConfig()) self.assert_logged([]) # nothing logged -> nothing ignored + # No author available -> rule is skipped and warning logged + staged_commit = self.gitcommit("Tïtle\n\nThis is\n a relëase body\n line") + rule = rules.IgnoreByAuthorName({"regex": "foo"}) + config = LintConfig() + rule.apply(config, staged_commit) + self.assertEqual(config, LintConfig()) + expected_log_messages = [ + "WARNING: gitlint.rules ignore-by-author-name - I4: skipping - commit.author_name unknown. " + "Suggested fix: Use the --staged flag (or set general.staged=True in .gitlint). " + "More details: https://jorisroovers.com/gitlint/configuration/#staged" + ] + self.assert_logged(expected_log_messages) + + # Non-Matching regex -> expect config to stay the same + rule = rules.IgnoreByAuthorName({"regex": "foo"}) + expected_config = LintConfig() + rule.apply(config, commit) + self.assertEqual(config, LintConfig()) + # Matching regex -> expect config to ignore all rules rule = rules.IgnoreByAuthorName({"regex": "(.*)ëst(.*)"}) expected_config = LintConfig() @@ -96,7 +118,7 @@ class ConfigurationRuleTests(BaseTestCase): rule.apply(config, commit) self.assertEqual(config, expected_config) - expected_log_messages = [ + expected_log_messages += [ EXPECTED_REGEX_STYLE_SEARCH_DEPRECATION_WARNING.format("I4", "ignore-by-author-name"), "DEBUG: gitlint.rules Ignoring commit because of rule 'I4': " "Commit Author Name 'Tëst nåme' matches the regex '(.*)ëst(.*)'," diff --git a/gitlint-core/gitlint/tests/rules/test_meta_rules.py b/gitlint-core/gitlint/tests/rules/test_meta_rules.py index 0b8a10a..a574aa3 100644 --- a/gitlint-core/gitlint/tests/rules/test_meta_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_meta_rules.py @@ -1,5 +1,8 @@ -from gitlint.tests.base import BaseTestCase, EXPECTED_REGEX_STYLE_SEARCH_DEPRECATION_WARNING from gitlint.rules import AuthorValidEmail, RuleViolation +from gitlint.tests.base import ( + EXPECTED_REGEX_STYLE_SEARCH_DEPRECATION_WARNING, + BaseTestCase, +) class MetaRuleTests(BaseTestCase): diff --git a/gitlint-core/gitlint/tests/rules/test_rules.py b/gitlint-core/gitlint/tests/rules/test_rules.py index 199cc7e..b401372 100644 --- a/gitlint-core/gitlint/tests/rules/test_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_rules.py @@ -1,8 +1,12 @@ -from gitlint.tests.base import BaseTestCase from gitlint.rules import Rule, RuleViolation +from gitlint.tests.base import BaseTestCase class RuleTests(BaseTestCase): + def test_ruleviolation__str__(self): + expected = '57: rule-ïd Tēst message: "Tēst content"' + self.assertEqual(str(RuleViolation("rule-ïd", "Tēst message", "Tēst content", 57)), expected) + def test_rule_equality(self): self.assertEqual(Rule(), Rule()) # Ensure rules are not equal if they differ on their attributes @@ -13,9 +17,16 @@ class RuleTests(BaseTestCase): def test_rule_log(self): rule = Rule() + self.assertIsNone(rule._log) rule.log.debug("Tēst message") self.assert_log_contains("DEBUG: gitlint.rules Tēst message") + # Assert the same logger is reused when logging multiple messages + log = rule._log + rule.log.debug("Anöther message") + self.assertEqual(log, rule._log) + self.assert_log_contains("DEBUG: gitlint.rules Anöther message") + def test_rule_violation_equality(self): violation1 = RuleViolation("ïd1", "My messåge", "My cöntent", 1) self.object_equality_test(violation1, ["rule_id", "message", "content", "line_nr"]) diff --git a/gitlint-core/gitlint/tests/rules/test_title_rules.py b/gitlint-core/gitlint/tests/rules/test_title_rules.py index 4796e54..cba3851 100644 --- a/gitlint-core/gitlint/tests/rules/test_title_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_title_rules.py @@ -1,15 +1,15 @@ -from gitlint.tests.base import BaseTestCase from gitlint.rules import ( - TitleMaxLength, - TitleTrailingWhitespace, + RuleViolation, TitleHardTab, - TitleMustNotContainWord, - TitleTrailingPunctuation, TitleLeadingWhitespace, - TitleRegexMatches, - RuleViolation, + TitleMaxLength, TitleMinLength, + TitleMustNotContainWord, + TitleRegexMatches, + TitleTrailingPunctuation, + TitleTrailingWhitespace, ) +from gitlint.tests.base import BaseTestCase class TitleRuleTests(BaseTestCase): diff --git a/gitlint-core/gitlint/tests/rules/test_user_rules.py b/gitlint-core/gitlint/tests/rules/test_user_rules.py index fc8d423..8086bea 100644 --- a/gitlint-core/gitlint/tests/rules/test_user_rules.py +++ b/gitlint-core/gitlint/tests/rules/test_user_rules.py @@ -1,11 +1,10 @@ import os import sys -from gitlint.tests.base import BaseTestCase -from gitlint.rule_finder import find_rule_classes, assert_valid_rule_class -from gitlint.rules import UserRuleError - from gitlint import options, rules +from gitlint.rule_finder import assert_valid_rule_class, find_rule_classes +from gitlint.rules import UserRuleError +from gitlint.tests.base import BaseTestCase class UserRuleTests(BaseTestCase): @@ -104,21 +103,21 @@ class UserRuleTests(BaseTestCase): target = rules.CommitMessageTitle def validate(self): - pass + pass # pragma: nocover class MyCommitRuleClass(rules.CommitRule): id = "UC2" name = "my-cömmit-rule" def validate(self): - pass + pass # pragma: nocover class MyConfigurationRuleClass(rules.ConfigurationRule): id = "UC3" name = "my-cönfiguration-rule" def apply(self): - pass + pass # pragma: nocover # Just assert that no error is raised self.assertIsNone(assert_valid_rule_class(MyLineRuleClass)) @@ -203,7 +202,7 @@ class UserRuleTests(BaseTestCase): assert_valid_rule_class(MyRuleClass) # option_spec is a list, but not of gitlint options - MyRuleClass.options_spec = ["föo", 123] # pylint: disable=bad-option-value,redefined-variable-type + MyRuleClass.options_spec = ["föo", 123] with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) @@ -236,8 +235,8 @@ class UserRuleTests(BaseTestCase): with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) - # validate attribute - not a method - MyRuleClass.validate = "föo" + # apply attribute - not a method + MyRuleClass.apply = "föo" with self.assertRaisesMessage(UserRuleError, expected_msg): assert_valid_rule_class(MyRuleClass) @@ -247,7 +246,7 @@ class UserRuleTests(BaseTestCase): name = "my-rüle-class" def validate(self): - pass + pass # pragma: nocover # no target expected_msg = ( @@ -263,5 +262,5 @@ class UserRuleTests(BaseTestCase): assert_valid_rule_class(MyRuleClass) # valid target, no exception should be raised - MyRuleClass.target = rules.CommitMessageTitle # pylint: disable=bad-option-value,redefined-variable-type + MyRuleClass.target = rules.CommitMessageTitle self.assertIsNone(assert_valid_rule_class(MyRuleClass)) -- cgit v1.2.3