/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
7222.1.1 by Jelmer Vernooij
Fix a spurious test.
62
fast_export_baseline_data1 = """reset refs/heads/master
63
commit refs/heads/master
64
mark :1
65
committer
66
data 15
67
add c, remove b
68
M 644 inline a
69
data 13
70
test 1
71
test 3
72
M 644 inline c
73
data 6
74
test 4
75
commit refs/heads/master
76
mark :2
77
committer
78
data 14
79
modify a again
80
from :1
81
M 644 inline a
82
data 20
83
test 1
84
test 3
85
test 5
86
commit refs/heads/master
87
mark :3
88
committer
89
data 5
90
add d
91
from :2
92
M 644 inline d
93
data 6
94
test 6
95
"""
96
97
98
fast_export_baseline_data2 = """reset refs/heads/master
99
commit refs/heads/master
100
mark :1
101
committer
102
data 15
103
add c, remove b
104
M 644 inline c
105
data 6
106
test 4
107
M 644 inline a
108
data 13
109
test 1
110
test 3
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
111
commit refs/heads/master
112
mark :2
113
committer
114
data 14
115
modify a again
116
from :1
117
M 644 inline a
118
data 20
119
test 1
120
test 3
121
test 5
122
commit refs/heads/master
123
mark :3
124
committer
125
data 5
126
add d
127
from :2
128
M 644 inline d
129
data 6
130
test 6
131
"""
132
7143.15.2 by Jelmer Vernooij
Run autopep8.
133
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
134
class TestFastExport(ExternalBase):
135
6628.1.5 by Jelmer Vernooij
Consistently use fastimport feature.
136
    _test_needs_features = [FastimportFeature]
137
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
138
    def test_empty(self):
139
        self.make_branch_and_tree("br")
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
140
        self.assertEquals("", self.run_bzr("fast-export br")[0])
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
141
142
    def test_pointless(self):
143
        tree = self.make_branch_and_tree("br")
144
        tree.commit("pointless")
145
        data = self.run_bzr("fast-export br")[0]
7143.15.2 by Jelmer Vernooij
Run autopep8.
146
        self.assertTrue(data.startswith(
7194.1.2 by Jelmer Vernooij
Fix test.
147
            'reset refs/heads/master\n'
148
            'commit refs/heads/master\n'
7194.1.1 by Jelmer Vernooij
Merge lp:~a-s-usov/bzr-fastimport/no-temp-branches
149
            'mark :1\ncommitter'), data)
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
150
151
    def test_file(self):
152
        tree = self.make_branch_and_tree("br")
153
        tree.commit("pointless")
154
        data = self.run_bzr("fast-export br br.fi")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
155
        self.assertEquals("", data)
7194.1.1 by Jelmer Vernooij
Merge lp:~a-s-usov/bzr-fastimport/no-temp-branches
156
        self.assertPathExists("br.fi")
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
157
0.133.3 by Oleksandr Usov
Implement comments from patch review:
158
    def test_tag_rewriting(self):
159
        tree = self.make_branch_and_tree("br")
160
        tree.commit("pointless")
161
        self.assertTrue(tree.branch.supports_tags())
162
        rev_id = tree.branch.dotted_revno_to_revision_id((1,))
163
        tree.branch.tags.set_tag("goodTag", rev_id)
164
        tree.branch.tags.set_tag("bad Tag", rev_id)
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
165
0.133.3 by Oleksandr Usov
Implement comments from patch review:
166
        # first check --no-rewrite-tag-names
