diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-12-04 03:31:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-12-04 03:31:41 +0000 |
commit | 72b8c35be4293bd21de123854491c658c53af100 (patch) | |
tree | 735464cc081879561927a37650b1102beaa1f4f9 /gitlint-core/gitlint/tests/contrib/rules | |
parent | Adding upstream version 0.16.0. (diff) | |
download | gitlint-72b8c35be4293bd21de123854491c658c53af100.tar.xz gitlint-72b8c35be4293bd21de123854491c658c53af100.zip |
Adding upstream version 0.17.0.upstream/0.17.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gitlint-core/gitlint/tests/contrib/rules')
3 files changed, 107 insertions, 0 deletions
diff --git a/gitlint-core/gitlint/tests/contrib/rules/__init__.py b/gitlint-core/gitlint/tests/contrib/rules/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/gitlint-core/gitlint/tests/contrib/rules/__init__.py diff --git a/gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py b/gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py new file mode 100644 index 0000000..5da5cd5 --- /dev/null +++ b/gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py @@ -0,0 +1,75 @@ + +# -*- coding: utf-8 -*- +from gitlint.tests.base import BaseTestCase +from gitlint.rules import RuleViolation +from gitlint.contrib.rules.conventional_commit import ConventionalCommit +from gitlint.config import LintConfig + + +class ContribConventionalCommitTests(BaseTestCase): + + def test_enable(self): + # Test that rule can be enabled in config + for rule_ref in ['CT1', 'contrib-title-conventional-commits']: + config = LintConfig() + config.contrib = [rule_ref] + self.assertIn(ConventionalCommit(), config.rules) + + def test_conventional_commits(self): + rule = ConventionalCommit() + + # No violations when using a correct type and format + for type in ["fix", "feat", "chore", "docs", "style", "refactor", "perf", "test", "revert", "ci", "build"]: + violations = rule.validate(type + ": föo", None) + self.assertListEqual([], violations) + + # assert violation on wrong type + expected_violation = RuleViolation("CT1", "Title does not start with one of fix, feat, chore, docs," + " style, refactor, perf, test, revert, ci, build", "bår: foo") + violations = rule.validate("bår: foo", None) + self.assertListEqual([expected_violation], violations) + + # assert violation when use strange chars after correct type + expected_violation = RuleViolation("CT1", "Title does not start with one of fix, feat, chore, docs," + " style, refactor, perf, test, revert, ci, build", + "feat_wrong_chars: föo") + violations = rule.validate("feat_wrong_chars: föo", None) + self.assertListEqual([expected_violation], violations) + + # assert violation when use strange chars after correct type + expected_violation = RuleViolation("CT1", "Title does not start with one of fix, feat, chore, docs," + " style, refactor, perf, test, revert, ci, build", + "feat_wrong_chars(scope): föo") + violations = rule.validate("feat_wrong_chars(scope): föo", None) + self.assertListEqual([expected_violation], violations) + + # assert violation on wrong format + expected_violation = RuleViolation("CT1", "Title does not follow ConventionalCommits.org format " + "'type(optional-scope): description'", "fix föo") + violations = rule.validate("fix föo", None) + self.assertListEqual([expected_violation], violations) + + # assert no violation when use ! for breaking changes without scope + violations = rule.validate("feat!: föo", None) + self.assertListEqual([], violations) + + # assert no violation when use ! for breaking changes with scope + violations = rule.validate("fix(scope)!: föo", None) + self.assertListEqual([], violations) + + # assert no violation when adding new type + rule = ConventionalCommit({'types': ["föo", "bär"]}) + for typ in ["föo", "bär"]: + violations = rule.validate(typ + ": hür dur", None) + self.assertListEqual([], violations) + + # assert violation when using incorrect type when types have been reconfigured + violations = rule.validate("fix: hür dur", None) + expected_violation = RuleViolation("CT1", "Title does not start with one of föo, bär", "fix: hür dur") + self.assertListEqual([expected_violation], violations) + + # assert no violation when adding new type named with numbers + rule = ConventionalCommit({'types': ["föo123", "123bär"]}) + for typ in ["föo123", "123bär"]: + violations = rule.validate(typ + ": hür dur", None) + self.assertListEqual([], violations) diff --git a/gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py b/gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py new file mode 100644 index 0000000..0369cdc --- /dev/null +++ b/gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py @@ -0,0 +1,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("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("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("Signed-off-by\n\nFöobar")) + self.assertListEqual(violations, [expected_violation]) |