~bzr-pqm/bzr/bzr.dev

5320.2.2 by Robert Collins
Move BzrLibraryState to its own module and prepare to start testing it.
1
# Copyright (C) 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
"""Tests for BzrLibraryState."""
18
19
import bzrlib
20
from bzrlib import (
21
    library_state,
22
    tests,
5320.2.3 by Robert Collins
Restore the original ui_factory when existing BzrLibraryState.
23
    ui as _mod_ui
5320.2.2 by Robert Collins
Move BzrLibraryState to its own module and prepare to start testing it.
24
    )
5320.2.5 by Robert Collins
Make bzrlib startup use a trace context manager.
25
from bzrlib.tests import fixtures
5320.2.2 by Robert Collins
Move BzrLibraryState to its own module and prepare to start testing it.
26
27
5320.2.3 by Robert Collins
Restore the original ui_factory when existing BzrLibraryState.
28
# TODO: once sufficiently cleaned up this should be able to be TestCase.
29
class TestLibraryState(tests.TestCaseWithTransport):
5320.2.2 by Robert Collins
Move BzrLibraryState to its own module and prepare to start testing it.
30
5320.2.3 by Robert Collins
Restore the original ui_factory when existing BzrLibraryState.
31
    def test_ui_is_used(self):
32
        ui = _mod_ui.SilentUIFactory()
5320.2.5 by Robert Collins
Make bzrlib startup use a trace context manager.
33
        state = library_state.BzrLibraryState(
34
            ui=ui, trace=fixtures.RecordingContextManager())
5320.2.3 by Robert Collins
Restore the original ui_factory when existing BzrLibraryState.
35
        orig_ui = _mod_ui.ui_factory
36
        state.__enter__()
37
        try:
38
            self.assertEqual(ui, _mod_ui.ui_factory)
39
        finally:
40
            state.__exit__(None, None, None)
41
            self.assertEqual(orig_ui, _mod_ui.ui_factory)
5320.2.5 by Robert Collins
Make bzrlib startup use a trace context manager.
42
43
    def test_trace_context(self):
44
        tracer = fixtures.RecordingContextManager()
45
        ui = _mod_ui.SilentUIFactory()
46
        state = library_state.BzrLibraryState(ui=ui, trace=tracer)
47
        state.__enter__()
48
        try:
49
            self.assertEqual(['__enter__'], tracer._calls)
50
        finally:
51
            state.__exit__(None, None, None)
52
            self.assertEqual(['__enter__', '__exit__'], tracer._calls)