/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
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
0.64.334 by Jelmer Vernooij
Remove old FSF address. Thanks Dan Callaghan.
14
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
15
16
"""Test the command implementations."""
17
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
18
from __future__ import absolute_import
19
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
20
import os
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
21
import re
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
22
import tempfile
23
import gzip
24
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
25
from .... import tests
26
from ....tests.blackbox import ExternalBase
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
27
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
28
from ..cmds import (
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
29
    _get_source_stream,
30
    )
31
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
32
from . import (
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
33
    FastimportFeature,
34
    )
35
36
37
class TestSourceStream(tests.TestCase):
38
39
    _test_needs_features = [FastimportFeature]
40
41
    def test_get_source_stream_stdin(self):
42
        # - returns standard in
43
        self.assertIsNot(None, _get_source_stream("-"))
44
45
    def test_get_source_gz(self):
46
        # files ending in .gz are automatically decompressed.
47
        fd, filename = tempfile.mkstemp(suffix=".gz")
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
48
        with gzip.GzipFile(fileobj=os.fdopen(fd, "wb"), mode='wb') as f:
49
            f.write(b"bla")
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
50
        stream = _get_source_stream(filename)
51
        self.assertIsNot("bla", stream.read())
52
53
    def test_get_source_file(self):
54
        # other files are opened as regular files.
55
        fd, filename = tempfile.mkstemp()
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
56
        with os.fdopen(fd, 'wb') as f:
57
            f.write(b"bla")
0.64.281 by Jelmer Vernooij
Add tests for _get_source_stream.
58
        stream = _get_source_stream(filename)
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
59
        self.assertIsNot(b"bla", stream.read())
60
61
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
62
fast_export_baseline_data = """commit refs/heads/master
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
63
mark :1
64
committer
65
data 15
66
add c, remove b
67
M 644 inline a
68
data 13
69
test 1
70
test 3
71
M 644 inline c
72
data 6
73
test 4
74
commit refs/heads/master
75
mark :2
76
committer
77
data 14
78
modify a again
79
from :1
80
M 644 inline a
81
data 20
82
test 1
83
test 3
84
test 5
85
commit refs/heads/master
86
mark :3
87
committer
88
data 5
89
add d
90
from :2
91
M 644 inline d
92
data 6
93
test 6
94
"""
95
7143.15.2 by Jelmer Vernooij
Run autopep8.
96
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
97
class TestFastExport(ExternalBase):
98
6628.1.5 by Jelmer Vernooij
Consistently use fastimport feature.
99
    _test_needs_features = [FastimportFeature]
100
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
101
    def test_empty(self):
102
        self.make_branch_and_tree("br")
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
103
        self.assertEquals("", self.run_bzr("fast-export br")[0])
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
104
105
    def test_pointless(self):
106
        tree = self.make_branch_and_tree("br")
107
        tree.commit("pointless")
108
        data = self.run_bzr("fast-export br")[0]
7143.15.2 by Jelmer Vernooij
Run autopep8.
109
        self.assertTrue(data.startswith(
110
            'commit refs/heads/master\nmark :1\ncommitter'))
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
111
112
    def test_file(self):
113
        tree = self.make_branch_and_tree("br")
114
        tree.commit("pointless")
115
        data = self.run_bzr("fast-export br br.fi")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
116
        self.assertEquals("", data)
0.64.314 by Jelmer Vernooij
Use TestCase.assertPathExists if available (fix deprecation warning with bzr 2.4)
117
        try:
118
            self.assertPathExists("br.fi")
7143.15.2 by Jelmer Vernooij
Run autopep8.
119
        except AttributeError:  # bzr < 2.4
0.64.314 by Jelmer Vernooij
Use TestCase.assertPathExists if available (fix deprecation warning with bzr 2.4)
120
            self.failUnlessExists("br.fi")
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
121
0.133.3 by Oleksandr Usov
Implement comments from patch review:
122
    def test_tag_rewriting(self):
123
        tree = self.make_branch_and_tree("br")
124
        tree.commit("pointless")
125
        self.assertTrue(tree.branch.supports_tags())
126
        rev_id = tree.branch.dotted_revno_to_revision_id((1,))
127
        tree.branch.tags.set_tag("goodTag", rev_id)
128
        tree.branch.tags.set_tag("bad Tag", rev_id)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
129
0.133.3 by Oleksandr Usov
Implement comments from patch review:
130
        # first check --no-rewrite-tag-names
