~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_inv.py

 * Two new commands 'bzr checkout' and 'bzr update' allow for CVS/SVN-alike
   behaviour. They use the existing serverless-mode and store no data
   locally. As such they are not suitable for use except in high bandwidth
   low latency environments like LAN's or local disk. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import bzrlib.inventory as inventory
25
25
from bzrlib.osutils import has_symlinks, rename, pathjoin
26
26
from bzrlib.tests import TestCase, TestCaseWithTransport
27
 
from bzrlib.workingtree import WorkingTree
28
27
 
29
28
 
30
29
class TestInventory(TestCase):
401
400
 
402
401
        a_id = "a-20051208024829-849e76f7968d7a86"
403
402
        b_id = "b-20051208024829-849e76f7968d7a86"
404
 
        t = WorkingTree('b1', b)
405
 
        self.assertEqual(['a', 'b'], [cn for cn,ie in t.inventory.iter_entries()])
406
 
 
407
 
        self.failUnless(t.is_executable(a_id), "'a' lost the execute bit")
408
 
        self.failIf(t.is_executable(b_id), "'b' gained an execute bit")
409
 
 
410
 
        t.commit('adding a,b', rev_id='r1')
 
403
        wt = wt.bzrdir.open_workingtree()
 
404
        self.assertEqual(['a', 'b'], [cn for cn,ie in wt.inventory.iter_entries()])
 
405
 
 
406
        self.failUnless(wt.is_executable(a_id), "'a' lost the execute bit")
 
407
        self.failIf(wt.is_executable(b_id), "'b' gained an execute bit")
 
408
 
 
409
        wt.commit('adding a,b', rev_id='r1')
411
410
 
412
411
        rev_tree = b.repository.revision_tree('r1')
413
412
        self.failUnless(rev_tree.is_executable(a_id), "'a' lost the execute bit")
419
418
        # Make sure the entries are gone
420
419
        os.remove('b1/a')
421
420
        os.remove('b1/b')
422
 
        self.failIf(t.has_id(a_id))
423
 
        self.failIf(t.has_filename('a'))
424
 
        self.failIf(t.has_id(b_id))
425
 
        self.failIf(t.has_filename('b'))
 
421
        self.failIf(wt.has_id(a_id))
 
422
        self.failIf(wt.has_filename('a'))
 
423
        self.failIf(wt.has_id(b_id))
 
424
        self.failIf(wt.has_filename('b'))
426
425
 
427
426
        # Make sure that revert is able to bring them back,
428
427
        # and sets 'a' back to being executable
429
428
 
430
 
        t.revert(['a', 'b'], rev_tree, backups=False)
431
 
        self.assertEqual(['a', 'b'], [cn for cn,ie in t.inventory.iter_entries()])
 
429
        wt.revert(['a', 'b'], rev_tree, backups=False)
 
430
        self.assertEqual(['a', 'b'], [cn for cn,ie in wt.inventory.iter_entries()])
432
431
 
433
 
        self.failUnless(t.is_executable(a_id), "'a' lost the execute bit")
434
 
        self.failIf(t.is_executable(b_id), "'b' gained an execute bit")
 
432
        self.failUnless(wt.is_executable(a_id), "'a' lost the execute bit")
 
433
        self.failIf(wt.is_executable(b_id), "'b' gained an execute bit")
435
434
 
436
435
        # Now remove them again, and make sure that after a
437
436
        # commit, they are still marked correctly
438
437
        os.remove('b1/a')
439
438
        os.remove('b1/b')
440
 
        t.commit('removed', rev_id='r2')
 
439
        wt.commit('removed', rev_id='r2')
441
440
 
442
 
        self.assertEqual([], [cn for cn,ie in t.inventory.iter_entries()])
443
 
        self.failIf(t.has_id(a_id))
444
 
        self.failIf(t.has_filename('a'))
445
 
        self.failIf(t.has_id(b_id))
446
 
        self.failIf(t.has_filename('b'))
 
441
        self.assertEqual([], [cn for cn,ie in wt.inventory.iter_entries()])
 
442
        self.failIf(wt.has_id(a_id))
 
443
        self.failIf(wt.has_filename('a'))
 
444
        self.failIf(wt.has_id(b_id))
 
445
        self.failIf(wt.has_filename('b'))
447
446
 
448
447
        # Now revert back to the previous commit
449
 
        t.revert([], rev_tree, backups=False)
450
 
        # TODO: FIXME: For some reason, after revert, the tree does not 
451
 
        # regenerate its working inventory, so we have to manually delete
452
 
        # the working tree, and create a new one
453
 
        # This seems to happen any time you do a merge operation on the
454
 
        # working tree
455
 
        del t
456
 
        t = WorkingTree('b1', b)
457
 
 
458
 
        self.assertEqual(['a', 'b'], [cn for cn,ie in t.inventory.iter_entries()])
459
 
 
460
 
        self.failUnless(t.is_executable(a_id), "'a' lost the execute bit")
461
 
        self.failIf(t.is_executable(b_id), "'b' gained an execute bit")
 
448
        wt.revert([], rev_tree, backups=False)
 
449
        self.assertEqual(['a', 'b'], [cn for cn,ie in wt.inventory.iter_entries()])
 
450
 
 
451
        self.failUnless(wt.is_executable(a_id), "'a' lost the execute bit")
 
452
        self.failIf(wt.is_executable(b_id), "'b' gained an execute bit")
462
453
 
463
454
        # Now make sure that 'bzr branch' also preserves the
464
455
        # executable bit
480
471
        # Now commit the changes on the first branch
481
472
        # so that the second branch can pull the changes
482
473
        # and make sure that the executable bit has been copied
483
 
        t.commit('resurrected', rev_id='r3')
 
474
        wt.commit('resurrected', rev_id='r3')
484
475
 
485
476
        t2.pull(b)
486
477
        self.assertEquals('r3', b2.last_revision())