Example #1
0
 def test_install_commit_msg_hook(self, isdir, path_exists, copy, stat, chmod):
     GitHookInstaller.install_commit_msg_hook()
     isdir.assert_called_once_with('.git/hooks')
     path_exists.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH, COMMIT_MSG_HOOK_DST_PATH)
     stat.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH)
     chmod.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH, ANY)
Example #2
0
    def test_install_commit_msg_hook_negative(self, git_hooks_dir, isdir,
                                              path_exists, copy):
        lint_config = LintConfig()
        lint_config.target = os.path.join(u"/hür", u"dur")
        git_hooks_dir.return_value = os.path.join(u"/föo", u"bar", ".git",
                                                  "hooks")
        # mock that current dir is not a git repo
        isdir.return_value = False
        expected_msg = u"{0} is not a git repository".format(
            lint_config.target)
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
            isdir.assert_called_with(git_hooks_dir.return_value)
            path_exists.assert_not_called()
            copy.assert_not_called()

        # mock that there is already a commit hook present
        isdir.return_value = True
        path_exists.return_value = True
        expected_dst = os.path.join(git_hooks_dir.return_value,
                                    COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = u"There is already a commit-msg hook file present in {0}.\n".format(expected_dst) + \
                       "gitlint currently does not support appending to an existing commit-msg file."
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
Example #3
0
 def test_install_commit_msg_hook(isdir, path_exists, copy, stat, chmod):
     lint_config = LintConfig(target="/foo/bar")
     expected_dst = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
     GitHookInstaller.install_commit_msg_hook(lint_config)
     isdir.assert_called_once_with('/foo/bar/.git/hooks')
     path_exists.assert_called_once_with(expected_dst)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH, expected_dst)
     stat.assert_called_once_with(expected_dst)
     chmod.assert_called_once_with(expected_dst, ANY)
Example #4
0
 def test_install_commit_msg_hook(self, isdir, path_exists, copy, stat,
                                  chmod):
     GitHookInstaller.install_commit_msg_hook()
     isdir.assert_called_once_with('.git/hooks')
     path_exists.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH,
                                  COMMIT_MSG_HOOK_DST_PATH)
     stat.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH)
     chmod.assert_called_once_with(COMMIT_MSG_HOOK_DST_PATH, ANY)
 def test_install_commit_msg_hook(isdir, path_exists, copy, stat, chmod):
     lint_config = LintConfig(target="/foo/bar")
     expected_dst = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
     GitHookInstaller.install_commit_msg_hook(lint_config)
     isdir.assert_called_once_with('/foo/bar/.git/hooks')
     path_exists.assert_called_once_with(expected_dst)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH, expected_dst)
     stat.assert_called_once_with(expected_dst)
     chmod.assert_called_once_with(expected_dst, ANY)
    def test_uninstall_commit_msg_hook(isdir, path_exists, remove):
        lint_config = LintConfig(target="/foo/bar")
        read_data = "#!/bin/sh\n" + GITLINT_HOOK_IDENTIFIER
        with patch('gitlint.hooks.open', mock_open(read_data=read_data), create=True):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)

        expected_dst = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
        isdir.assert_called_once_with('/foo/bar/.git/hooks')
        path_exists.assert_called_once_with(expected_dst)
        remove.assert_called_once_with(expected_dst)
Example #7
0
 def test_install_commit_msg_hook(self, isdir, path_exists, copy, stat, chmod):
     lint_config = LintConfig()
     lint_config.target = self.SAMPLES_DIR
     expected_dst = os.path.join(self.SAMPLES_DIR, COMMIT_MSG_HOOK_DST_PATH)
     GitHookInstaller.install_commit_msg_hook(lint_config)
     isdir.assert_called_with(self.SAMPLES_DIR + '/.git/hooks')
     path_exists.assert_called_once_with(expected_dst)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH, expected_dst)
     stat.assert_called_once_with(expected_dst)
     chmod.assert_called_once_with(expected_dst, ANY)
Example #8
0
    def test_uninstall_commit_msg_hook(isdir, path_exists, remove):
        lint_config = LintConfig()
        lint_config.target = u"/foo/bår"
        read_data = "#!/bin/sh\n" + GITLINT_HOOK_IDENTIFIER
        with patch('gitlint.hooks.open', mock_open(read_data=read_data), create=True):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)

        expected_dst = os.path.join(u"/foo/bår", COMMIT_MSG_HOOK_DST_PATH)
        isdir.assert_called_with(os.path.join(u"/foo/bår", '.git/hooks'))
        path_exists.assert_called_once_with(expected_dst)
        remove.assert_called_with(expected_dst)
