~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_dirstate.py

Steps toward an object model.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Tests of the dirstate functionality being built for WorkingTreeFormat4."""
18
18
 
 
19
import os
 
20
 
19
21
from bzrlib import dirstate
20
22
from bzrlib.tests import TestCaseWithTransport
21
23
 
29
31
# Test get state from a file, then asking for lines.
30
32
# write a smaller state, and check the file has been truncated.
31
33
# add a entry when its in state deleted
 
34
# revision attribute for root entries.
 
35
# test that utf8 strings are preserved in _row_to_line
 
36
# test parent manipulation
32
37
 
33
38
class TestTreeToDirstate(TestCaseWithTransport):
34
39
 
41
46
        # write to disk.
42
47
        lines = state.get_lines()
43
48
        expected_lines_re = (
44
 
            '#bzr dirstate flat format 1\n'
 
49
            '#bazaar dirstate flat format 1\n'
45
50
            'adler32: [0-9-][0-9]*\n'
46
51
            'num_entries: 1\n'
47
52
            '0\x00\n'
60
65
        # we now have parent revisions, and all the files in the tree were
61
66
        # last modified in the parent.
62
67
        expected_lines_re = (
63
 
            '#bzr dirstate flat format 1\n'
 
68
            '#bazaar dirstate flat format 1\n'
64
69
            'adler32: [0-9-][0-9]*\n'
65
70
            'num_entries: 1\n'
66
71
            '1\x00.*\x00\n'
82
87
        # we now have parent revisions, and all the files in the tree were
83
88
        # last modified in the parent.
84
89
        expected_lines_re = (
85
 
            '#bzr dirstate flat format 1\n'
 
90
            '#bazaar dirstate flat format 1\n'
86
91
            'adler32: [0-9-][0-9]*\n'
87
92
            'num_entries: 1\n'
88
93
            '2\x00.*\x00.*\x00\n'
100
105
        # write to disk.
101
106
        lines = state.get_lines()
102
107
        expected_lines_re = (
103
 
            '#bzr dirstate flat format 1\n'
 
108
            '#bazaar dirstate flat format 1\n'
104
109
            'adler32: [0-9-][0-9]*\n'
105
110
            'num_entries: 1\n'
106
111
            '0\x00\n'
123
128
        # write to disk.
124
129
        lines = state.get_lines()
125
130
        expected_lines_re = (
126
 
            '#bzr dirstate flat format 1\n'
 
131
            '#bazaar dirstate flat format 1\n'
127
132
            'adler32: [0-9-][0-9]*\n'
128
133
            'num_entries: 2\n'
129
134
            '0\x00\n'
146
151
        # we now have parent revisions, and all the files in the tree were
147
152
        # last modified in the parent.
148
153
        expected_lines_re = (
149
 
            '#bzr dirstate flat format 1\n'
 
154
            '#bazaar dirstate flat format 1\n'
150
155
            'adler32: [0-9-][0-9]*\n'
151
156
            'num_entries: 2\n'
152
157
            '1\x00.*\x00\n'
175
180
        # we now have parent revisions, and all the files in the tree were
176
181
        # last modified in the parent.
177
182
        expected_lines_re = (
178
 
            '#bzr dirstate flat format 1\n'
 
183
            '#bazaar dirstate flat format 1\n'
179
184
            'adler32: [0-9-][0-9]*\n'
180
185
            'num_entries: 2\n'
181
186
            '2\x00.*\x00.*\x00\n'
206
211
        state = dirstate.DirState.initialize('dirstate')
207
212
        self.assertIsInstance(state, dirstate.DirState)
208
213
        self.assertFileEqual(
209
 
            '#bzr dirstate flat format 1\n'
210
 
            'adler32: 14155835\n'
211
 
            'num_entries: 0\n'
 
214
            '#bazaar dirstate flat format 1\n'
 
215
            'adler32: -682945876\n'
 
216
            'num_entries: 1\n'
212
217
            '0\x00\n'
 
218
            # after the 0 parent count, there is the \x00\n\x00 line delim
 
219
            # then '' for dir, '' for basame, and then 'd' for directory.
 
220
            # then the root value, 0 size, our constant xxxx packed stat, and 
 
221
            # an empty sha value. Finally a new \x00\n\x00 delimiter
 
222
            '\x00\x00\x00d\x00TREE_ROOT\x000\x00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\x00\x00\n'
213
223
            '\x00',
214
224
            'dirstate')
215
225
 
226
236
        state = dirstate.DirState.on_file('dirstate')
227
237
        self.assertEqual(['a-ghost'], state.get_parent_ids())
228
238
 
 
239
    ### add a path via _set_data - so we dont need delta work, just
 
240
    # raw data in, and ensure that it comes out via get_lines happily.
229
241
 
230
242
class TestGetLines(TestCaseWithTransport):
231
243
 
234
246
        lines = list(state.get_lines())
235
247
        state.add_parent_tree('a-ghost', None)
236
248
        self.assertNotEqual(lines, state.get_lines())
 
249
 
 
250
    def test_row_to_line(self):
 
251
        state = dirstate.DirState.initialize('dirstate')
 
252
        packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk'
 
253
        root_row_data = ('', '', 'directory', 'a-root-value', 0, packed_stat, '')
 
254
        root_parents = []
 
255
        root_row = (root_row_data, root_parents)
 
256
        self.assertEqual('\x00\x00d\x00a-root-value\x000\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00', state._row_to_line(root_row))