/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2005 Canonical Ltd
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
2
# -*- coding: utf-8 -*-
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
3
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
8
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
13
#
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
17
18
19
"""Black-box tests for bzr cat.
20
"""
21
22
import os
3063.4.1 by Lukáš Lalinský
Fix UnboundLocalError in cmd_cat.
23
import sys
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
24
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
25
from bzrlib.tests.blackbox import TestCaseWithTransport
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
26
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
27
class TestCat(TestCaseWithTransport):
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
28
29
    def test_cat(self):
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
30
        tree = self.make_branch_and_tree('branch')
31
        self.build_tree_contents([('branch/a', 'foo\n')])
32
        tree.add('a')
1907.4.3 by Matthieu Moy
bzr cat now works nicely with revno:N:path too
33
        os.chdir('branch')
1185.50.9 by John Arbash Meinel
[bug 3632] Matthieu Moy- bzr cat should default to last revision
34
        # 'bzr cat' without an option should cat the last revision
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
35
        self.run_bzr(['cat', 'a'], retcode=3)
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
36
37
        tree.commit(message='1')
38
        self.build_tree_contents([('a', 'baz\n')])
39
2738.4.3 by Daniel Watkins
Converted run_bzr to run_bzr_subprocess where appropriate in cat.
40
        # We use run_bzr_subprocess rather than run_bzr here so that we can
41
        # test mangling of line-endings on Windows.
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
42
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'foo\n')
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
43
44
        tree.commit(message='2')
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
45
        self.assertEquals(self.run_bzr_subprocess(['cat', 'a'])[0], 'baz\n')
46
        self.assertEquals(self.run_bzr_subprocess(
47
            ['cat', 'a', '-r', '1'])[0],
48
            'foo\n')
49
        self.assertEquals(self.run_bzr_subprocess(
50
            ['cat', 'a', '-r', '-1'])[0],
51
            'baz\n')
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
52
2738.4.1 by Daniel Watkins
Merged original changes and tweaked cat.
53
        rev_id = tree.branch.last_revision()
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
54
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
55
        self.assertEquals(self.run_bzr_subprocess(
56
            ['cat', 'a', '-r', 'revid:%s' % rev_id])[0],
57
            'baz\n')
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
58
1907.4.3 by Matthieu Moy
bzr cat now works nicely with revno:N:path too
59
        os.chdir('..')
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
60
2738.4.7 by Martin Pool
Fix up calls to run_bzr from test_cat
61
        self.assertEquals(self.run_bzr_subprocess(
62
            ['cat', 'branch/a', '-r', 'revno:1:branch'])[0],
63
            'foo\n')
64
        self.run_bzr(['cat', 'a'], retcode=3)
65
        self.run_bzr(
66
                ['cat', 'a', '-r', 'revno:1:branch-that-does-not-exist'],
67
                retcode=3)
2664.13.1 by Daniel Watkins
tests.blackbox.test_cat now uses internals where appropriate.
68
2073.2.4 by wang
Fix syntax error in test.
69
    def test_cat_different_id(self):
2073.2.1 by wang
``bzr cat`` can look up contents of removed or renamed files. If the
70
        """'cat' works with old and new files"""
2073.2.4 by wang
Fix syntax error in test.
71
        tree = self.make_branch_and_tree('.')
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
72
        # the files are named after their path in the revision and
73
        # current trees later in the test case
74
        # a-rev-tree is special because it appears in both the revision
75
        # tree and the working tree
76
        self.build_tree_contents([('a-rev-tree', 'foo\n'),
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
77
            ('c-rev', 'baz\n'), ('d-rev', 'bar\n'), ('e-rev', 'qux\n')])
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
78
        tree.lock_write()
79
        try:
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
80
            tree.add(['a-rev-tree', 'c-rev', 'd-rev', 'e-rev'])
81
            tree.commit('add test files', rev_id='first')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
82
            # remove currently uses self._write_inventory -
2255.7.70 by Robert Collins
Workaround WorkingTree4 not having a native remove() in test_cat.
83
            # work around that for now.
84
            tree.flush()
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
85
            tree.remove(['d-rev'])
86
            tree.rename_one('a-rev-tree', 'b-tree')
87
            tree.rename_one('c-rev', 'a-rev-tree')
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
88
            tree.rename_one('e-rev', 'old-rev')
89
            self.build_tree_contents([('e-rev', 'new\n')])
90
            tree.add(['e-rev'])
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
91
        finally:
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
92
            # calling bzr as another process require free lock on win32
2073.2.3 by wang
Change option name to --name-from-revision. Always make new tree the
93
            tree.unlock()
94
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
95
        # 'b-tree' is not present in the old tree.
96
        self.run_bzr_error(["^bzr: ERROR: u?'b-tree' "
97
                            "is not present in revision .+$"],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
98
                           'cat b-tree --name-from-revision')
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
99
100
        # get to the old file automatically
2738.4.3 by Daniel Watkins
Converted run_bzr to run_bzr_subprocess where appropriate in cat.
101
        out, err = self.run_bzr_subprocess('cat d-rev')
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
102
        self.assertEqual('bar\n', out)
103
        self.assertEqual('', err)
104
2738.4.6 by Daniel Watkins
Rewrapped lines longer than 79 characters.
105
        out, err = \
