~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to tests/test_baz_import.py

  • Committer: Aaron Bentley
  • Date: 2008-11-11 15:55:32 UTC
  • Revision ID: aaron@aaronbentley.com-20081111155532-pjxa3kib17yggl9x
Update shelf tests to new command names

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 Canonical Limited
2
 
#   Authors: Robert Collins <robert.collins@canonical.com>
3
 
#
4
 
#    This program is free software; you can redistribute it and/or modify
5
 
#    it under the terms of the GNU General Public License as published by
6
 
#    the Free Software Foundation; either version 2 of the License, or
7
 
#    (at your option) any later version.
8
 
#
9
 
#    This program is distributed in the hope that it will be useful,
10
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
#    GNU General Public License for more details.
13
 
#
14
 
#    You should have received a copy of the GNU General Public License
15
 
#    along with this program; if not, write to the Free Software
16
 
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 
 
18
 
from bzrlib.selftest import TestCaseInTempDir, TestCase
19
 
from bzrlib.selftest.blackbox import has_symlinks
20
 
try:
21
 
    import pybaz
22
 
except ImportError:
23
 
    pybaz = None
24
 
import os
25
 
from baz_import import import_version, revision_id, cmd_baz_import
26
 
from bzrlib.errors import NoSuchRevision
27
 
import shutil
28
 
from StringIO import StringIO
29
 
import tempfile
30
 
from testresources import (TestResource, TestLoader, OptimisingTestSuite,
31
 
                           ResourcedTestCase)
32
 
from fai import namespace_previous
33
 
from bzrlib.branch import Branch
34
 
 
35
 
def test_suite():
36
 
    if pybaz is None:
37
 
        return OptimisingTestSuite()
38
 
    return TestLoader().loadTestsFromName(__name__)
39
 
 
40
 
 
41
 
class BazTreeResource(TestResource):
42
 
 
43
 
    def cleanUp(self):
44
 
        os.environ['HOME'] = self._oldhome
45
 
        shutil.rmtree(self._tmpdir)
46
 
 
47
 
    def __init__(self):
48
 
        self._tmpdir = tempfile.mkdtemp()
49
 
        self._homedir = os.path.join(self._tmpdir, 'home')
50
 
        self._oldhome = os.environ['HOME']
51
 
        os.mkdir(self._homedir)
52
 
        os.environ['HOME'] = self._homedir
53
 
 
54
 
        self._archiveroot = os.path.join(self._tmpdir, 'archive')
55
 
        self._archive = pybaz.make_archive('demo@DONOTUSE', str(self._archiveroot))
56
 
        pybaz.set_my_id("Test User<test@example.org>")
57
 
 
58
 
        self.make_empty_import()
59
 
 
60
 
        self._empty_tag = 'demo@DONOTUSE/c--empty-tag--0'
61
 
        self._empty_tag_bzr = revision_id(self._empty_tag + '--base-0')
62
 
        pybaz.Revision('demo@DONOTUSE/c--import--0--base-0').make_continuation(
63
 
            pybaz.Version(self._empty_tag))
64
 
 
65
 
        self._empty_merged_tag = 'demo@DONOTUSE/c--empty-merged-tag--0'
66
 
        self._empty_merged_tag_bzr_base = revision_id(self._empty_merged_tag 
67
 
                                                 + '--base-0')
68
 
        self._empty_merged_tag_bzr = revision_id(self._empty_merged_tag 
69
 
                                                 + '--patch-1')
70
 
        pybaz.Revision('demo@DONOTUSE/c--import--0--base-0').make_continuation(
71
 
            pybaz.Version(self._empty_merged_tag))
72
 
        tree = pybaz.Revision(self._empty_merged_tag + '--base-0').get(
73
 
            os.path.join(self._tmpdir, 'tree'))
74
 
        tree.star_merge(self._empty_tag,
75
 
                        pybaz.Version('demo@DONOTUSE/c--import--0'))
76
 
        msg = tree.log_message()
77
 
        msg["summary"]="did a merge, yarh"
78
 
        tree.commit(msg)
79
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
80
 
        
81
 
        # tree, two commits, includes merge of other branch
82
 
        self._empty_merged_tag_2 = 'demo@DONOTUSE/c--empty-tag-2--0'
