~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_export.py

  • Committer: Jelmer Vernooij
  • Date: 2011-08-04 13:30:30 UTC
  • mfrom: (6050 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6052.
  • Revision ID: jelmer@samba.org-20110804133030-uwo00unp8b0n782c
merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
    tests,
29
29
    )
30
30
from bzrlib.export import get_root_name
31
 
from bzrlib.export.tar_exporter import export_tarball
 
31
from bzrlib.export.tar_exporter import export_tarball_generator
32
32
from bzrlib.tests import features
33
33
 
34
34
 
49
49
        self.assertEquals([], os.listdir("target"))
50
50
 
51
51
    def test_symlink(self):
52
 
        self.requireFeature(tests.SymlinkFeature)
 
52
        self.requireFeature(features.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, export.export, wt, 'target', format="dir")
 
87
        self.assertRaises(errors.BzrError,
 
88
            export.export, wt, 'target', format="dir")
88
89
 
89
90
    def test_existing_single_file(self):
90
 
        self.build_tree(['dir1/', 'dir1/dir2/', 'dir1/first', 'dir1/dir2/second'])
 
91
        self.build_tree([
 
92
            'dir1/', 'dir1/dir2/', 'dir1/first', 'dir1/dir2/second'])
91
93
        wtree = self.make_branch_and_tree('dir1')
92
94
        wtree.add(['dir2', 'first', 'dir2/second'])
93
95
        wtree.commit('1')
110
112
        self.addCleanup(b.unlock)
111
113
        tree = b.basis_tree()
112
114
        orig_iter_files_bytes = tree.iter_files_bytes
 
115
 
113
116
        # Make iter_files_bytes slower, so we provoke mtime skew
114
117
        def iter_files_bytes(to_fetch):
115
118
            for thing in orig_iter_files_bytes(to_fetch):
146
149
        self.assertEqual(a_time, t.stat('a').st_mtime)
147
150
        self.assertEqual(b_time, t.stat('b').st_mtime)
148
151
 
 
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.assertEquals(foo_time, t.stat('foo.txt').st_mtime)
 
170
 
149
171
 
150
172
class TarExporterTests(tests.TestCaseWithTransport):
151
173
 
220
242
        self.assertRaises(errors.BzrError, export.export, wt, '-',
221
243
            format="txz")
222
244
 
223
 
    def test_export_tarball(self):
 
245
    def test_export_tarball_generator(self):
224
246
        wt = self.make_branch_and_tree('.')
225
247
        self.build_tree(['a'])
226
248
        wt.add(["a"])
229
251
        ball = tarfile.open(None, "w|", target)
230
252
        wt.lock_read()
231
253
        try:
232
 
            export_tarball(wt, ball, "bar")
 
254
            for _ in export_tarball_generator(wt, ball, "bar"):
 
255
                pass
233
256
        finally:
234
257
            wt.unlock()
235
 
        self.assertEquals(["bar/a"], ball.getnames())
236
 
        ball.close()
 
258
        # Ball should now be closed.
 
259
        target.seek(0)
 
260
        ball2 = tarfile.open(None, "r", target)
 
261
        self.addCleanup(ball2.close)
 
262
        self.assertEquals(["bar/a"], ball2.getnames())
237
263
 
238
264
 
239
265
class ZipExporterTests(tests.TestCaseWithTransport):