~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to tests/upstream_import.py

  • Committer: Aaron Bentley
  • Date: 2007-01-08 15:58:30 UTC
  • Revision ID: abentley@panoramicfeedback.com-20070108155830-8frcn2keo0c5v06d
Fix tests for importing directories

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import os
2
2
from StringIO import StringIO
3
 
from shutil import rmtree, copy2
 
3
from shutil import rmtree, copy2, copytree
4
4
import tarfile
 
5
import tempfile
5
6
from unittest import makeSuite
6
7
 
7
8
from bzrlib import osutils
29
30
class DirFileWriter(object):
30
31
 
31
32
    def __init__(self, fileobj, mode):
32
 
        os.mkdir('tmp')
33
 
        fileobj.write('tmp')
34
 
        self.root = os.path.realpath('tmp')
 
33
        # We may be asked to 'append'.  If so, fileobj already has a path.
 
34
        # So we copy the existing tree, and overwrite afterward.
 
35
        fileobj.seek(0)
 
36
        existing = fileobj.read()
 
37
        fileobj.seek(0)
 
38
        path = tempfile.mkdtemp(dir=os.getcwd())
 
39
        if existing != '':
 
40
            # copytree requires the directory not to exist
 
41
            os.rmdir(path)
 
42
            copytree(existing, path)
 
43
        fileobj.write(path)
 
44
        self.root = path
35
45
 
36
46
    def add(self, path):
 
47
        target_path = os.path.join(self.root, path)
 
48
        parent = osutils.dirname(target_path)
 
49
        if not os.path.exists(parent):
 
50
            os.makedirs(parent)
37
51
        kind = osutils.file_kind(path)
38
52
        if kind == 'file':
39
 
            copy2(path, os.path.join(self.root, path))
 
53
            copy2(path, target_path)
40
54
        if kind == 'directory':
41
 
            os.mkdir(os.path.join(self.root, path))
 
55
            os.mkdir(target_path)
42
56
 
43
57
    def close(self):
44
58
        pass
102
116
        tar_file.add('project-0.2/README')
103
117
 
104
118
        rmtree('project-0.2')
 
119
        tar_file.close()
 
120
        result.seek(0)
105
121
        return result
106
122
 
107
123
    def make_messed_tar(self):
156
172
            return DirFileWriter(fileobj, mode)
157
173
        self.archive_test(builder, import_dir, subdir=True)
158
174
 
159
 
    def test_copydir_nosub(self):
160
 
        def builder(fileobj, mode='w'):
161
 
            return DirFileWriter(fileobj, mode)
162
 
        self.archive_test(builder, import_dir, subdir=True)
163
 
 
164
175
    def archive_test(self, builder, importer, subdir=False):
165
176
        archive_file = self.make_archive(builder, subdir)
166
177
        tree = BzrDir.create_standalone_workingtree('tree')