Example #9
0
    def test_install_commit_msg_hook_negative(self, isdir, path_exists, copy):
        # mock that current dir is not a git repo
        isdir.return_value = False
        with self.assertRaises(GitHookInstallerError):
            GitHookInstaller.install_commit_msg_hook()
            isdir.assert_called_once_with('.git/hooks')
            path_exists.assert_not_called()
            copy.assert_not_called()

        # mock that there is already a commit hook present
        isdir.return_value = True
        path_exists.return_value = True
        with self.assertRaises(GitHookInstallerError):
            GitHookInstaller.install_commit_msg_hook()
Example #10
0
    def test_install_commit_msg_hook_negative(self, isdir, path_exists, copy):
        # mock that current dir is not a git repo
        isdir.return_value = False
        with self.assertRaises(GitHookInstallerError):
            GitHookInstaller.install_commit_msg_hook()
            isdir.assert_called_once_with('.git/hooks')
            path_exists.assert_not_called()
            copy.assert_not_called()

        # mock that there is already a commit hook present
        isdir.return_value = True
        path_exists.return_value = True
        with self.assertRaises(GitHookInstallerError):
            GitHookInstaller.install_commit_msg_hook()
Example #11
0
 def test_install_commit_msg_hook(git_hooks_dir, isdir, path_exists, copy,
                                  stat, chmod):
     lint_config = LintConfig()
     lint_config.target = os.path.join(u"/hür", u"dur")
     git_hooks_dir.return_value = os.path.join(u"/föo", u"bar", ".git",
                                               "hooks")
     expected_dst = os.path.join(git_hooks_dir.return_value,
                                 COMMIT_MSG_HOOK_DST_PATH)
     GitHookInstaller.install_commit_msg_hook(lint_config)
     isdir.assert_called_with(git_hooks_dir.return_value)
     path_exists.assert_called_once_with(expected_dst)
     copy.assert_called_once_with(COMMIT_MSG_HOOK_SRC_PATH, expected_dst)
     stat.assert_called_once_with(expected_dst)
     chmod.assert_called_once_with(expected_dst, ANY)
     git_hooks_dir.assert_called_with(lint_config.target)
Example #12
0
 def test_commit_msg_hook_path(self):
     lint_config = LintConfig()
     lint_config.target = self.SAMPLES_DIR
     expected_path = os.path.join(self.SAMPLES_DIR,
                                  COMMIT_MSG_HOOK_DST_PATH)
     path = GitHookInstaller.commit_msg_hook_path(lint_config)
     self.assertEqual(path, expected_path)
Example #13
0
    def test_uninstall_commit_msg_hook(git_hooks_dir, isdir, path_exists,
                                       remove):
        lint_config = LintConfig()
        git_hooks_dir.return_value = os.path.join(u"/föo", u"bar", ".git",
                                                  "hooks")
        lint_config.target = os.path.join(u"/hür", u"dur")
        read_data = "#!/bin/sh\n" + GITLINT_HOOK_IDENTIFIER
        with patch('gitlint.hooks.io.open',
                   mock_open(read_data=read_data),
                   create=True):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)

        expected_dst = os.path.join(git_hooks_dir.return_value,
                                    COMMIT_MSG_HOOK_DST_PATH)
        isdir.assert_called_with(git_hooks_dir.return_value)
        path_exists.assert_called_once_with(expected_dst)
        remove.assert_called_with(expected_dst)
        git_hooks_dir.assert_called_with(lint_config.target)
