/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
768 by Martin Pool
- start some tests for directory renames
1
import os
2
import unittest
3
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
4
from bzrlib.selftest import TestCaseInTempDir, TestCase
768 by Martin Pool
- start some tests for directory renames
5
from bzrlib.branch import ScratchBranch, Branch
1501 by Robert Collins
Move revert from Branch to WorkingTree.
6
from bzrlib.errors import NotBranchError
778 by Martin Pool
- simple revert of text files
7
8
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
9
class TestBranch(TestCaseInTempDir):
1102 by Martin Pool
- merge test refactoring from robertc
10
11
    def test_unknowns(self):
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
12
        b = Branch.initialize('.')
781 by Martin Pool
- start of simple test for unknown-file reporting
13
14
        self.build_tree(['hello.txt',
15
                         'hello.txt~'])
16
17
        self.assertEquals(list(b.unknowns()),
18
                          ['hello.txt'])
19
1102 by Martin Pool
- merge test refactoring from robertc
20
    def test_no_changes(self):
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
21
        from bzrlib.errors import PointlessCommit
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
22
        
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
23
        b = Branch.initialize('.')
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
24
25
        self.build_tree(['hello.txt'])
26
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
27
        self.assertRaises(PointlessCommit,
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
28
                          b.working_tree().commit,
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
29
                          'commit without adding',
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
30
                          allow_pointless=False)
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
31
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
32
        b.working_tree().commit('commit pointless tree',
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
33
                 allow_pointless=True)
883 by Martin Pool
- more tests for detecting empty commits
34
35
        b.add('hello.txt')
36
        
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
37
        b.working_tree().commit('commit first added file',
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
38
                 allow_pointless=False)
883 by Martin Pool
- more tests for detecting empty commits
39
        
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
40
        self.assertRaises(PointlessCommit,
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
41
                          b.working_tree().commit,
883 by Martin Pool
- more tests for detecting empty commits
42
                          'commit after adding file',
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
43
                          allow_pointless=False)
883 by Martin Pool
- more tests for detecting empty commits
44
        
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
45
        b.working_tree().commit('commit pointless revision with one file',
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
46
                 allow_pointless=True)
883 by Martin Pool
- more tests for detecting empty commits
47
811 by Martin Pool
- Test case for validate_revision_id
48
1278 by Martin Pool
- remove test that tried to commit absent parents
49
class MoreTests(TestCaseInTempDir):
1390 by Robert Collins
pair programming worx... merge integration and weave
50
1102 by Martin Pool
- merge test refactoring from robertc
51
    def test_rename_dirs(self):
52
        """Test renaming directories and the files within them."""
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
53
        b = Branch.initialize('.')
768 by Martin Pool
- start some tests for directory renames
54
        self.build_tree(['dir/', 'dir/sub/', 'dir/sub/file'])
55
        b.add(['dir', 'dir/sub', 'dir/sub/file'])
56
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
57
        b.working_tree().commit('create initial state')
768 by Martin Pool
- start some tests for directory renames
58
59
        # TODO: lift out to a test helper that checks the shape of
60
        # an inventory
61
        
62
        revid = b.revision_history()[0]
63
        self.log('first revision_id is {%s}' % revid)
64
        
65
        inv = b.get_revision_inventory(revid)
66
        self.log('contents of inventory: %r' % inv.entries())
67
68
        self.check_inventory_shape(inv,
69
                                   ['dir', 'dir/sub', 'dir/sub/file'])
70
771 by Martin Pool
- more tests of directory renames
71
        b.rename_one('dir', 'newdir')
72
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
73
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
771 by Martin Pool
- more tests of directory renames
74
                                   ['newdir', 'newdir/sub', 'newdir/sub/file'])
75
76
        b.rename_one('newdir/sub', 'newdir/newsub')
1497 by Robert Collins
Move Branch.read_working_inventory to WorkingTree.
77
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
771 by Martin Pool
- more tests of directory renames
78
                                   ['newdir', 'newdir/newsub',
79
                                    'newdir/newsub/file'])
80
1102 by Martin Pool
- merge test refactoring from robertc
81
    def test_relpath(self):
82
        """test for branch path lookups
83
    
1457.1.2 by Robert Collins
move branch._relpath into osutils as relpath
84
        bzrlib.osutils._relpath do a simple but subtle
1102 by Martin Pool
- merge test refactoring from robertc
85
        job: given a path (either relative to cwd or absolute), work out
86
        if it is inside a branch and return the path relative to the base.
87
        """
1457.1.2 by Robert Collins
move branch._relpath into osutils as relpath
88
        from bzrlib.osutils import relpath
601 by Martin Pool
- whitebox tests for branch path handling
89
        import tempfile, shutil
90
        
91
        savedir = os.getcwdu()
92
        dtmp = tempfile.mkdtemp()
907.1.7 by John Arbash Meinel
Fixed test failure on Mac OSX.
93
        # On Mac OSX, /tmp actually expands to /private/tmp
94
        dtmp = os.path.realpath(dtmp)
601 by Martin Pool
- whitebox tests for branch path handling
95
96
        def rp(p):
1457.1.2 by Robert Collins
move branch._relpath into osutils as relpath
97
            return relpath(dtmp, p)
601 by Martin Pool
- whitebox tests for branch path handling
98
        
99
        try:
100
            # check paths inside dtmp while standing outside it
101
            self.assertEqual(rp(os.path.join(dtmp, 'foo')), 'foo')
102
103
            # root = nothing
104
            self.assertEqual(rp(dtmp), '')
105
106
            self.assertRaises(NotBranchError,
107
                              rp,
108
                              '/etc')
109
110
            # now some near-miss operations -- note that
111
            # os.path.commonprefix gets these wrong!
112
            self.assertRaises(NotBranchError,
113
                              rp,
114
                              dtmp.rstrip('\\/') + '2')
115
116
            self.assertRaises(NotBranchError,
117
                              rp,
118
                              dtmp.rstrip('\\/') + '2/foo')
119
120
            # now operations based on relpath of files in current
121
            # directory, or nearby
122
            os.chdir(dtmp)
123
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
124
            FOO_BAR_QUUX = os.path.join('foo', 'bar', 'quux')
125
            self.assertEqual(rp('foo/bar/quux'), FOO_BAR_QUUX)
601 by Martin Pool
- whitebox tests for branch path handling
126
127
            self.assertEqual(rp('foo'), 'foo')
128
129
            self.assertEqual(rp('./foo'), 'foo')
130
131
            self.assertEqual(rp(os.path.abspath('foo')), 'foo')
132
133
            self.assertRaises(NotBranchError,
134
                              rp, '../foo')
135
136
        finally:
137
            os.chdir(savedir)
138
            shutil.rmtree(dtmp)