1
# Copyright (C) 2008, 2009, 2011, 2012, 2016 Canonical Ltd
1
# Copyright (C) 2008 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 breezy.branch import Branch
20
from breezy.tests import TestCaseWithTransport
19
from bzrlib.branch import Branch
20
from bzrlib.tests import TestCaseWithTransport
27
23
class TestHooks(TestCaseWithTransport):
29
25
def _check_hooks_output(self, command_output, hooks):
30
26
for hook_type in Branch.hooks:
31
27
s = "\n ".join(hooks.get(hook_type, ["<no hooks installed>"]))
32
self.assertTrue("%s:\n %s" % (hook_type, s) in command_output)
28
self.assert_("%s:\n %s" % (hook_type, s) in command_output)
34
30
def test_hooks_with_no_hooks(self):
35
31
self.make_branch('.')
41
37
def test_hooks_with_unnamed_hook(self):
42
38
self.make_branch('.')
45
Branch.hooks.install_named_hook('post_push', foo, None)
40
Branch.hooks.install_named_hook('set_rh', foo, None)
46
41
out, err = self.run_bzr('hooks')
47
self._check_hooks_output(out, {'post_push': ["No hook name"]})
42
self._check_hooks_output(out, {'set_rh': ["No hook name"]})
49
44
def test_hooks_with_named_hook(self):
50
45
self.make_branch('.')
53
47
name = "Foo Bar Hook"
54
Branch.hooks.install_named_hook('post_push', foo, name)
48
Branch.hooks.install_named_hook('set_rh', foo, name)
55
49
out, err = self.run_bzr('hooks')
56
self._check_hooks_output(out, {'post_push': [name]})
50
self._check_hooks_output(out, {'set_rh': [name]})
58
52
def test_hooks_no_branch(self):
59
53
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"]})