/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
0.430.1 by Oleksandr Usov
Emit 'reset' command for parentless & baseline commits.
62
fast_export_baseline_data = """reset refs/heads/master
63
commit refs/heads/master
0.135.2 by Andy Grimm
fix --baseline bugs, and add a couple of tests
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
7143.15.2 by Jelmer Vernooij
Run autopep8.
97
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
98
class TestFastExport(ExternalBase):
99
6628.1.5 by Jelmer Vernooij
Consistently use fastimport feature.
100
    _test_needs_features = [FastimportFeature]
101
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
102
    def test_empty(self):
103
        self.make_branch_and_tree("br")
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
104
        self.assertEquals("", self.run_bzr("fast-export br")[0])
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
105
106
    def test_pointless(self):
107
        tree = self.make_branch_and_tree("br")
108
        tree.commit("pointless")
109
        data = self.run_bzr("fast-export br")[0]
7143.15.2 by Jelmer Vernooij
Run autopep8.
110
        self.assertTrue(data.startswith(
7194.1.2 by Jelmer Vernooij
Fix test.
111
            'reset refs/heads/master\n'
112
            'commit refs/heads/master\n'
7194.1.1 by Jelmer Vernooij
Merge lp:~a-s-usov/bzr-fastimport/no-temp-branches
113
            'mark :1\ncommitter'), data)
0.64.309 by Jelmer Vernooij
Add some blackbox tests for 'bzr fast-export'.
114
115
    def test_file(self):
116
        tree = self.make_branch_and_tree("br")
117
        tree.commit("pointless")
118
        data = self.run_bzr("fast-export br br.fi")[0]
7027.4.2 by Jelmer Vernooij
Use StringIOWithEncoding in run_bzr.
119
        self.assertEquals("", data)
7194.1.1 by Jelmer Vernooij
Merge lp:~a-s-usov/bzr-fastimport/no-temp-branches
120
        self.assertPathExists("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")