summaryrefslogtreecommitdiffstats
path: root/gitlint/tests/git/test_git_context.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlint/tests/git/test_git_context.py')
-rw-r--r--gitlint/tests/git/test_git_context.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/gitlint/tests/git/test_git_context.py b/gitlint/tests/git/test_git_context.py
new file mode 100644
index 0000000..b243d5e
--- /dev/null
+++ b/gitlint/tests/git/test_git_context.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+
+try:
+ # python 2.x
+ from mock import patch, call
+except ImportError:
+ # python 3.x
+ from unittest.mock import patch, call # pylint: disable=no-name-in-module, import-error
+
+from gitlint.tests.base import BaseTestCase
+from gitlint.git import GitContext
+
+
+class GitContextTests(BaseTestCase):
+
+ # Expected special_args passed to 'sh'
+ expected_sh_special_args = {
+ '_tty_out': False,
+ '_cwd': u"fåke/path"
+ }
+
+ @patch('gitlint.git.sh')
+ def test_gitcontext(self, sh):
+
+ sh.git.side_effect = [
+ u"#", # git config --get core.commentchar
+ u"\nfoöbar\n"
+ ]
+
+ expected_calls = [
+ call("config", "--get", "core.commentchar", _ok_code=[0, 1], **self.expected_sh_special_args),
+ call("rev-parse", "--abbrev-ref", "HEAD", **self.expected_sh_special_args)
+ ]
+
+ context = GitContext(u"fåke/path")
+ self.assertEqual(sh.git.mock_calls, [])
+
+ # gitcontext.comment_branch
+ self.assertEqual(context.commentchar, u"#")
+ self.assertEqual(sh.git.mock_calls, expected_calls[0:1])
+
+ # gitcontext.current_branch
+ self.assertEqual(context.current_branch, u"foöbar")
+ self.assertEqual(sh.git.mock_calls, expected_calls)
+
+ @patch('gitlint.git.sh')
+ def test_gitcontext_equality(self, sh):
+
+ sh.git.side_effect = [
+ u"û\n", # context1: git config --get core.commentchar
+ u"û\n", # context2: git config --get core.commentchar
+ u"my-brånch\n", # context1: git rev-parse --abbrev-ref HEAD
+ u"my-brånch\n", # context2: git rev-parse --abbrev-ref HEAD
+ ]
+
+ context1 = GitContext(u"fåke/path")
+ context1.commits = [u"fōo", u"bår"] # we don't need real commits to check for equality
+
+ context2 = GitContext(u"fåke/path")
+ context2.commits = [u"fōo", u"bår"]
+ self.assertEqual(context1, context2)
+
+ # INEQUALITY
+ # Different commits
+ context2.commits = [u"hür", u"dür"]
+ self.assertNotEqual(context1, context2)
+
+ # Different repository_path
+ context2.commits = context1.commits
+ context2.repository_path = u"ōther/path"
+ self.assertNotEqual(context1, context2)
+
+ # Different comment_char
+ context3 = GitContext(u"fåke/path")
+ context3.commits = [u"fōo", u"bår"]
+ sh.git.side_effect = ([
+ u"ç\n", # context3: git config --get core.commentchar
+ u"my-brånch\n" # context3: git rev-parse --abbrev-ref HEAD
+ ])
+ self.assertNotEqual(context1, context3)
+
+ # Different current_branch
+ context4 = GitContext(u"fåke/path")
+ context4.commits = [u"fōo", u"bår"]
+ sh.git.side_effect = ([
+ u"û\n", # context4: git config --get core.commentchar
+ u"different-brånch\n" # context4: git rev-parse --abbrev-ref HEAD
+ ])
+ self.assertNotEqual(context1, context4)