17
17
"""Tests for the view command"""
19
from bzrlib import bzrdir
20
from bzrlib.tests import TestCaseWithTransport
21
from bzrlib.workingtree import WorkingTree
19
from breezy.bzr import bzrdir
20
from breezy.tests import TestCaseWithTransport
21
from breezy.workingtree import WorkingTree
24
24
class TestViewUI(TestCaseWithTransport):
26
def make_branch_and_tree(self):
27
# we need to use a specific format because the default format
28
# doesn't support views yet
29
format = bzrdir.format_registry.make_bzrdir('development6-rich-root')
30
return TestCaseWithTransport.make_branch_and_tree(self, '.',
33
26
def test_view_command_help(self):
34
27
out, err = self.run_bzr('help view')
35
28
self.assertContainsRe(out, 'Manage filtered views')
37
30
def test_define_view(self):
38
wt = self.make_branch_and_tree()
31
wt = self.make_branch_and_tree('.')
39
32
# Check definition of a new view
40
33
out, err = self.run_bzr('view a b c')
41
self.assertEquals(out, "Using 'my' view: a, b, c\n")
34
self.assertEqual(out, "Using 'my' view: a, b, c\n")
42
35
out, err = self.run_bzr('view e f --name foo')
43
self.assertEquals(out, "Using 'foo' view: e, f\n")
36
self.assertEqual(out, "Using 'foo' view: e, f\n")
44
37
# Check re-definition of an existing view
45
38
out, err = self.run_bzr('view p q')
46
self.assertEquals(out, "Using 'foo' view: p, q\n")
39
self.assertEqual(out, "Using 'foo' view: p, q\n")
47
40
out, err = self.run_bzr('view r s --name my')
48
self.assertEquals(out, "Using 'my' view: r, s\n")
41
self.assertEqual(out, "Using 'my' view: r, s\n")
49
42
# Check attempts to define the 'off' view are prevented
50
43
out, err = self.run_bzr('view a --name off', retcode=3)
51
44
self.assertContainsRe(err, "Cannot change the 'off' pseudo view")
53
46
def test_list_view(self):
54
wt = self.make_branch_and_tree()
47
wt = self.make_branch_and_tree('.')
55
48
# Check list of the current view
56
49
out, err = self.run_bzr('view')
57
self.assertEquals(out, "No current view.\n")
50
self.assertEqual(out, "No current view.\n")
58
51
self.run_bzr('view a b c')
59
52
out, err = self.run_bzr('view')
60
self.assertEquals(out, "'my' view is: a, b, c\n")
53
self.assertEqual(out, "'my' view is: a, b, c\n")
61
54
# Check list of a named view
62
55
self.run_bzr('view e f --name foo')
63
56
out, err = self.run_bzr('view --name my')
64
self.assertEquals(out, "'my' view is: a, b, c\n")
57
self.assertEqual(out, "'my' view is: a, b, c\n")
65
58
out, err = self.run_bzr('view --name foo')
66
self.assertEquals(out, "'foo' view is: e, f\n")
59
self.assertEqual(out, "'foo' view is: e, f\n")
67
60
# Check list of all views
68
61
out, err = self.run_bzr('view --all')
69
self.assertEquals(out.splitlines(), [
62
self.assertEqual(out.splitlines(), [
76
69
self.assertContainsRe(err, "No such view")
78
71
def test_delete_view(self):
79
wt = self.make_branch_and_tree()
72
wt = self.make_branch_and_tree('.')
80
73
# Check delete of the current view
81
74
out, err = self.run_bzr('view --delete', retcode=3)
82
75
self.assertContainsRe(err, "No current view to delete")
83
76
self.run_bzr('view a b c')
84
77
out, err = self.run_bzr('view --delete')
85
self.assertEquals(out, "Deleted 'my' view.\n")
78
self.assertEqual(out, "Deleted 'my' view.\n")
86
79
# Check delete of a named view
87
80
self.run_bzr('view e f --name foo')
88
81
out, err = self.run_bzr('view --name foo --delete')
89
self.assertEquals(out, "Deleted 'foo' view.\n")
82
self.assertEqual(out, "Deleted 'foo' view.\n")
90
83
# Check delete of all views
91
84
out, err = self.run_bzr('view --delete --all')
92
self.assertEquals(out, "Deleted all views.\n")
85
self.assertEqual(out, "Deleted all views.\n")
93
86
# Check delete of an unknown view
94
87
out, err = self.run_bzr('view --delete --name bar', retcode=3)
95
88
self.assertContainsRe(err, "No such view")
96
89
# Check bad usage is reported to the user
97
90
out, err = self.run_bzr('view --delete --switch x', retcode=3)
98
91
self.assertContainsRe(err,
99
"Both --delete and --switch specified")
92
"Both --delete and --switch specified")
100
93
out, err = self.run_bzr('view --delete a b c', retcode=3)
101
94
self.assertContainsRe(err, "Both --delete and a file list specified")
103
96
def test_switch_view(self):
104
wt = self.make_branch_and_tree()
97
wt = self.make_branch_and_tree('.')
105
98
# Check switching to a named view
106
99
self.run_bzr('view a b c')
107
100
self.run_bzr('view e f --name foo')
108
101
out, err = self.run_bzr('view --switch my')
109
self.assertEquals(out, "Using 'my' view: a, b, c\n")
102
self.assertEqual(out, "Using 'my' view: a, b, c\n")
110
103
# Check switching off the current view does not delete it
111
104
out, err = self.run_bzr('view --switch off')
112
self.assertEquals(out, "Disabled 'my' view.\n")
105
self.assertEqual(out, "Disabled 'my' view.\n")
113
106
# Check error reporting when attempt to switch off again
114
107
out, err = self.run_bzr('view --switch off', retcode=3)
115
108
self.assertContainsRe(err, "No current view to disable")