83
 
        self._empty_merged_tag_2_bzr_base = revision_id(self._empty_merged_tag_2 + '--base-0')
84
 
        self._empty_merged_tag_2_bzr = revision_id(self._empty_merged_tag_2 + '--patch-1')
85
 
        pybaz.Revision('demo@DONOTUSE/c--import--0--base-0').make_continuation(
86
 
            pybaz.Version(self._empty_merged_tag_2))
87
 
        tree = pybaz.Revision(self._empty_merged_tag_2 + '--base-0').get (
88
 
            os.path.join(self._tmpdir, 'tree'))
89
 
        tree.star_merge(self._empty_merged_tag,
90
 
                        pybaz.Version('demo@DONOTUSE/c--import--0'))
91
 
        msg = tree.log_message()
92
 
        msg["summary"] = "merge in a merged tree."
93
 
        tree.commit(msg)
94
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
95
 
 
96
 
        self.make_import_symlink()
97
 
        self.make_missing_ancestor()
98
 
 
99
 
    def make_import_symlink(self):
100
 
        self._import_symlink = 'demo@DONOTUSE/c--import-symlink--0'
101
 
        self._import_symlink_bzr = revision_id(self._import_symlink + '--base-0')
102
 
        os.mkdir(os.path.join(self._tmpdir, 'tree'))
103
 
        tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'),
104
 
                               self._import_symlink)
105
 
        os.symlink('missing-file-name',
106
 
                   os.path.join(self._tmpdir, 'tree', 'alink'))
107
 
        tree.add_tag('alink')
108
 
        id_file = open(os.path.join(tree, '.arch-ids', 'alink.id'), 'w')
109
 
        id_file.write('symlink_tag\n')
110
 
        id_file.close()
111
 
        msg = tree.log_message()
112
 
        msg["summary"] = "Import with a symlink"
113
 
        tree.import_(msg)
114
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
115
 
 
116
 
    def make_empty_import(self):
117
 
        self._import = 'demo@DONOTUSE/c--import--0'
118
 
        os.mkdir(os.path.join(self._tmpdir, 'tree'))
119
 
        tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'), self._import)
120
 
        msg = tree.log_message()
121
 
        msg["summary"] = "I am importing now"
122
 
        tree.import_(msg)
123
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
124
 
 
125
 
    def make_missing_ancestor(self):
126
 
        self._archivegoneroot = os.path.join(self._tmpdir, 'archivegone')
127
 
        self._archive = pybaz.make_archive('demo-gone@DONOTUSE',
128
 
                                           str(self._archivegoneroot))
129
 
        self._missing_import = 'demo-gone@DONOTUSE/c--import--0'
130
 
        self._missing_import_bzr = revision_id(self._missing_import 
131
 
                                                 + '--base-0')
132
 
        self._missing_ancestor = 'demo@DONOTUSE/c--gone--0'
133
 
        self._missing_ancestor_bzr = revision_id(self._missing_ancestor 
134
 
                                                 + '--base-0')
135
 
        os.mkdir(os.path.join(self._tmpdir, 'tree'))
136
 
        tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'), 
137
 
                               self._missing_import)
138
 
        msg = tree.log_message()
139
 
        msg["summary"] = "I am importing now"
140
 
        tree.import_(msg)
141
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
142
 
        # tag into the kept archive
143
 
        pybaz.Revision(self._missing_import + '--base-0').make_continuation(
144
 
            pybaz.Version(self._missing_ancestor))
145
 
        # and make it inaccessible
146
 
        pybaz.Archive('demo-gone@DONOTUSE').unregister()
147
 
 
148
 
    @classmethod
149
 
    def _makeResource(self):
150
 
        return BazTreeResource()
151
 
 
152
 
    @classmethod
153
 
    def _cleanResource(self, resource):
154
 
        resource.cleanUp()
155
 
 
156
 
 
157
 
class TestImportBranch(TestCaseInTempDir):
158
 
 
159
 
    _resources = [("_baz", BazTreeResource)]
160
 
 
161
 
    def setUp(self):
162
 
        TestCaseInTempDir.setUp(self)
163
 
        ResourcedTestCase.setUpResources(self)
164
 
        self.output = StringIO()
165
 
 
166
 
    def tearDown(self):
167
 
        ResourcedTestCase.tearDownResources(self)
