~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

(robertc) Introduce Tree interface implementation tests. This corrects behaviour differences in Tree implementations for the __iter__ interface which were revealed by the new tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
73
73
    def has_id(self, file_id):
74
74
        return self.inventory.has_id(file_id)
75
75
 
 
76
    __contains__ = has_id
 
77
 
76
78
    def has_or_had_id(self, file_id):
77
79
        if file_id == self.inventory.root.file_id:
78
80
            return True
79
81
        return self.inventory.has_id(file_id)
80
82
 
81
 
    __contains__ = has_id
82
 
 
83
83
    def __iter__(self):
84
84
        return iter(self.inventory)
85
85
 
86
86
    def id2path(self, file_id):
87
87
        return self.inventory.id2path(file_id)
88
88
 
 
89
    def iter_entries_by_dir(self):
 
90
        """Walk the tree in 'by_dir' order.
 
91
 
 
92
        This will yield each entry in the tree as a (path, entry) tuple. The
 
93
        order that they are yielded is: the contents of a directory are 
 
94
        preceeded by the parent of a directory, and all the contents of a 
 
95
        directory are grouped together.
 
96
        """
 
97
        return self.inventory.iter_entries_by_dir()
 
98
 
89
99
    def kind(self, file_id):
90
100
        raise NotImplementedError("subclasses must implement kind")
91
101
 
221
231
 
222
232
    def list_files(self):
223
233
        # The only files returned by this are those from the version
224
 
        for path, entry in self.inventory.iter_entries():
 
234
        entries = self.inventory.iter_entries()
 
235
        # skip the root for compatability with the current apis.
 
236
        entries.next()
 
237
        for path, entry in entries:
225
238
            yield path, 'V', entry.kind, entry.file_id, entry
226
239
 
227
240
    def get_symlink_target(self, file_id):