/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
1
# Copyright (C) 2006-2010 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
17
"""UI implementations for use in testing.
18
"""
19
20
21
from bzrlib import (
22
    ui,
23
    )
24
25
26
class CapturingUIFactory(ui.UIFactory):
27
    """A UI Factory for testing - capture the updates made through it."""
28
29
    def __init__(self):
30
        super(CapturingUIFactory, self).__init__()
31
        self._calls = []
32
        self.depth = 0
33
34
    def clear(self):
35
        """See progress.ProgressTask.clear()."""
36
37
    def clear_term(self):
38
        """See progress.ProgressTask.clear_term()."""
39
40
    def finished(self):
41
        """See progress.ProgressTask.finished()."""
42
        self.depth -= 1
43
44
    def note(self, fmt_string, *args, **kwargs):
45
        """See progress.ProgressTask.note()."""
46
47
    def progress_bar(self):
48
        return self
49
50
    def nested_progress_bar(self):
51
        self.depth += 1
52
        return self
53
54
    def update(self, message, count=None, total=None):
55
        """See progress.ProgressTask.update()."""
56
        if self.depth == 1:
57
            self._calls.append(("update", count, total, message))
58
59