168
 
        TestCaseInTempDir.tearDown(self)
169
 
 
170
 
    def collect(self, text):
171
 
        self.output.write(text)
172
 
        self.output.write("\n")
173
 
 
174
 
    def test_import_empty(self):
175
 
        import_version('output', pybaz.Version(self._baz._import), self.collect)
176
 
        # expected results:
177
 
        # one commit, no files, revision identifier of 'demo@DONOTUSE_c--import--0--base-0'
178
 
        branch = Branch.open('output')
179
 
        self.assertEqual(branch.revision_history(),
180
 
                         ['Arch-1:demo@DONOTUSE%c--import--0--base-0'])
181
 
        rev = branch.get_revision('Arch-1:demo@DONOTUSE%c--import--0--base-0')
182
 
        # and again.
183
 
        import_version('output2', pybaz.Version('demo@DONOTUSE/c--import--0'),
184
 
                       self.collect)
185
 
        branch2 = Branch.open('output2')
186
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
187
 
        rev2 = branch2.get_revision('Arch-1:demo@DONOTUSE%c--import--0--base-0')
188
 
        # they must be the same
189
 
        self.assertEqual(rev, rev2)
190
 
 
191
 
        # and we should get some expected values:
192
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
193
 
        self.assertEqual(rev.message, "I am importing now")
194
 
        self.assertEqual(rev.revision_id,
195
 
                         "Arch-1:demo@DONOTUSE%c--import--0--base-0")
196
 
 
197
 
    def test_empty_tagged(self):
198
 
        import_version('output', pybaz.Version(self._baz._empty_tag),
199
 
                       self.collect)
200
 
        # expected results:
201
 
        # two commits, no files, revision identifiers of 
202
 
        # 'demo@DONOTUSE_c--import--0--base-0' and
203
 
        # self._baz._empty_tag_bzr
204
 
        branch = Branch.open('output')
205
 
        self.assertEqual(branch.revision_history(),
206
 
                         ['Arch-1:demo@DONOTUSE%c--import--0--base-0',
207
 
                          self._baz._empty_tag_bzr])
208
 
        rev = branch.get_revision(self._baz._empty_tag_bzr)
209
 
        # and again.
210
 
        import_version('output2', pybaz.Version(self._baz._empty_tag),
211
 
                       self.collect)
212
 
        branch2 = Branch.open('output2')
213
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
214
 
        rev2 = branch2.get_revision(self._baz._empty_tag_bzr)
215
 
        # they must be the same
216
 
        self.assertEqual(rev, rev2)
217
 
 
218
 
        # and we should get some expected values:
219
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
220
 
        self.assertEqual(rev.message, "tag of demo@DONOTUSE/c--import--0--base-0")
221
 
        self.assertEqual(rev.revision_id, self._baz._empty_tag_bzr)
222
 
 
223
 
    def test_empty_merged_tagged(self):
224
 
        import_version('output', pybaz.Version(self._baz._empty_merged_tag),
225
 
                       self.collect)
226
 
        # expected results:
227
 
        # two commits, no files, revision identifiers of 
228
 
        # 'demo@DONOTUSE_c--import--0--base-0' and
229
 
        # self._baz._empty_merged_tag_bzr_base
230
 
        # self._baz._empty_merged_tag_bzr
231
 
        # and a merged revision from the latter of
232
 
        # self._baz._empty_tag_bzr
233
 
        branch = Branch.open('output')
234
 
        self.assertEqual(branch.revision_history(),
235
 
                         ['Arch-1:demo@DONOTUSE%c--import--0--base-0',
236
 
                          self._baz._empty_merged_tag_bzr_base,
237
 
                          self._baz._empty_merged_tag_bzr])
238
 
        # and again.
239
 
        import_version('output2', pybaz.Version(self._baz._empty_merged_tag),
240
 
                       self.collect)
241
 
        branch2 = Branch.open('output2')
242
 
        # and import what we should be merged up against for checking with.
243
 
        import_version('output3', pybaz.Version(self._baz._empty_tag),
244
 
                       self.collect)
245
 
        branch3 = Branch.open('output3')
246
 
        
247
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
248
 
        self.assertNotEqual(branch.revision_history(), branch3.revision_history())
249
 
        # check revisions in the history.
250
 
        rev = branch.get_revision(self._baz._empty_merged_tag_bzr_base)