Example #14
0
    def test_commit_msg_hook_path(self, git_hooks_dir):
        git_hooks_dir.return_value = os.path.join(u"/föo", u"bar")
        lint_config = LintConfig()
        lint_config.target = self.SAMPLES_DIR
        expected_path = os.path.join(git_hooks_dir.return_value,
                                     COMMIT_MSG_HOOK_DST_PATH)
        path = GitHookInstaller.commit_msg_hook_path(lint_config)

        git_hooks_dir.assert_called_once_with(self.SAMPLES_DIR)
        self.assertEqual(path, expected_path)
    def test_install_commit_msg_hook_negative(self, isdir, path_exists, copy):
        lint_config = LintConfig(target="/foo/bar")
        # mock that current dir is not a git repo
        isdir.return_value = False
        expected_msg = "/foo/bar is not a git repository"
        with self.assertRaisesRegexp(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
            isdir.assert_called_once_with('/foo/bar/.git/hooks')
            path_exists.assert_not_called()
            copy.assert_not_called()

        # mock that there is already a commit hook present
        isdir.return_value = True
        path_exists.return_value = True
        expected_dst = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = "There is already a commit-msg hook file present in {0}.\n".format(expected_dst) + \
                       "gitlint currently does not support appending to an existing commit-msg file."
        with self.assertRaisesRegexp(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
Example #16
0
    def test_install_commit_msg_hook_negative(self, isdir, path_exists, copy):
        lint_config = LintConfig(target="/foo/bar")
        # mock that current dir is not a git repo
        isdir.return_value = False
        expected_msg = "/foo/bar is not a git repository"
        with self.assertRaisesRegexp(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
            isdir.assert_called_once_with('/foo/bar/.git/hooks')
            path_exists.assert_not_called()
            copy.assert_not_called()

        # mock that there is already a commit hook present
        isdir.return_value = True
        path_exists.return_value = True
        expected_dst = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = "There is already a commit-msg hook file present in {0}.\n".format(expected_dst) + \
                       "gitlint currently does not support appending to an existing commit-msg file."
        with self.assertRaisesRegexp(GitHookInstallerError, expected_msg):
            GitHookInstaller.install_commit_msg_hook(lint_config)
Example #17
0
    def test_uninstall_commit_msg_hook_negative(self, isdir, path_exists, remove):
        lint_config = LintConfig()
        lint_config.target = u"/foo/bår"
        # mock that the current directory is not a git repo
        isdir.return_value = False
        expected_msg = u"{0} is not a git repository".format(u"/foo/bår")
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            isdir.assert_called_with(os.path.join(u"/foo/bår", '.git/hooks'))
            path_exists.assert_not_called()
            remove.assert_not_called()

        # mock that there is no commit hook present
        isdir.return_value = True
        path_exists.return_value = False
        expected_dst = os.path.join(u"/foo/bår", COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = u"There is no commit-msg hook present in {0}.".format(expected_dst)
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            isdir.assert_called_with(os.path.join(u"/foo/bår", '.git/hooks'))
            path_exists.assert_called_once_with(expected_dst)
            remove.assert_not_called()

        # mock that there is a different (=not gitlint) commit hook
        isdir.return_value = True
        path_exists.return_value = True
        read_data = "#!/bin/sh\nfoo"
        expected_dst = os.path.join(u"/foo/bår", COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = u"The commit-msg hook in {0} was not installed by gitlint ".format(expected_dst) + \
                       r"\(or it was modified\).\nUninstallation of 3th party or modified gitlint hooks " + \
                       "is not supported."
        with patch('gitlint.hooks.open', mock_open(read_data=read_data), create=True):
            with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
                GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            remove.assert_not_called()
Example #18
0
    def test_uninstall_commit_msg_hook_negative(self, isdir, path_exists, remove):
        lint_config = LintConfig()
        lint_config.target = self.SAMPLES_DIR
        # mock that the current directory is not a git repo
        isdir.return_value = False
        expected_msg = "{0} is not a git repository".format(self.SAMPLES_DIR)
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            isdir.assert_called_with(os.path.join(self.SAMPLES_DIR, '.git/hooks'))
            path_exists.assert_not_called()
            remove.assert_not_called()

        # mock that there is no commit hook present
        isdir.return_value = True
        path_exists.return_value = False
        expected_dst = os.path.join(self.SAMPLES_DIR, COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = "There is no commit-msg hook present in {0}.".format(expected_dst)
        with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
            GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            isdir.assert_called_with(os.path.join(self.SAMPLES_DIR, '.git/hooks'))
            path_exists.assert_called_once_with(expected_dst)
            remove.assert_not_called()

        # mock that there is a different (=not gitlint) commit hook
        isdir.return_value = True
        path_exists.return_value = True
        read_data = "#!/bin/sh\nfoo"
        expected_dst = os.path.join(self.SAMPLES_DIR, COMMIT_MSG_HOOK_DST_PATH)
        expected_msg = "The commit-msg hook in {0} was not installed by gitlint ".format(expected_dst) + \
                       r"\(or it was modified\).\nUninstallation of 3th party or modified gitlint hooks " + \
                       "is not supported."
        with patch('gitlint.hooks.open', mock_open(read_data=read_data), create=True):
            with self.assertRaisesRegex(GitHookInstallerError, expected_msg):
                GitHookInstaller.uninstall_commit_msg_hook(lint_config)
            remove.assert_not_called()
Example #19
0
 def test_commit_msg_hook_path(self):
     lint_config = LintConfig(target="/foo/bar")
     expected_path = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
     path = GitHookInstaller.commit_msg_hook_path(lint_config)
     self.assertEqual(path, expected_path)
 def test_commit_msg_hook_path(self):
     lint_config = LintConfig(target="/foo/bar")
     expected_path = os.path.join("/foo/bar", COMMIT_MSG_HOOK_DST_PATH)
     path = GitHookInstaller.commit_msg_hook_path(lint_config)
     self.assertEqual(path, expected_path)
Example #21
0
 def test_commit_msg_hook_path(self):
     lint_config = LintConfig()
     lint_config.target = self.SAMPLES_DIR
     expected_path = os.path.join(self.SAMPLES_DIR, COMMIT_MSG_HOOK_DST_PATH)
     path = GitHookInstaller.commit_msg_hook_path(lint_config)
     self.assertEqual(path, expected_path)