~bzr-pqm/bzr/bzr.dev

5387.2.7 by John Arbash Meinel
Merge bzr.dev 5444 to resolve some small text conflicts.
1
# Copyright (C) 2010 Canonical Ltd
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
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 (
5422.1.3 by Martin Pool
Delete CapturingUIFactory methods that can inherit from DummyProgress
22
    progress,
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
23
    ui,
24
    )
25
26
5422.1.4 by Martin Pool
Rename CapturingUIFactory to ProgressRecordingUIFactory
27
class ProgressRecordingUIFactory(ui.UIFactory, progress.DummyProgress):
5422.1.3 by Martin Pool
Delete CapturingUIFactory methods that can inherit from DummyProgress
28
    """Captures progress updates made through it.
29
    
30
    This is overloaded as both the UIFactory and the progress model."""
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
31
32
    def __init__(self):
5422.1.4 by Martin Pool
Rename CapturingUIFactory to ProgressRecordingUIFactory
33
        super(ProgressRecordingUIFactory, self).__init__()
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
34
        self._calls = []
35
        self.depth = 0
36
5422.1.3 by Martin Pool
Delete CapturingUIFactory methods that can inherit from DummyProgress
37
    def nested_progress_bar(self):
38
        self.depth += 1
39
        return self
5422.1.1 by Martin Pool
Move CapturingUIFactory out of per_workingtree tests into somewhere reusable
40
41
    def finished(self):
42
        self.depth -= 1
43
44
    def update(self, message, count=None, total=None):
45
        if self.depth == 1:
46
            self._calls.append(("update", count, total, message))