251
 
        rev2 = branch2.get_revision(self._baz._empty_merged_tag_bzr_base)
252
 
        # they must be the same
253
 
        self.assertEqual(rev, rev2)
254
 
        # and we should get some expected values:
255
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
256
 
        self.assertEqual(rev.message, "tag of demo@DONOTUSE/c--import--0--base-0")
257
 
        self.assertEqual(rev.revision_id, self._baz._empty_merged_tag_bzr_base)
258
 
 
259
 
        # check next revisions in the history.
260
 
        rev = branch.get_revision(self._baz._empty_merged_tag_bzr)
261
 
        rev2 = branch2.get_revision(self._baz._empty_merged_tag_bzr)
262
 
        # they must be the same
263
 
        self.assertEqual(rev, rev2)
264
 
        # and we should get some expected values:
265
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
266
 
        self.assertEqual(rev.message, "did a merge, yarh")
267
 
        self.assertEqual(rev.revision_id, self._baz._empty_merged_tag_bzr)
268
 
        self.assertEqual(rev.parents[0].revision_id,
269
 
                         self._baz._empty_merged_tag_bzr_base)
270
 
        self.assertEqual(rev.parents[1].revision_id,
271
 
                         self._baz._empty_tag_bzr)
272
 
 
273
 
        # this tree should have nothing missing from that tree.   
274
 
        # FIXME there is no code for this right now.
275
 
        # self.assertEqual(branch.missing_revisions(branch3), [])
276
 
        
277
 
    def test_merge_branch_with_merges(self):
278
 
        import_version('output', pybaz.Version(self._baz._empty_merged_tag_2),
279
 
                       self.collect)
280
 
        # expected results:
281
 
        # two commits, no files, revision identifiers of 
282
 
        # 'demo@DONOTUSE_c--import--0--base-0' and
283
 
        # self._baz._empty_merged_tag_2_bzr_base
284
 
        # self._baz._empty_merged_tag_2_bzr
285
 
        # and a merged revision from the latter of
286
 
        # self._baz._empty_merged_tag_bzr
287
 
        branch = Branch.open('output')
288
 
        self.assertEqual(branch.revision_history(),
289
 
                         ['Arch-1:demo@DONOTUSE%c--import--0--base-0',
290
 
                          self._baz._empty_merged_tag_2_bzr_base,
291
 
                          self._baz._empty_merged_tag_2_bzr])
292
 
        # and again.
293
 
        import_version('output2', pybaz.Version(self._baz._empty_merged_tag_2),
294
 
                       self.collect)
295
 
        branch2 = Branch.open('output2')
296
 
        # and import what we should be merged up against for checking with.
297
 
        import_version('output3', pybaz.Version(self._baz._empty_merged_tag),
298
 
                       self.collect)
299
 
        branch3 = Branch.open('output3')
300
 
        
301
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
302
 
        self.assertNotEqual(branch.revision_history(), branch3.revision_history())
303
 
        # check revisions in the history.
304
 
        rev = branch.get_revision(self._baz._empty_merged_tag_2_bzr_base)
305
 
        rev2 = branch2.get_revision(self._baz._empty_merged_tag_2_bzr_base)
306
 
        # they must be the same
307
 
        self.assertEqual(rev, rev2)
308
 
        # and we should get some expected values:
309
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
310
 
        self.assertEqual(rev.message, "tag of demo@DONOTUSE/c--import--0--base-0")
311
 
        self.assertEqual(rev.revision_id, self._baz._empty_merged_tag_2_bzr_base)
312
 
 
313
 
        # check next revisions in the history.
314
 
        rev = branch.get_revision(self._baz._empty_merged_tag_2_bzr)
315
 
        rev2 = branch2.get_revision(self._baz._empty_merged_tag_2_bzr)
316
 
        # they must be the same
317
 
        self.assertEqual(rev, rev2)
318
 
        # and we should get some expected values:
319
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
320
 
        self.assertEqual(rev.message, "merge in a merged tree.")
321
 
        self.assertEqual(rev.revision_id, self._baz._empty_merged_tag_2_bzr)
322
 
        self.assertEqual(rev.parents[0].revision_id,
323
 
                         self._baz._empty_merged_tag_2_bzr_base)
