9
9
from bzrlib.bzrdir import BzrDir
10
10
from bzrlib.plugins.bzrtools.upstream_import import (
18
19
from bzrlib.tests import TestCaseInTempDir
22
def import_tar_broken(tree, tar_input):
24
Import a tarfile with names that that end in //, e.g. Feisty Python 2.5
26
tar_file = tarfile.open('lala', 'r', tar_input)
27
for member in tar_file.members:
28
if member.name.endswith('/'):
30
import_archive(tree, tar_file)
20
33
class DirFileWriter(object):
22
35
def __init__(self, fileobj, mode):
141
154
return ZipFileWrapper(fileobj, 'w')
142
155
return self.make_archive(maker)
144
def test_top_directory(self):
145
self.assertEqual(top_directory('ab/b/c'), 'ab')
146
self.assertEqual(top_directory('/etc'), '/')
157
def test_top_path(self):
158
self.assertEqual(top_path('ab/b/c'), 'ab')
159
self.assertEqual(top_path('etc'), 'etc')
160
self.assertEqual(top_path('project-0.1'), 'project-0.1')
148
162
def test_common_directory(self):
149
163
self.assertEqual(common_directory(['ab/c/d', 'ab/c/e']), 'ab')
150
164
self.assertIs(common_directory(['ab/c/d', 'ac/c/e']), None)
151
self.assertIs(None, common_directory(['FEEDME']))
165
self.assertEqual('FEEDME', common_directory(['FEEDME']))
153
167
def test_untar(self):
154
168
def builder(fileobj, mode='w'):
155
169
return tarfile.open('project-0.1.tar', mode, fileobj)
156
170
self.archive_test(builder, import_tar)
172
def test_broken_tar(self):
173
def builder(fileobj, mode='w'):
174
return tarfile.open('project-0.1.tar', mode, fileobj)
175
self.archive_test(builder, import_tar_broken, subdir=True)
158
177
def test_unzip(self):
159
178
def builder(fileobj, mode='w'):
160
179
return ZipFileWrapper(fileobj, mode)
196
215
tar_file = self.make_messed_tar()
197
216
tree = BzrDir.create_standalone_workingtree('tree')
198
217
import_tar(tree, tar_file)
199
self.assertTrue(tree.path2id('project-0.1/README') is not None)
218
self.assertTrue(tree.path2id('project-0.1/README') is not None)
201
220
def test_untar_gzip(self):
202
221
tar_file = self.make_tar(mode='w:gz')
203
222
tree = BzrDir.create_standalone_workingtree('tree')
204
223
import_tar(tree, tar_file)
205
self.assertTrue(tree.path2id('README') is not None)
224
self.assertTrue(tree.path2id('README') is not None)
207
226
def test_suite():
208
227
return makeSuite(TestImport)