167
        data = self.run_bzr("fast-export --plain --no-rewrite-tag-names br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
168
        self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
7143.15.2 by Jelmer Vernooij
Run autopep8.
169
        self.assertEqual(data.find("reset refs/tags/"),
170
                         data.rfind("reset refs/tags/"))
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
171
0.133.3 by Oleksandr Usov
Implement comments from patch review:
172
        # and now with --rewrite-tag-names
173
        data = self.run_bzr("fast-export --plain --rewrite-tag-names br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
174
        self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
0.133.3 by Oleksandr Usov
Implement comments from patch review:
175
        # "bad Tag" should be exported as bad_Tag
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
176
        self.assertNotEqual(-1, data.find("reset refs/tags/bad_Tag"))
0.133.3 by Oleksandr Usov
Implement comments from patch review:
177
0.138.2 by Oleksandr Usov
Add unit test for --no-tags
178
    def test_no_tags(self):
179
        tree = self.make_branch_and_tree("br")
180
        tree.commit("pointless")
181
        self.assertTrue(tree.branch.supports_tags())
182
        rev_id = tree.branch.dotted_revno_to_revision_id((1,))
183
        tree.branch.tags.set_tag("someTag", rev_id)
184
185
        data = self.run_bzr("fast-export --plain --no-tags br")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
186
        self.assertEqual(-1, data.find("reset refs/tags/someTag"))
0.138.2 by Oleksandr Usov
Add unit test for --no-tags
187
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
188
    def test_baseline_option(self):
189
        tree = self.make_branch_and_tree("bl")
190
191
        # Revision 1
6973.7.5 by Jelmer Vernooij
s/file/open.
192
        with open('bl/a', 'w') as f:
193
            f.write('test 1')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
194
        tree.add('a')
195
        tree.commit(message='add a')
196
197
        # Revision 2
6973.7.5 by Jelmer Vernooij
s/file/open.
198
        with open('bl/b', 'w') as f:
199
            f.write('test 2')
200
        with open('bl/a', 'a') as f:
201
            f.write('\ntest 3')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
202
        tree.add('b')
203
        tree.commit(message='add b, modify a')
204
205
        # Revision 3
6973.7.5 by Jelmer Vernooij
s/file/open.
206
        with open('bl/c', 'w') as f:
207
            f.write('test 4')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
208
        tree.add('c')
209
        tree.remove('b')
210
        tree.commit(message='add c, remove b')
211
212
        # Revision 4
6973.7.5 by Jelmer Vernooij
s/file/open.
213
        with open('bl/a', 'a') as f:
214
            f.write('\ntest 5')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
215
        tree.commit(message='modify a again')
216
217
        # Revision 5
6973.7.5 by Jelmer Vernooij
s/file/open.
218
        with open('bl/d', 'w') as f:
219
            f.write('test 6')
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
220
        tree.add('d')
221
        tree.commit(message='add d')
222
223
        # This exports the baseline state at Revision 3,
224
        # followed by the deltas for 4 and 5
225
        data = self.run_bzr("fast-export --baseline -r 3.. bl")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
226
        data = re.sub('committer.*', 'committer', data)
7222.1.1 by Jelmer Vernooij
Fix a spurious test.
227
        self.assertIn(data, (fast_export_baseline_data1, fast_export_baseline_data2))
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
228
229
        # Also confirm that --baseline with no args is identical to full export
230
        data1 = self.run_bzr("fast-export --baseline bl")[0]
231
        data2 = self.run_bzr("fast-export bl")[0]
232
        self.assertEquals(data1, data2)
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
233
7143.15.2 by Jelmer Vernooij
Run autopep8.
234
6855.4.1 by Jelmer Vernooij
Yet more bees.
235
simple_fast_import_stream = b"""commit refs/heads/master
0.64.310 by Jelmer Vernooij
Fix fast-import-info.
236
mark :1
237
committer Jelmer Vernooij <jelmer@samba.org> 1299718135 +0100
238
data 7
239
initial
240
241
"""
242
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
243
244
class TestFastImport(ExternalBase):
245
6628.1.5 by Jelmer Vernooij
Consistently use fastimport feature.
246
    _test_needs_features = [FastimportFeature]
247
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
248
    def test_empty(self):
6855.4.1 by Jelmer Vernooij
Yet more bees.
249
        self.build_tree_contents([('empty.fi', b"")])
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
250
        self.make_branch_and_tree("br")
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
251
        self.assertEquals("", self.run_bzr("fast-import empty.fi br")[0])
0.131.1 by Jelmer Vernooij
Add blackbox tests for 'bzr fast-import'.
252
253
    def test_file(self):
254
        tree = self.make_branch_and_tree("br")
255
        self.build_tree_contents([('file.fi', simple_fast_import_stream)])
256
        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.
257
        self.assertEquals(1, tree.branch.revno())
0.64.321 by Jelmer Vernooij
Allow fast-import-filter to be used without first argument.
258
0.64.355 by Jelmer Vernooij
Print sane error when a fastimport file is incomplete.
259
    def test_missing_bytes(self):
6855.4.1 by Jelmer Vernooij
Yet more bees.
260
        self.build_tree_contents([('empty.fi', b"""
0.64.355 by Jelmer Vernooij
Print sane error when a fastimport file is incomplete.
261
commit refs/heads/master
262
mark :1
263
committer
264
data 15
265
""")])
266
        self.make_branch_and_tree("br")
7143.15.2 by Jelmer Vernooij
Run autopep8.
267
        self.run_bzr_error(
268
            ['brz: ERROR: 4: Parse error: line 4: Command .*commit.* is missing section .*committer.*\n'], "fast-import empty.fi br")