324
 
        self.assertEqual(rev.parents[1].revision_id,
325
 
                         self._baz._empty_merged_tag_bzr)
326
 
 
327
 
        # this tree should have nothing missing from that tree.   
328
 
        # FIXME there is no code for this right now.
329
 
        # self.assertEqual(branch.missing_revisions(branch3), [])
330
 
        
331
 
    def test_import_symlink(self):
332
 
        import_version('output', pybaz.Version(self._baz._import_symlink),
333
 
                       self.collect)
334
 
        # expected results:
335
 
        # one commit, no files, revision identifier of 'demo@DONOTUSE_c--import--0--base-0'
336
 
        branch = Branch.open('output')
337
 
        self.assertEqual(branch.revision_history(),
338
 
                         [self._baz._import_symlink_bzr])
339
 
        rev = branch.get_revision(self._baz._import_symlink_bzr)
340
 
        # and again.
341
 
        import_version('output2', pybaz.Version(self._baz._import_symlink),
342
 
                       self.collect)
343
 
        branch2 = Branch.open('output2')
344
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
345
 
        rev2 = branch2.get_revision(self._baz._import_symlink_bzr)
346
 
        # they must be the same
347
 
        self.assertEqual(rev, rev2)
348
 
 
349
 
        # and we should get some expected values:
350
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
351
 
        self.assertEqual(rev.message, "Import with a symlink")
352
 
        self.assertEqual(rev.revision_id, self._baz._import_symlink_bzr)
353
 
 
354
 
        # and we want the symlink alink with target 'missing-file-name'
355
 
        inv = branch.get_inventory(rev.inventory_id)
356
 
        self.assertEqual(inv.path2id('alink'), 'x_symlink_tag')
357
 
        entry = inv['x_symlink_tag']
358
 
        self.assertEqual(entry.kind, 'symlink')
359
 
        self.assertEqual(entry.symlink_target, 'missing-file-name')
360
 
 
361
 
    def test_missing_ancestor(self):
362
 
        import_version('output', pybaz.Version(self._baz._missing_ancestor),
363
 
                       self.collect)
364
 
        # expected results:
365
 
        # one commits, no files, revision identifiers of 
366
 
        # 'demo@DONOTUSE_c--gone--0--base-0' and
367
 
        # a merge of demo-gone@DONOTUSE%c--import--0
368
 
        branch = Branch.open('output')
369
 
        self.assertEqual(branch.revision_history(),
370
 
                         [self._baz._missing_ancestor_bzr])
371
 
        rev = branch.get_revision(self._baz._missing_ancestor_bzr)
372
 
        # and again.
373
 
        import_version('output2', pybaz.Version(self._baz._missing_ancestor),
374
 
                       self.collect)
375
 
        branch2 = Branch.open('output2')
376
 
        self.assertEqual(branch.revision_history(), branch2.revision_history())
377
 
        rev2 = branch2.get_revision(self._baz._missing_ancestor_bzr)
378
 
        # they must be the same
379
 
        self.assertEqual(rev, rev2)
380
 
 
381
 
        # and we should get some expected values:
382
 
        self.assertEqual(rev.committer, "Test User<test@example.org>")
383
 
        self.assertEqual(rev.message, "tag of demo-gone@DONOTUSE/c--import--0--base-0")
384
 
        self.assertEqual(rev.revision_id, self._baz._missing_ancestor_bzr)
385
 
        self.assertEqual(rev.parents[0].revision_id,
386
 
                         self._baz._missing_import_bzr)
387
 
        self.assertEqual(1, len(rev.parents))
388
 
 
389
 
        # must NOT be able to get the merged evision
390
 
        self.assertRaises(NoSuchRevision, branch.get_revision, 
391
 
                          self._baz._missing_import_bzr)
392
 
 
393
 
 
394
 
class TestNamespacePrevious(TestCase):
395
 
 
396
 
    def setUp(self):
397
 
        TestCase.setUp(self)
398
 
        self.version = pybaz.Version('foo@example.com/c--b--0')
399
 
 
400
 
    def test_base0_none(self):
401
 
        self.assertEqual(namespace_previous(self.version['base-0']), None)
402
 
 
403
 
    def test_patch1_base0(self):
404
 
        self.assertEqual(namespace_previous(self.version['patch-1']),
405
 
                         self.version['base-0'])
