~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_export.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-05-11 15:04:23 UTC
  • mfrom: (5848.1.1 2.4-cython-first)
  • Revision ID: pqm@pqm.ubuntu.com-20110511150423-tpm1ablukqalkvim
(jameinel) Default to using Cython for compiling code,
 rather than Pyrex. (John A Meinel)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2009, 2010, 2011, 2016 Canonical Ltd
 
1
# Copyright (C) 2009, 2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
28
28
    tests,
29
29
    )
30
30
from bzrlib.export import get_root_name
31
 
from bzrlib.export.tar_exporter import export_tarball_generator
 
31
from bzrlib.export.tar_exporter import export_tarball
32
32
from bzrlib.tests import features
33
33
 
34
34
 
46
46
    def test_empty(self):
47
47
        wt = self.make_branch_and_tree('.')
48
48
        export.export(wt, 'target', format="dir")
49
 
        self.assertEqual([], os.listdir("target"))
 
49
        self.assertEquals([], os.listdir("target"))
50
50
 
51
51
    def test_symlink(self):
52
 
        self.requireFeature(features.SymlinkFeature)
 
52
        self.requireFeature(tests.SymlinkFeature)
53
53
        wt = self.make_branch_and_tree('.')
54
54
        os.symlink('source', 'link')
55
55
        wt.add(['link'])
84
84
        wt.add(['a', 'b', 'b/c'])
85
85
        wt.commit('1')
86
86
        self.build_tree(['target/', 'target/foo'])
87
 
        self.assertRaises(errors.BzrError,
88
 
            export.export, wt, 'target', format="dir")
 
87
        self.assertRaises(errors.BzrError, export.export, wt, 'target', format="dir")
89
88
 
90
89
    def test_existing_single_file(self):
91
 
        self.build_tree([
92
 
            'dir1/', 'dir1/dir2/', 'dir1/first', 'dir1/dir2/second'])
 
90
        self.build_tree(['dir1/', 'dir1/dir2/', 'dir1/first', 'dir1/dir2/second'])
93
91
        wtree = self.make_branch_and_tree('dir1')
94
92
        wtree.add(['dir2', 'first', 'dir2/second'])
95
93
        wtree.commit('1')
112
110
        self.addCleanup(b.unlock)
113
111
        tree = b.basis_tree()
114
112
        orig_iter_files_bytes = tree.iter_files_bytes
115
 
 
116
113
        # Make iter_files_bytes slower, so we provoke mtime skew
117
114
        def iter_files_bytes(to_fetch):
118
115
            for thing in orig_iter_files_bytes(to_fetch):
149
146
        self.assertEqual(a_time, t.stat('a').st_mtime)
150
147
        self.assertEqual(b_time, t.stat('b').st_mtime)
151
148
 
152
 
    def test_subdir_files_per_timestamps(self):
153
 
        builder = self.make_branch_builder('source')
154
 
        builder.start_series()
155
 
        foo_time = time.mktime((1999, 12, 12, 0, 0, 0, 0, 0, 0))
156
 
        builder.build_snapshot(None, None, [
157
 
            ('add', ('', 'root-id', 'directory', '')),
158
 
            ('add', ('subdir', 'subdir-id', 'directory', '')),
159
 
            ('add', ('subdir/foo.txt', 'foo-id', 'file', 'content\n'))],
160
 
            timestamp=foo_time)
161
 
        builder.finish_series()
162
 
        b = builder.get_branch()
163
 
        b.lock_read()
164
 
        self.addCleanup(b.unlock)
165
 
        tree = b.basis_tree()
166
 
        export.export(tree, 'target', format='dir', subdir='subdir',
167
 
            per_file_timestamps=True)
168
 
        t = self.get_transport('target')
169
 
        self.assertEqual(foo_time, t.stat('foo.txt').st_mtime)
170
 
 
171
149
 
172
150
class TarExporterTests(tests.TestCaseWithTransport):
173
151
 
180
158
        wt.commit("1")
181
159
        export.export(wt, 'target.tar.xz', format="txz")
182
160
        tf = tarfile.open(fileobj=lzma.LZMAFile('target.tar.xz'))
183
 
        self.assertEqual(["target/a"], tf.getnames())
 
161
        self.assertEquals(["target/a"], tf.getnames())
184
162
 
185
163
    def test_lzma(self):
186
164
        self.requireFeature(features.lzma)
191
169
        wt.commit("1")
192
170
        export.export(wt, 'target.tar.lzma', format="tlzma")
193
171
        tf = tarfile.open(fileobj=lzma.LZMAFile('target.tar.lzma'))