106
                self.run_bzr_subprocess('cat a-rev-tree --name-from-revision')
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
107
        self.assertEqual('foo\n', out)
108
        self.assertEqual('', err)
109
2738.4.3 by Daniel Watkins
Converted run_bzr to run_bzr_subprocess where appropriate in cat.
110
        out, err = self.run_bzr_subprocess('cat a-rev-tree')
2379.6.1 by Alexander Belchenko
blackbox: test_cat_different_id: calling bzr as another process require free lock on win32
111
        self.assertEqual('baz\n', out)
112
        self.assertEqual('', err)
113
4112.1.1 by Vincent Ladeuil
Fallback to old revision id if the current one doesn't exist in
114
        # the actual file-id for e-rev doesn't exist in the old tree
115
        out, err = self.run_bzr_subprocess('cat e-rev -rrevid:first')
116
        self.assertEqual('qux\n', out)
117
        self.assertEqual('', err)
118
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
119
    def test_remote_cat(self):
120
        wt = self.make_branch_and_tree('.')
2158.1.2 by Wouter van Heyst
Actually check if cat returns the right content.
121
        self.build_tree(['README'])
2158.1.1 by Wouter van Heyst
Fix #73500 mostly by catching a NotLocalUrl exception in cmd_cat.
122
        wt.add('README')
123
        wt.commit('Making sure there is a basis_tree available')
124
125
        url = self.get_readonly_url() + '/README'
2738.4.3 by Daniel Watkins
Converted run_bzr to run_bzr_subprocess where appropriate in cat.
126
        out, err = self.run_bzr_subprocess(['cat', url])
2158.1.2 by Wouter van Heyst
Actually check if cat returns the right content.
127
        self.assertEqual('contents of README\n', out)
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
128
3368.2.31 by Ian Clatworthy
add --filters option to cat command
129
    def test_cat_filters(self):
130
        wt = self.make_branch_and_tree('.')
131
        self.build_tree(['README'])
132
        wt.add('README')
133
        wt.commit('Making sure there is a basis_tree available')
134
        url = self.get_readonly_url() + '/README'
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
135
3368.2.31 by Ian Clatworthy
add --filters option to cat command
136
        # Test unfiltered output
137
        out, err = self.run_bzr_subprocess(['cat', url])
138
        self.assertEqual('contents of README\n', out)
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
139
140
        # Test --filters option is legal but has no impact if no filters
3368.2.31 by Ian Clatworthy
add --filters option to cat command
141
        out, err = self.run_bzr_subprocess(['cat', '--filters', url])
142
        self.assertEqual('contents of README\n', out)
143
3368.2.48 by Ian Clatworthy
apply first round of poolie's review feedback
144
    def test_cat_filters_applied(self):
145
        # Test filtering applied to output. This is tricky to do in a
146
        # subprocess because we really need to patch in a plugin that
147
        # registers the filters. Instead, we patch in a custom
148
        # filter_stack and use run_bzr() ...
149
        from cStringIO import StringIO
150
        from bzrlib.commands import run_bzr
151
        from bzrlib.tests.test_filters import _stack_2
152
        from bzrlib.trace import mutter
153
        from bzrlib.tree import Tree
154
        wt = self.make_branch_and_tree('.')
155
        self.build_tree_contents([
156
            ('README', "junk\nline 1 of README\nline 2 of README\n"),
157
            ])
158
        wt.add('README')
159
        wt.commit('Making sure there is a basis_tree available')
160
        url = self.get_readonly_url() + '/README'
161
        real_content_filter_stack = Tree._content_filter_stack
162
        def _custom_content_filter_stack(tree, path=None, file_id=None):
163
            return _stack_2
164
        Tree._content_filter_stack = _custom_content_filter_stack
165
        try:
166
            out, err = self.run_bzr(['cat', url, '--filters'])
167
            # The filter stack will remove the first line and swapcase the rest
168
            self.assertEqual('LINE 1 OF readme\nLINE 2 OF readme\n', out)
169
            self.assertEqual('', err)
170
        finally:
171
            Tree._content_filter_stack = real_content_filter_stack
172
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
173
    def test_cat_no_working_tree(self):
174
        wt = self.make_branch_and_tree('.')
175
        self.build_tree(['README'])
176
        wt.add('README')
177
        wt.commit('Making sure there is a basis_tree available')
178
        wt.branch.bzrdir.destroy_workingtree()
179
180
        url = self.get_readonly_url() + '/README'
2738.4.3 by Daniel Watkins
Converted run_bzr to run_bzr_subprocess where appropriate in cat.
181
        out, err = self.run_bzr_subprocess(['cat', url])
2309.1.1 by James Westby
Allow bzr cat to be used against treeless repositories.
182
        self.assertEqual('contents of README\n', out)
2738.4.6 by Daniel Watkins
Rewrapped lines longer than 79 characters.
183
3063.4.2 by John Arbash Meinel
Fix 'nonexistent'
184
    def test_cat_nonexistent_branch(self):
3063.4.1 by Lukáš Lalinský
Fix UnboundLocalError in cmd_cat.
185
        if sys.platform == "win32":
186
            location = "C:/i/do/not/exist"
187
        else:
188
            location = "/i/do/not/exist"
189
        self.run_bzr_error(['^bzr: ERROR: Not a branch'], ['cat', location])