23
23
except ImportError:
27
from bzrtools import cmd_baz_import
28
from bzrtools.baz_import import (import_version, revision_id,
29
make_archive, map_file_id)
31
from bzrlib.plugins.bzrtools import cmd_baz_import
32
from bzrlib.plugins.bzrtools.baz_import import (import_version,
26
from bzrlib.plugins.bzrtools import cmd_baz_import
27
from bzrlib.plugins.bzrtools.baz_import import (import_version,
37
32
from StringIO import StringIO
39
34
from testresources import (TestResource, TestLoader, OptimisingTestSuite,
43
38
from bzrlib.errors import NoSuchRevision
45
from bzrtools.fai import namespace_previous
47
from bzrlib.plugins.bzrtools.fai import namespace_previous
39
from bzrlib.plugins.bzrtools.fai import namespace_previous
48
40
from bzrlib.branch import Branch
183
175
self._archive = make_archive('demo-gone@DONOTUSE',
184
176
str(self._archivegoneroot))
185
177
self._missing_import = 'demo-gone@DONOTUSE/c--import--0'
186
self._missing_import_bzr = revision_id(self._missing_import
178
self._missing_import_bzr = revision_id(self._missing_import
187
179
+ '--base-0', None)
188
180
self._missing_ancestor = 'demo@DONOTUSE/c--gone--0'
189
self._missing_ancestor_bzr = revision_id(self._missing_ancestor
181
self._missing_ancestor_bzr = revision_id(self._missing_ancestor
190
182
+ '--base-0', None)
191
183
os.mkdir(os.path.join(self._tmpdir, 'tree'))
192
tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'),
184
tree = pybaz.init_tree(os.path.join(self._tmpdir, 'tree'),
193
185
self._missing_import)
194
186
msg = tree.log_message()
195
187
msg["summary"] = "I am importing now"
202
194
# make an import for testing history-reuse logic.
203
195
# note the use of a namespace layout here.
204
self._missing_import_imported = os.path.join(self._tmpdir,
196
self._missing_import_imported = os.path.join(self._tmpdir,
205
197
'archivegone-bzr')
206
198
os.mkdir(os.path.join(self._tmpdir, 'archivegone-bzr'))
207
199
os.mkdir(os.path.join(self._tmpdir, 'archivegone-bzr', 'c'))
208
import_version(os.path.join(self._tmpdir, 'archivegone-bzr',
200
import_version(os.path.join(self._tmpdir, 'archivegone-bzr',
210
202
pybaz.Version(self._missing_import), None)
211
203
# and make it inaccessible
308
300
# and we should get some expected values:
309
301
self.assertEqual(rev.committer, "Test User<test@example.org>")
310
self.assertEqual(rev.message,
302
self.assertEqual(rev.message,
311
303
"tag of demo@DONOTUSE/c--import--0--base-0")
312
304
self.assertEqual(rev.revision_id, self._baz._empty_tag_bzr)
314
306
def test_empty_merged_tagged(self):
315
import_version('output', pybaz.Version(self._baz._empty_merged_tag),
307
import_version('output', pybaz.Version(self._baz._empty_merged_tag),
317
309
# expected results:
318
# two commits, no files, revision identifiers of
310
# two commits, no files, revision identifiers of
319
311
# 'demo@DONOTUSE_c--import--0--base-0' and
320
312
# self._baz._empty_merged_tag_bzr_base
321
313
# self._baz._empty_merged_tag_bzr
328
320
self._baz._empty_merged_tag_bzr_base,
329
321
self._baz._empty_merged_tag_bzr])
331
import_version('output2', pybaz.Version(self._baz._empty_merged_tag),
323
import_version('output2', pybaz.Version(self._baz._empty_merged_tag),
333
325
branch2 = Branch.open('output2')
334
326
repo2 = branch2.repository
335
327
# and import what we should be merged up against for checking with.
336
328
import_version('output3', pybaz.Version(self._baz._empty_tag), None)
337
329
branch3 = Branch.open('output3')
339
331
self.assertEqual(branch.revision_history(), branch2.revision_history())
340
self.assertNotEqual(branch.revision_history(),
332
self.assertNotEqual(branch.revision_history(),
341
333
branch3.revision_history())
342
334
# check revisions in the history.
343
335
rev = repo.get_revision(self._baz._empty_merged_tag_bzr_base)
365
357
self._baz._empty_merged_tag_bzr_base)
366
358
self.assertEqual(rev.parent_ids[1], self._baz._empty_tag_bzr)
368
# this tree should have nothing missing from that tree.
360
# this tree should have nothing missing from that tree.
369
361
# FIXME there is no code for this right now.
370
362
# self.assertEqual(branch.missing_revisions(branch3), [])
372
364
def test_merge_branch_with_merges(self):
373
import_version('output', pybaz.Version(self._baz._empty_merged_tag_2),
365
import_version('output', pybaz.Version(self._baz._empty_merged_tag_2),
375
367
# expected results:
376
# two commits, no files, revision identifiers of
368
# two commits, no files, revision identifiers of
377
369
# 'demo@DONOTUSE_c--import--0--base-0' and
378
370
# self._baz._empty_merged_tag_2_bzr_base
379
371
# self._baz._empty_merged_tag_2_bzr
424
416
self.assertEqual(rev.parent_ids[1],
425
417
self._baz._empty_merged_tag_bzr)
427
# this tree should have nothing missing from that tree.
419
# this tree should have nothing missing from that tree.
428
420
# FIXME there is no code for this right now.
429
421
# self.assertEqual(branch.missing_revisions(branch3), [])
431
423
def test_import_symlink(self):
432
import_version('output', pybaz.Version(self._baz._import_symlink),
424
import_version('output', pybaz.Version(self._baz._import_symlink),
433
425
None, max_count=1)
434
426
# expected results:
435
# two commits, no files, revision identifier of
427
# two commits, no files, revision identifier of
436
428
# 'demo@DONOTUSE_c--import--0--base-0'
437
429
branch = Branch.open('output')
438
430
self.assertEqual(branch.revision_history(),
459
451
self.assertEqual(entry.kind, 'symlink')
460
452
self.assertEqual(entry.symlink_target, 'missing-file-name')
462
# current bzr doesn't handle type changes
463
self.assertRaises(AssertionError, import_version, 'output3',
464
pybaz.Version(self._baz._import_symlink), None)
454
# Test kind change for import
455
import_version('output3', pybaz.Version(self._baz._import_symlink),
466
458
def test_missing_ancestor(self):
467
459
import_version('output', pybaz.Version(self._baz._missing_ancestor),
469
461
# expected results:
470
# one commits, no files, revision identifiers of
462
# one commits, no files, revision identifiers of
471
463
# 'demo@DONOTUSE_c--gone--0--base-0' and
472
464
# a merge of demo-gone@DONOTUSE%c--import--0
473
465
branch = Branch.open('output')
486
478
# and we should get some expected values:
487
479
self.assertEqual(rev.committer, "Test User<test@example.org>")
488
self.assertEqual(rev.message,
480
self.assertEqual(rev.message,
489
481
"tag of demo-gone@DONOTUSE/c--import--0--base-0")
490
482
self.assertEqual(rev.revision_id, self._baz._missing_ancestor_bzr)
491
483
self.assertEqual(rev.parent_ids[0], self._baz._missing_import_bzr)
492
484
self.assertEqual(1, len(rev.parent_ids))
494
486
# must NOT be able to get the merged evision
495
self.assertRaises(NoSuchRevision, branch.repository.get_revision,
487
self.assertRaises(NoSuchRevision, branch.repository.get_revision,
496
488
self._baz._missing_import_bzr)
498
490
def test_missing_ancestor_reusing_history(self):
757
749
command = cmd_baz_import()
758
750
command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
759
751
self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output')))
760
self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output',
752
self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output',
762
self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output',
754
self.failUnless(os.path.exists(os.path.join(self._tmpdir,'output',
763
755
'c1', '0.2','branch')))
764
756
default_format = repository.RepositoryFormat.get_default_format()
765
757
if getattr(default_format, 'rich_root_data', False):
769
761
walk_len = len(list(os.walk(os.path.join(self._tmpdir,'output'))))
770
762
self.assertEqual(num_files, walk_len)
774
766
command = cmd_baz_import()
775
767
command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
776
768
command.run(os.path.join(self._tmpdir, 'output'), 'demo@DONOTUSE')
778
770
def test_accepts_reuse_history(self):
779
771
self.make_import('c--0')
780
self.run_bzr('baz-import', os.path.join(self._tmpdir, 'output'),
781
'demo@DONOTUSE', '.', '.')
783
def test_does_not_need_reuse_history(self):
784
self.make_import('c--0')
785
self.run_bzr('baz-import', os.path.join(self._tmpdir, 'output'),
788
def test_does_not_need_reuse_history(self):
789
self.make_import('c--0')
790
self.run_bzr('baz-import', os.path.join(self._tmpdir, 'output'),
772
self.run_bzr(['baz-import', os.path.join(self._tmpdir, 'output'),
773
'demo@DONOTUSE', '.', '.'])
775
def test_does_not_need_reuse_history(self):
776
self.make_import('c--0')
777
self.run_bzr(['baz-import', os.path.join(self._tmpdir, 'output'),
780
def test_does_not_need_reuse_history(self):
781
self.make_import('c--0')
782
self.run_bzr(['baz-import', os.path.join(self._tmpdir, 'output'),
793
785
def test_encoding_flag(self):
794
786
self.make_import('c--0')
795
self.run_bzr('baz-import', os.path.join(self._tmpdir, 'output'),
797
self.assertEqual(['Arch-1:demo@DONOTUSE%c--0--base-0'],
798
Branch.open(os.path.join(self._tmpdir,
787
self.run_bzr(['baz-import', os.path.join(self._tmpdir, 'output'),
789
self.assertEqual(['Arch-1:demo@DONOTUSE%c--0--base-0'],
790
Branch.open(os.path.join(self._tmpdir,
799
791
'output/c/+trunk')).revision_history())
800
self.run_bzr('baz-import', os.path.join(self._tmpdir, 'output2'),
801
'demo@DONOTUSE', '--encoding', 'utf-8')
802
self.assertEqual(['Arch-1-utf-8:demo@DONOTUSE%c--0--base-0'],
803
Branch.open(os.path.join(self._tmpdir,
792
self.run_bzr(['baz-import', os.path.join(self._tmpdir, 'output2'),
793
'demo@DONOTUSE', '--encoding', 'utf-8'])
794
self.assertEqual(['Arch-1-utf-8:demo@DONOTUSE%c--0--base-0'],
795
Branch.open(os.path.join(self._tmpdir,
804
796
'output2/c/+trunk')).revision_history())
805
self.run_bzr('baz-import-branch', os.path.join(self._tmpdir, 'output3'),
806
'demo@DONOTUSE/c--0')
807
self.assertEqual(['Arch-1:demo@DONOTUSE%c--0--base-0'],
808
Branch.open(os.path.join(self._tmpdir,
797
self.run_bzr(['baz-import-branch', os.path.join(self._tmpdir,
798
'output3'), 'demo@DONOTUSE/c--0'])
799
self.assertEqual(['Arch-1:demo@DONOTUSE%c--0--base-0'],
800
Branch.open(os.path.join(self._tmpdir,
809
801
'output3')).revision_history())
810
self.run_bzr('baz-import-branch', os.path.join(self._tmpdir,
811
'output4'), 'demo@DONOTUSE/c--0', '--encoding', 'utf-8')
812
self.assertEqual(['Arch-1-utf-8:demo@DONOTUSE%c--0--base-0'],
813
Branch.open(os.path.join(self._tmpdir,
802
self.run_bzr(['baz-import-branch', os.path.join(self._tmpdir,
803
'output4'), 'demo@DONOTUSE/c--0', '--encoding', 'utf-8'])
804
self.assertEqual(['Arch-1-utf-8:demo@DONOTUSE%c--0--base-0'],
805
Branch.open(os.path.join(self._tmpdir,
814
806
'output4')).revision_history())