194
 
        self.assertEqual(["target/a"], tf.getnames())
 
172
        self.assertEquals(["target/a"], tf.getnames())
195
173
 
196
174
    def test_tgz(self):
197
175
        wt = self.make_branch_and_tree('.')
200
178
        wt.commit("1")
201
179
        export.export(wt, 'target.tar.gz', format="tgz")
202
180
        tf = tarfile.open('target.tar.gz')
203
 
        self.assertEqual(["target/a"], tf.getnames())
 
181
        self.assertEquals(["target/a"], tf.getnames())
204
182
 
205
183
    def test_tgz_ignores_dest_path(self):
206
184
        # The target path should not be a part of the target file.
235
213
        wt.commit("1")
236
214
        export.export(wt, 'target.tar.bz2', format="tbz2")
237
215
        tf = tarfile.open('target.tar.bz2')
238
 
        self.assertEqual(["target/a"], tf.getnames())
 
216
        self.assertEquals(["target/a"], tf.getnames())
239
217
 
240
218
    def test_xz_stdout(self):
241
219
        wt = self.make_branch_and_tree('.')
242
220
        self.assertRaises(errors.BzrError, export.export, wt, '-',
243
221
            format="txz")
244
222
 
245
 
    def test_export_tarball_generator(self):
 
223
    def test_export_tarball(self):
246
224
        wt = self.make_branch_and_tree('.')
247
225
        self.build_tree(['a'])
248
226
        wt.add(["a"])
251
229
        ball = tarfile.open(None, "w|", target)
252
230
        wt.lock_read()
253
231
        try:
254
 
            for _ in export_tarball_generator(wt, ball, "bar"):
255
 
                pass
 
232
            export_tarball(wt, ball, "bar")
256
233
        finally:
257
234
            wt.unlock()
258
 
        # Ball should now be closed.
259
 
        target.seek(0)
260
 
        ball2 = tarfile.open(None, "r", target)
261
 
        self.addCleanup(ball2.close)
262
 
        self.assertEqual(["bar/a"], ball2.getnames())
 
235
        self.assertEquals(["bar/a"], ball.getnames())
 
236
        ball.close()
263
237
 
264
238
 
265
239
class ZipExporterTests(tests.TestCaseWithTransport):
275
249
            per_file_timestamps=True)
276
250
        zfile = zipfile.ZipFile('test.zip')
277
251
        info = zfile.getinfo("test/har")
278
 
        self.assertEqual(time.localtime(timestamp)[:6], info.date_time)
 
252
        self.assertEquals(time.localtime(timestamp)[:6], info.date_time)
279
253
 
280
254
 
281
255
class RootNameTests(tests.TestCase):
282
256
 
283
257
    def test_root_name(self):
284
 
        self.assertEqual('mytest', get_root_name('../mytest.tar'))
285
 
        self.assertEqual('mytar', get_root_name('mytar.tar'))
286
 
        self.assertEqual('mytar', get_root_name('mytar.tar.bz2'))
287
 
        self.assertEqual('tar.tar.tar', get_root_name('tar.tar.tar.tgz'))
288
 
        self.assertEqual('bzr-0.0.5', get_root_name('bzr-0.0.5.tar.gz'))
289
 
        self.assertEqual('bzr-0.0.5', get_root_name('bzr-0.0.5.zip'))
290
 
        self.assertEqual('bzr-0.0.5', get_root_name('bzr-0.0.5'))
291
 
        self.assertEqual('mytar', get_root_name('a/long/path/mytar.tgz'))
292
 
        self.assertEqual('other',
 
258
        self.assertEquals('mytest', get_root_name('../mytest.tar'))
 
259
        self.assertEquals('mytar', get_root_name('mytar.tar'))
 
260
        self.assertEquals('mytar', get_root_name('mytar.tar.bz2'))
 
261
        self.assertEquals('tar.tar.tar', get_root_name('tar.tar.tar.tgz'))
 
262
        self.assertEquals('bzr-0.0.5', get_root_name('bzr-0.0.5.tar.gz'))
 
263
        self.assertEquals('bzr-0.0.5', get_root_name('bzr-0.0.5.zip'))
 
264
        self.assertEquals('bzr-0.0.5', get_root_name('bzr-0.0.5'))
 
265
        self.assertEquals('mytar', get_root_name('a/long/path/mytar.tgz'))
 
266
        self.assertEquals('other',
293
267
            get_root_name('../parent/../dir/other.tbz2'))
294
 
        self.assertEqual('', get_root_name('-'))
 
268
        self.assertEquals('', get_root_name('-'))