406
 
        
407
 
    def test_patch3000_patch2999(self):
408
 
        self.assertEqual(namespace_previous(self.version['patch-3000']),
409
 
                         self.version['patch-2999'])
410
 
        
411
 
    def test_version0_raises(self):
412
 
        self.assertRaises(RuntimeError, namespace_previous,
413
 
                          self.version['version-0'])
414
 
 
415
 
    def test_version1_version0(self):
416
 
        self.assertEqual(namespace_previous(self.version['versionfix-1']),
417
 
                         self.version['version-0'])
418
 
 
419
 
    def test_version3000_patch2999(self):
420
 
        self.assertEqual(namespace_previous(self.version['versionfix-3000']),
421
 
                         self.version['versionfix-2999'])
422
 
 
423
 
class TestNamespaceMapping(TestCase):
424
 
 
425
 
    def test_namespace_mapping_branch(self):
426
 
        from baz_import import map_namespace
427
 
        branch = pybaz.Branch('foo@example.com/c--b')
428
 
        self.assertRaises(pybaz.errors.NamespaceError, map_namespace, branch)
429
 
        self.assertEqual('c/b', map_namespace(branch['0']))
430
 
        self.assertEqual('c/0.1/b', map_namespace(branch['0.1']))
431
 
 
432
 
    def test_namespace_mapping_no_branch(self):
433
 
        from baz_import import map_namespace
434
 
        category = pybaz.Category('foo@example.com/c')
435
 
        self.assertRaises(pybaz.errors.NamespaceError, map_namespace, category)
436
 
        self.assertEqual('c/+trunk', 
437
 
                         map_namespace(pybaz.Version("%s--0" % category)))
438
 
        self.assertEqual('c/0.1/+trunk',
439
 
                         map_namespace(pybaz.Version('%s--0.1' % category)))
440
 
 
441
 
 
442
 
class TestImport(TestCaseInTempDir):
443
 
 
444
 
    def setUp(self):
445
 
        TestCaseInTempDir.setUp(self)
446
 
        self._oldhome = os.environ['HOME']
447
 
        self._tmpdir = tempfile.mkdtemp()
448
 
        self._homedir = os.path.join(self._tmpdir, 'home')
449
 
        os.mkdir(self._homedir)
450
 
        os.environ['HOME'] = self._homedir
451
 
        self._archiveroot = os.path.join(self._tmpdir, 'archive')
452
 
        self._archive = pybaz.make_archive('demo@DONOTUSE', 
453
 
                                           str(self._archiveroot))
454
 
 
455
 
    def tearDown(self):
456
 
        os.environ['HOME'] = self._oldhome
457
 
        shutil.rmtree(self._tmpdir)
458
 
        TestCaseInTempDir.tearDown(self)
459
 
 
460
 
    def make_import(self, namespace):
461
 
        self._import = 'demo@DONOTUSE/%s' % namespace
462
 
        os.mkdir(os.path.join(self._tmpdir, 'tree'))
463
 
        tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'), self._import)
464
 
        msg = tree.log_message()
465
 
        msg["summary"] = "I am importing now"
466
 
        tree.import_(msg)
467
 
        shutil.rmtree(os.path.join(self._tmpdir, 'tree'))
468
 
 
469
 
    def test_cmd_exists(self):
470
 
        from baz_import import cmd_baz_import
471
 
 
472
 
    def test_empty_archive(self):
473
 
        command = cmd_baz_import()
474
 
        command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
475
 
        self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output')))
476
 
        self.assertEqual(1, 
477
 
                        len(list(os.walk(os.path.join(self._tmpdir,'output')))))
478
 
 
479
 
    def test_two_branches(self):
480
 
        self.make_import('c--0')
481
 
        self.make_import('c1--branch--0.2')
482
 
        command = cmd_baz_import()
483
 
        command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
484
 
        self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output')))
485
 
        self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output', 'c','+trunk')))
486
 
        self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output', 'c1', '0.2','branch')))
487
 
        self.assertEqual(14, 
488
 
                        len(list(os.walk(os.path.join(self._tmpdir,'output')))))
489
 
 
490
 
    def test_run_twice(self):
491
 
        self.make_import('c--0')
492
 
        command = cmd_baz_import()
493
 
        command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
494
 
        command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')