1
# Copyright (C) 2008 Canonical Ltd
1
# Copyright (C) 2008, 2009, 2011, 2012, 2016 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
17
17
"""Tests for commands related to hooks"""
19
from bzrlib.branch import Branch
20
from bzrlib.tests import TestCaseWithTransport
19
from breezy.branch import Branch
20
from breezy.tests import TestCaseWithTransport
23
27
class TestHooks(TestCaseWithTransport):
25
29
def _check_hooks_output(self, command_output, hooks):
26
30
for hook_type in Branch.hooks:
27
31
s = "\n ".join(hooks.get(hook_type, ["<no hooks installed>"]))
28
self.assert_("%s:\n %s" % (hook_type, s) in command_output)
32
self.assertTrue("%s:\n %s" % (hook_type, s) in command_output)
30
34
def test_hooks_with_no_hooks(self):
31
35
self.make_branch('.')
37
41
def test_hooks_with_unnamed_hook(self):
38
42
self.make_branch('.')
40
Branch.hooks.install_named_hook('set_rh', foo, None)
45
Branch.hooks.install_named_hook('post_push', foo, None)
41
46
out, err = self.run_bzr('hooks')
42
self._check_hooks_output(out, {'set_rh': ["No hook name"]})
47
self._check_hooks_output(out, {'post_push': ["No hook name"]})
44
49
def test_hooks_with_named_hook(self):
45
50
self.make_branch('.')
47
53
name = "Foo Bar Hook"
48
Branch.hooks.install_named_hook('set_rh', foo, name)
54
Branch.hooks.install_named_hook('post_push', foo, name)
49
55
out, err = self.run_bzr('hooks')
50
self._check_hooks_output(out, {'set_rh': [name]})
56
self._check_hooks_output(out, {'post_push': [name]})
52
58
def test_hooks_no_branch(self):
53
59
self.run_bzr('hooks')
61
def test_hooks_lazy_with_unnamed_hook(self):
65
Branch.hooks.install_named_hook_lazy('post_push',
66
'breezy.tests.blackbox.test_hooks',
69
out, err = self.run_bzr('hooks')
70
self._check_hooks_output(out, {'post_push': ["No hook name"]})
72
def test_hooks_lazy_with_named_hook(self):
76
Branch.hooks.install_named_hook_lazy('post_push',
77
'breezy.tests.blackbox.test_hooks',
80
out, err = self.run_bzr('hooks')
81
self._check_hooks_output(out, {'post_push': ["hook has a name"]})