/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_memorytree.py

  • Committer: Andrew Bennetts
  • Date: 2008-08-12 14:53:26 UTC
  • mto: This revision was merged to the branch mainline in revision 3624.
  • Revision ID: andrew.bennetts@canonical.com-20080812145326-yx693x2jc4rcovb7
Move the notes on writing tests out of HACKING into a new file, and improve
them.

Many of the testing notes in the HACKING file were in duplicated in two places
in that file!  This change removes that duplication.  It also adds new sections
on “Where should I put a new test?” and “TestCase and its subclasses”, and
others like “Test feature dependencies” have been expanded.  The whole document
has generally been edited to be a bit more coherent. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
"""Tests for the MemoryTree class."""
19
19
 
24
24
 
25
25
 
26
26
class TestMemoryTree(TestCaseWithTransport):
27
 
 
 
27
    
28
28
    def test_create_on_branch(self):
29
29
        """Creating a mutable tree on a trivial branch works."""
30
30
        branch = self.make_branch('branch')
32
32
        self.assertEqual(branch.bzrdir, tree.bzrdir)
33
33
        self.assertEqual(branch, tree.branch)
34
34
        self.assertEqual([], tree.get_parent_ids())
35
 
 
 
35
    
36
36
    def test_create_on_branch_with_content(self):
37
37
        """Creating a mutable tree on a non-trivial branch works."""
38
38
        branch = self.make_branch('branch')
96
96
        branch = self.make_branch('branch')
97
97
        tree = MemoryTree.create_on_branch(branch)
98
98
        tree.lock_write()
99
 
        tree.add(['', 'afile', 'adir'], None,
 
99
        tree.add(['', 'afile', 'adir'], None, 
100
100
                 ['directory', 'file', 'directory'])
101
101
        self.assertEqual('afile', tree.id2path(tree.path2id('afile')))
102
102
        self.assertEqual('adir', tree.id2path(tree.path2id('adir')))
108
108
        branch = self.make_branch('branch')
109
109
        tree = MemoryTree.create_on_branch(branch)
110
110
        tree.lock_write()
111
 
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'],
 
111
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'], 
112
112
                  kinds=['directory', 'file'])
113
113
        tree.put_file_bytes_non_atomic('foo-id', 'barshoom')
114
114
        self.assertEqual('barshoom', tree.get_file('foo-id').read())
118
118
        branch = self.make_branch('branch')
119
119
        tree = MemoryTree.create_on_branch(branch)
120
120
        tree.lock_write()
121
 
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'],
 
121
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'], 
122
122
                 kinds=['directory', 'file'])
123
123
        tree.put_file_bytes_non_atomic('foo-id', 'first-content')
124
124
        tree.put_file_bytes_non_atomic('foo-id', 'barshoom')
150
150
        branch = self.make_branch('branch')
151
151
        tree = MemoryTree.create_on_branch(branch)
152
152
        tree.lock_write()
153
 
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'],
 
153
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'], 
154
154
                 kinds=['directory', 'file'])
155
155
        tree.put_file_bytes_non_atomic('foo-id', 'barshoom')
156
156
        revision_id = tree.commit('message baby')
168
168
        branch = self.make_branch('branch')
169
169
        tree = MemoryTree.create_on_branch(branch)
170
170
        tree.lock_write()
171
 
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'],
 
171
        tree.add(['', 'foo'], ids=['root-id', 'foo-id'], 
172
172
                 kinds=['directory', 'file'])
173
173
        tree.unversion(['foo-id'])
174
174
        self.assertFalse(tree.has_id('foo-id'))
182
182
        rev_id = tree.commit('first post')
183
183
        tree.unlock()
184
184
        self.assertEqual(rev_id, tree.last_revision())
185
 
 
186
 
    def test_rename_file(self):
187
 
        tree = self.make_branch_and_memory_tree('branch')
188
 
        tree.lock_write()
189
 
        self.addCleanup(tree.unlock)
190
 
        tree.add(['', 'foo'], ['root-id', 'foo-id'], ['directory', 'file'])
191
 
        tree.put_file_bytes_non_atomic('foo-id', 'content\n')
192
 
        tree.commit('one', rev_id='rev-one')
193
 
        tree.rename_one('foo', 'bar')
194
 
        self.assertEqual('bar', tree.id2path('foo-id'))
195
 
        self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
196
 
        self.assertRaises(errors.NoSuchFile,
197
 
                          tree._file_transport.get_bytes, 'foo')
198
 
        tree.commit('two', rev_id='rev-two')
199
 
        self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
200
 
        self.assertRaises(errors.NoSuchFile,
201
 
                          tree._file_transport.get_bytes, 'foo')
202
 
 
203
 
        rev_tree2 = tree.branch.repository.revision_tree('rev-two')
204
 
        self.assertEqual('bar', rev_tree2.id2path('foo-id'))
205
 
        self.assertEqual('content\n', rev_tree2.get_file_text('foo-id'))
206
 
 
207
 
    def test_rename_file_to_subdir(self):
208
 
        tree = self.make_branch_and_memory_tree('branch')
209
 
        tree.lock_write()
210
 
        self.addCleanup(tree.unlock)
211
 
        tree.add('')
212
 
        tree.mkdir('subdir', 'subdir-id')
213
 
        tree.add('foo', 'foo-id', 'file')
214
 
        tree.put_file_bytes_non_atomic('foo-id', 'content\n')
215
 
        tree.commit('one', rev_id='rev-one')
216
 
 
217
 
        tree.rename_one('foo', 'subdir/bar')
218
 
        self.assertEqual('subdir/bar', tree.id2path('foo-id'))
219
 
        self.assertEqual('content\n',
220
 
                         tree._file_transport.get_bytes('subdir/bar'))
221
 
        tree.commit('two', rev_id='rev-two')
222
 
        rev_tree2 = tree.branch.repository.revision_tree('rev-two')
223
 
        self.assertEqual('subdir/bar', rev_tree2.id2path('foo-id'))