~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/whitebox.py

  • Committer: Robert Collins
  • Date: 2005-10-16 00:22:17 UTC
  • mto: This revision was merged to the branch mainline in revision 1457.
  • Revision ID: robertc@lifelesslap.robertcollins.net-20051016002217-aa38f9c1eb13ee48
Plugins are now loaded under bzrlib.plugins, not bzrlib.plugin.

Plugins are also made available for other plugins to use by making them 
accessible via import bzrlib.plugins.NAME. You should not import other
plugins during the __init__ of your plugin though, as no ordering is
guaranteed, and the plugins directory is not on the python path.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import os
2
2
import unittest
3
3
 
4
 
from bzrlib.tests import TestCaseInTempDir, TestCase
 
4
from bzrlib.selftest import TestCaseInTempDir, TestCase
5
5
from bzrlib.branch import ScratchBranch, Branch
6
 
from bzrlib.errors import NotBranchError
 
6
from bzrlib.errors import NotBranchError, NotVersionedError
7
7
 
8
8
 
9
9
class TestBranch(TestCaseInTempDir):
10
10
 
 
11
    def test_unknowns(self):
 
12
        b = Branch.initialize('.')
 
13
 
 
14
        self.build_tree(['hello.txt',
 
15
                         'hello.txt~'])
 
16
 
 
17
        self.assertEquals(list(b.unknowns()),
 
18
                          ['hello.txt'])
 
19
 
11
20
    def test_no_changes(self):
12
21
        from bzrlib.errors import PointlessCommit
13
22
        
16
25
        self.build_tree(['hello.txt'])
17
26
 
18
27
        self.assertRaises(PointlessCommit,
19
 
                          b.working_tree().commit,
 
28
                          b.commit,
20
29
                          'commit without adding',
21
30
                          allow_pointless=False)
22
31
 
23
 
        b.working_tree().commit('commit pointless tree',
 
32
        b.commit('commit pointless tree',
24
33
                 allow_pointless=True)
25
34
 
26
 
        b.working_tree().add('hello.txt')
 
35
        b.add('hello.txt')
27
36
        
28
 
        b.working_tree().commit('commit first added file',
 
37
        b.commit('commit first added file',
29
38
                 allow_pointless=False)
30
39
        
31
40
        self.assertRaises(PointlessCommit,
32
 
                          b.working_tree().commit,
 
41
                          b.commit,
33
42
                          'commit after adding file',
34
43
                          allow_pointless=False)
35
44
        
36
 
        b.working_tree().commit('commit pointless revision with one file',
 
45
        b.commit('commit pointless revision with one file',
37
46
                 allow_pointless=True)
38
47
 
39
48
 
40
49
class MoreTests(TestCaseInTempDir):
41
50
 
 
51
    def test_revert(self):
 
52
        """Test selected-file revert"""
 
53
        b = Branch.initialize('.')
 
54
 
 
55
        self.build_tree(['hello.txt'])
 
56
        file('hello.txt', 'w').write('initial hello')
 
57
 
 
58
        self.assertRaises(NotVersionedError,
 
59
                          b.revert, ['hello.txt'])
 
60
        
 
61
        b.add(['hello.txt'])
 
62
        b.commit('create initial hello.txt')
 
63
 
 
64
        self.check_file_contents('hello.txt', 'initial hello')
 
65
        file('hello.txt', 'w').write('new hello')
 
66
        self.check_file_contents('hello.txt', 'new hello')
 
67
 
 
68
        # revert file modified since last revision
 
69
        b.revert(['hello.txt'])
 
70
        self.check_file_contents('hello.txt', 'initial hello')
 
71
        self.check_file_contents('hello.txt~', 'new hello')
 
72
 
 
73
        # reverting again clobbers the backup
 
74
        b.revert(['hello.txt'])
 
75
        self.check_file_contents('hello.txt', 'initial hello')
 
76
        self.check_file_contents('hello.txt~', 'initial hello')
 
77
 
42
78
    def test_rename_dirs(self):
43
79
        """Test renaming directories and the files within them."""
44
80
        b = Branch.initialize('.')
45
81
        self.build_tree(['dir/', 'dir/sub/', 'dir/sub/file'])
46
 
        b.working_tree().add(['dir', 'dir/sub', 'dir/sub/file'])
 
82
        b.add(['dir', 'dir/sub', 'dir/sub/file'])
47
83
 
48
 
        b.working_tree().commit('create initial state')
 
84
        b.commit('create initial state')
49
85
 
50
86
        # TODO: lift out to a test helper that checks the shape of
51
87
        # an inventory
59
95
        self.check_inventory_shape(inv,
60
96
                                   ['dir', 'dir/sub', 'dir/sub/file'])
61
97
 
62
 
        b.working_tree().rename_one('dir', 'newdir')
 
98
        b.rename_one('dir', 'newdir')
63
99
 
64
 
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
 
100
        self.check_inventory_shape(b.inventory,
65
101
                                   ['newdir', 'newdir/sub', 'newdir/sub/file'])
66
102
 
67
 
        b.working_tree().rename_one('newdir/sub', 'newdir/newsub')
68
 
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
 
103
        b.rename_one('newdir/sub', 'newdir/newsub')
 
104
        self.check_inventory_shape(b.inventory,
69
105
                                   ['newdir', 'newdir/newsub',
70
106
                                    'newdir/newsub/file'])
71
107
 
72
108
    def test_relpath(self):
73
109
        """test for branch path lookups
74
110
    
75
 
        bzrlib.osutils._relpath do a simple but subtle
 
111
        Branch.relpath and bzrlib.branch._relpath do a simple but subtle
76
112
        job: given a path (either relative to cwd or absolute), work out
77
113
        if it is inside a branch and return the path relative to the base.
78
114
        """
79
 
        from bzrlib.osutils import relpath
 
115
        from bzrlib.branch import _relpath
80
116
        import tempfile, shutil
81
117
        
82
118
        savedir = os.getcwdu()
85
121
        dtmp = os.path.realpath(dtmp)
86
122
 
87
123
        def rp(p):
88
 
            return relpath(dtmp, p)
 
124
            return _relpath(dtmp, p)
89
125
        
90
126
        try:
91
127
            # check paths inside dtmp while standing outside it