summaryrefslogtreecommitdiff
path: root/test/git/test_git.py
blob: 0634a5ddf339c9fa257136591fc384523233e4d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os
from test.testlib import *
from git_python import *

class TestGit(object):
    def setup(self):
        base = os.path.join(os.path.dirname(__file__), "../.."),
        self.git = Git(base)
        self.git_bin_base = "%s --git-dir=%s" % (Git.git_binary, base)

    @patch(Git, 'execute')
    def test_method_missing_calls_execute(self, git):
        git.return_value = ''
        self.git.version()
        assert_true(git.called)
        # assert_equal(git.call_args, ((("%s version " % self.git_bin_base),), {}))
    
    def test_it_transforms_kwargs_into_git_command_arguments(self):
        assert_equal(["-s"], self.git.transform_kwargs(**{'s': True}))
        assert_equal(["-s 5"], self.git.transform_kwargs(**{'s': 5}))

        assert_equal(["--max-count"], self.git.transform_kwargs(**{'max_count': True}))
        assert_equal(["--max-count=5"], self.git.transform_kwargs(**{'max_count': 5}))
        
        assert_equal(["-s", "-t"], self.git.transform_kwargs(**{'s': True, 't': True}))

    def test_it_executes_git_to_shell_and_returns_result(self):
        assert_match('^git version [\d\.]*$', self.git.execute("%s version" % Git.git_binary))

    def test_it_transforms_kwargs_shell_escapes_arguments(self):
        assert_equal(["--foo=\"bazz'er\""], self.git.transform_kwargs(**{'foo': "bazz'er"}))
        assert_equal(["-x \"bazz'er\""], self.git.transform_kwargs(**{'x': "bazz'er"}))

    @patch(Git, 'execute')
    def test_it_really_shell_escapes_arguments_to_the_git_shell_1(self, git):
        self.git.foo(**{'bar': "bazz'er"})
        assert_true(git.called)
        assert_equal(git.call_args, ((("%s foo --bar=\"bazz'er\"" % self.git_bin_base),), {}))

    @patch(Git, 'execute')
    def test_it_really_shell_escapes_arguments_to_the_git_shell_2(self, git):
        self.git.bar(**{'x': "quu'x"})
        assert_true(git.called)
        assert_equal(git.call_args, ((("%s bar -x \"quu'x\"" % self.git_bin_base),), {}))

    def test_it_shell_escapes_the_standalone_argument(self):
        self.git.foo("bar's", {})