131
        data = self.run_bzr("fast-export --plain --no-rewrite-tag-names br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
132
        self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
7143.15.2 by Jelmer Vernooij
Run autopep8.
133
        self.assertEqual(data.find("reset refs/tags/"),
134
                         data.rfind("reset refs/tags/"))
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
135
0.133.3 by Oleksandr Usov
Implement comments from patch review:
136
        # and now with --rewrite-tag-names
137
        data = self.run_bzr("fast-export --plain --rewrite-tag-names br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
138
        self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
0.133.3 by Oleksandr Usov
Implement comments from patch review:
139
        # "bad Tag" should be exported as bad_Tag
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
140
        self.assertNotEqual(-1, data.find("reset refs/tags/bad_Tag"))
0.133.3 by Oleksandr Usov
Implement comments from patch review:
141
0.138.2 by Oleksandr Usov
Add unit test for --no-tags
142
    def test_no_tags(self):
143
        tree = self.make_branch_and_tree("br")
144
        tree.commit("pointless")
145
        self.assertTrue(tree.branch.supports_tags())
146
        rev_id = tree.branch.dotted_revno_to_revision_id((1,))
147
        tree.branch.tags.set_tag("someTag", rev_id)
148
149
        data = self.run_bzr("fast-export --plain --no-tags br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
150
        self.assertEqual(-1, data.find("reset refs/tags/someTag"))
0.138.2 by Oleksandr Usov
Add unit test for --no-tags
151
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
152
    def test_baseline_option(self):
153
        tree = self.make_branch_and_tree("bl")
154
155
        # Revision 1
6973.7.5 by Jelmer Vernooij
s/file/open.
156
        with open('bl/a', 'w') as f:
157
            f.write('test 1')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
158
        tree.add('a')
159
        tree.commit(message='add a')
160
161
        # Revision 2
6973.7.5 by Jelmer Vernooij
s/file/open.
162
        with open('bl/b', 'w') as f:
163
            f.write('test 2')
164
        with open('bl/a', 'a') as f:
165
            f.write('\ntest 3')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
166
        tree.add('b')
167
        tree.commit(message='add b, modify a')
168
169
        # Revision 3
6973.7.5 by Jelmer Vernooij
s/file/open.
170
        with open('bl/c', 'w') as f:
171
            f.write('test 4')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
172
        tree.add('c')
173
        tree.remove('b')
174
        tree.commit(message='add c, remove b')
175
176
        # Revision 4
6973.7.5 by Jelmer Vernooij
s/file/open.
177
        with open('bl/a', 'a') as f:
178
            f.write('\ntest 5')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
179
        tree.commit(message='modify a again')
180
181
        # Revision 5
6973.7.5 by Jelmer Vernooij
s/file/open.
182
        with open('bl/d', 'w') as f:
183
            f.write('test 6')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
184
        tree.add('d')
185
        tree.commit(message='add d')
186
187
        # This exports the baseline state at Revision 3,
188
        # followed by the deltas for 4 and 5
189
        data = self.run_bzr("fast-export --baseline -r 3.. bl")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
190
        data = re.sub('committer.*', 'committer', data)
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
191
        self.assertEquals(fast_export_baseline_data, data)
192
193
        # Also confirm that --baseline with no args is identical to full export
194
        data1 = self.run_bzr("fast-export --baseline bl")[0]
195
        data2 = self.run_bzr("fast-export bl")[0]
196
        self.assertEquals(data1, data2)
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
197
7143.15.2 by Jelmer Vernooij
Run autopep8.
198
6855.4.1 by Jelmer Vernooij
Yet more bees.
199
simple_fast_import_stream = b"""commit refs/heads/master
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
200
mark :1
201
committer Jelmer Vernooij <jelmer@samba.org> 1299718135 +0100
202
data 7
203
initial
204
205
"""
206
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
207
208
class TestFastImport(ExternalBase):
209
6628.1.5 by Jelmer Vernooij
Consistently use fastimport feature.
210
    _test_needs_features = [FastimportFeature]
211
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
212
    def test_empty(self):
6855.4.1 by Jelmer Vernooij
Yet more bees.
213
        self.build_tree_contents([('empty.fi', b"")])
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
214
        self.make_branch_and_tree("br")
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
215
        self.assertEquals("", self.run_bzr("fast-import empty.fi br")[0])
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
216
217
    def test_file(self):
218
        tree = self.make_branch_and_tree("br")
219
        self.build_tree_contents([('file.fi', simple_fast_import_stream)])
220
        data = self.run_bzr("fast-import file.fi br")[0]
0.131.2 by Jelmer Vernooij
Fix 'bzr fast-import' bzrdir argument and add a blackbox test.
221
        self.assertEquals(1, tree.branch.revno())
0.64.321 by Jelmer Vernooij
Allow fast-import-filter to be used without first argument.
222
0.64.355 by Jelmer Vernooij
Print sane error when a fastimport file is incomplete.
223
    def test_missing_bytes(self):
6855.4.1 by Jelmer Vernooij
Yet more bees.
224
        self.build_tree_contents([('empty.fi', b"""
0.64.355 by Jelmer Vernooij
Print sane error when a fastimport file is incomplete.
225
commit refs/heads/master
226
mark :1
227
committer
228
data 15
229
""")])
230
        self.make_branch_and_tree("br")
7143.15.2 by Jelmer Vernooij
Run autopep8.
231
        self.run_bzr_error(
232
            ['brz: ERROR: 4: Parse error: line 4: Command .*commit.* is missing section .*committer.*\n'], "fast-import empty.fi br")