summaryrefslogtreecommitdiffstats
path: root/gitlint/tests/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'gitlint/tests/contrib')
-rw-r--r--gitlint/tests/contrib/__init__.py0
-rw-r--r--gitlint/tests/contrib/test_contrib_rules.py72
-rw-r--r--gitlint/tests/contrib/test_conventional_commit.py47
-rw-r--r--gitlint/tests/contrib/test_signedoff_by.py32
4 files changed, 0 insertions, 151 deletions
diff --git a/gitlint/tests/contrib/__init__.py b/gitlint/tests/contrib/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/gitlint/tests/contrib/__init__.py
+++ /dev/null
diff --git a/gitlint/tests/contrib/test_contrib_rules.py b/gitlint/tests/contrib/test_contrib_rules.py
deleted file mode 100644
index 3fa4048..0000000
--- a/gitlint/tests/contrib/test_contrib_rules.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# -*- coding: utf-8 -*-
-import os
-
-from gitlint.tests.base import BaseTestCase
-from gitlint.contrib import rules as contrib_rules
-from gitlint.tests import contrib as contrib_tests
-from gitlint import rule_finder, rules
-
-from gitlint.utils import ustr
-
-
-class ContribRuleTests(BaseTestCase):
-
- CONTRIB_DIR = os.path.dirname(os.path.realpath(contrib_rules.__file__))
-
- def test_contrib_tests_exist(self):
- """ Tests that every contrib rule file has an associated test file.
- While this doesn't guarantee that every contrib rule has associated tests (as we don't check the content
- of the tests file), it's a good leading indicator. """
-
- contrib_tests_dir = os.path.dirname(os.path.realpath(contrib_tests.__file__))
- contrib_test_files = os.listdir(contrib_tests_dir)
-
- # Find all python files in the contrib dir and assert there's a corresponding test file
- for filename in os.listdir(self.CONTRIB_DIR):
- if filename.endswith(".py") and filename not in ["__init__.py"]:
- expected_test_file = ustr(u"test_" + filename)
- error_msg = u"Every Contrib Rule must have associated tests. " + \
- "Expected test file {0} not found.".format(os.path.join(contrib_tests_dir,
- expected_test_file))
- self.assertIn(expected_test_file, contrib_test_files, error_msg)
-
- def test_contrib_rule_naming_conventions(self):
- """ Tests that contrib rules follow certain naming conventions.
- We can test for this at test time (and not during runtime like rule_finder.assert_valid_rule_class does)
- because these are contrib rules: once they're part of gitlint they can't change unless they pass this test
- again.
- """
- rule_classes = rule_finder.find_rule_classes(self.CONTRIB_DIR)
-
- for clazz in rule_classes:
- # Contrib rule names start with "contrib-"
- self.assertTrue(clazz.name.startswith("contrib-"))
-
- # Contrib line rules id's start with "CL"
- if issubclass(clazz, rules.LineRule):
- if clazz.target == rules.CommitMessageTitle:
- self.assertTrue(clazz.id.startswith("CT"))
- elif clazz.target == rules.CommitMessageBody:
- self.assertTrue(clazz.id.startswith("CB"))
-
- def test_contrib_rule_uniqueness(self):
- """ Tests that all contrib rules have unique identifiers.
- We can test for this at test time (and not during runtime like rule_finder.assert_valid_rule_class does)
- because these are contrib rules: once they're part of gitlint they can't change unless they pass this test
- again.
- """
- rule_classes = rule_finder.find_rule_classes(self.CONTRIB_DIR)
-
- # Not very efficient way of checking uniqueness, but it works :-)
- class_names = [rule_class.name for rule_class in rule_classes]
- class_ids = [rule_class.id for rule_class in rule_classes]
- self.assertEqual(len(set(class_names)), len(class_names))
- self.assertEqual(len(set(class_ids)), len(class_ids))
-
- def test_contrib_rule_instantiated(self):
- """ Tests that all contrib rules can be instantiated without errors. """
- rule_classes = rule_finder.find_rule_classes(self.CONTRIB_DIR)
-
- # No exceptions = what we want :-)
- for rule_class in rule_classes:
- rule_class()
diff --git a/gitlint/tests/contrib/test_conventional_commit.py b/gitlint/tests/contrib/test_conventional_commit.py
deleted file mode 100644
index ea808fd..0000000
--- a/gitlint/tests/contrib/test_conventional_commit.py
+++ /dev/null
@@ -1,47 +0,0 @@
-
-# -*- 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"]:
- violations = rule.validate(type + u": 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", u"bår: foo")
- violations = rule.validate(u"bår: foo", 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'", u"fix föo")
- violations = rule.validate(u"fix föo", None)
- self.assertListEqual([expected_violation], violations)
-
- # assert no violation when adding new type
- rule = ConventionalCommit({'types': [u"föo", u"bär"]})
- for typ in [u"föo", u"bär"]:
- violations = rule.validate(typ + u": hür dur", None)
- self.assertListEqual([], violations)
-
- # assert violation when using incorrect type when types have been reconfigured
- violations = rule.validate(u"fix: hür dur", None)
- expected_violation = RuleViolation("CT1", u"Title does not start with one of föo, bär", u"fix: hür dur")
- self.assertListEqual([expected_violation], violations)
diff --git a/gitlint/tests/contrib/test_signedoff_by.py b/gitlint/tests/contrib/test_signedoff_by.py
deleted file mode 100644
index 934aec5..0000000
--- a/gitlint/tests/contrib/test_signedoff_by.py
+++ /dev/null
@@ -1,32 +0,0 @@
-
-# -*- 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(u"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(u"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(u"Signed-Off-By\n\nFöobar"))
- self.assertListEqual(violations, [expected_violation])