Rev 166: Add tests that we properly handle subdirectory entries. in http://bazaar.launchpad.net/~jameinel/bzr-explorer/wt_model
John Arbash Meinel
john at arbash-meinel.com
Tue Jul 7 22:13:18 BST 2009
At http://bazaar.launchpad.net/~jameinel/bzr-explorer/wt_model
------------------------------------------------------------
revno: 166
revision-id: john at arbash-meinel.com-20090707211314-06872uxsiog4blas
parent: john at arbash-meinel.com-20090707210347-ryhrlim4kjuli6fl
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: wt_model
timestamp: Tue 2009-07-07 16:13:14 -0500
message:
Add tests that we properly handle subdirectory entries.
-------------- next part --------------
=== modified file 'lib/wt_model.py'
--- a/lib/wt_model.py 2009-07-07 21:03:47 +0000
+++ b/lib/wt_model.py 2009-07-07 21:13:14 +0000
@@ -32,11 +32,8 @@
:type children: A list of _WTItem objects
"""
- def __init__(self, path, name, disk_kind, file_id, inv_kind, parent):
+ def __init__(self, path, name, disk_kind, file_id, inv_kind, parent_id):
"""Create a new _WTItem
-
- :type inventory_entry: A bzrlib.inventory.InventoryEntry
- :type parent: _WTItem
"""
self.path = path
self.name = name
@@ -45,7 +42,7 @@
self.inv_kind = inv_kind
# Note: this creates a cyclical reference, consider using parent_id
# instead
- self.parent = parent
+ self.parent_id = parent_id
self.children = []
@staticmethod
@@ -62,13 +59,17 @@
dir_wt_item = dir_items[dir_file_id]
except KeyError:
dir_wt_item = _WTItem(dir_path, '', 'directory',
- dir_file_id, 'directory', parent=None)
+ dir_file_id, 'directory', parent_id=None)
root_wt_item = dir_wt_item
+ dir_items[dir_file_id] = dir_wt_item
for (f_path, f_name, f_disk_kind, _, f_id,
f_inv_kind) in dir_block_info:
wt_item = _WTItem(f_path, f_name, f_disk_kind, f_id,
- f_inv_kind, parent=dir_wt_item)
+ f_inv_kind, dir_file_id)
dir_wt_item.children.append(wt_item)
+ # TODO: handle directories that aren't versioned
+ if f_inv_kind == 'directory':
+ dir_items[f_id] = wt_item
finally:
wt.unlock()
return root_wt_item
=== modified file 'tests/test_wt_model.py'
--- a/tests/test_wt_model.py 2009-07-07 21:03:47 +0000
+++ b/tests/test_wt_model.py 2009-07-07 21:13:14 +0000
@@ -72,7 +72,7 @@
self.assertEqual('directory', root_item.disk_kind)
self.assertEqual('root-id', root_item.file_id)
self.assertEqual('directory', root_item.inv_kind)
- self.assertIs(None, root_item.parent)
+ self.assertIs(None, root_item.parent_id)
self.assertEqual(1, len(root_item.children))
child = root_item.children[0]
self.assertEqual('a_file', child.path)
@@ -80,13 +80,13 @@
self.assertEqual('file', child.disk_kind)
self.assertEqual('file-id', child.file_id)
self.assertEqual('file', child.inv_kind)
- self.assertIs(root_item, child.parent)
+ self.assertEqual('root-id', child.parent_id)
def test_unversioned_from_wt(self):
wt = self.make_branch_and_tree('.')
self.build_tree(['a_file', 'unversioned-file'])
+ wt.set_root_id('root-id')
wt.add(['a_file'], ['file-id'])
- wt.set_root_id('root-id')
root_item = wt_model._WTItem.create_from_wt(wt)
self.assertIsInstance(root_item, wt_model._WTItem)
self.assertEqual('', root_item.path)
@@ -94,7 +94,7 @@
self.assertEqual('directory', root_item.disk_kind)
self.assertEqual('root-id', root_item.file_id)
self.assertEqual('directory', root_item.inv_kind)
- self.assertIs(None, root_item.parent)
+ self.assertIs(None, root_item.parent_id)
self.assertEqual(2, len(root_item.children))
child = root_item.children[0]
self.assertEqual('a_file', child.path)
@@ -102,11 +102,47 @@
self.assertEqual('file', child.disk_kind)
self.assertEqual('file-id', child.file_id)
self.assertEqual('file', child.inv_kind)
- self.assertIs(root_item, child.parent)
+ self.assertEqual('root-id', child.parent_id)
child = root_item.children[1]
self.assertEqual('unversioned-file', child.path)
self.assertEqual('unversioned-file', child.name)
self.assertEqual('file', child.disk_kind)
self.assertEqual(None, child.file_id)
self.assertEqual(None, child.inv_kind)
- self.assertIs(root_item, child.parent)
+ self.assertEqual('root-id', child.parent_id)
+
+ def test_with_subdirs(self):
+ wt = self.make_branch_and_tree('.')
+ self.build_tree(['dir/', 'dir/subdir/',
+ 'dir/subdir/a_file'])
+ wt.set_root_id('root-id')
+ wt.add(['dir', 'dir/subdir', 'dir/subdir/a_file'],
+ ['dir-id', 'subdir-id', 'file-id'])
+ root_item = wt_model._WTItem.create_from_wt(wt)
+ self.assertIsInstance(root_item, wt_model._WTItem)
+ self.assertEqual('root-id', root_item.file_id)
+ self.assertIs(None, root_item.parent_id)
+ self.assertEqual(1, len(root_item.children))
+ child = root_item.children[0]
+ self.assertEqual('dir', child.path)
+ self.assertEqual('dir', child.name)
+ self.assertEqual('directory', child.disk_kind)
+ self.assertEqual('dir-id', child.file_id)
+ self.assertEqual('directory', child.inv_kind)
+ self.assertEqual('root-id', child.parent_id)
+ self.assertEqual(1, len(child.children))
+ child = child.children[0]
+ self.assertEqual('dir/subdir', child.path)
+ self.assertEqual('subdir', child.name)
+ self.assertEqual('directory', child.disk_kind)
+ self.assertEqual('subdir-id', child.file_id)
+ self.assertEqual('directory', child.inv_kind)
+ self.assertEqual('dir-id', child.parent_id)
+ self.assertEqual(1, len(child.children))
+ child = child.children[0]
+ self.assertEqual('dir/subdir/a_file', child.path)
+ self.assertEqual('a_file', child.name)
+ self.assertEqual('file', child.disk_kind)
+ self.assertEqual('file-id', child.file_id)
+ self.assertEqual('file', child.inv_kind)
+ self.assertEqual('subdir-id', child.parent_id)
More information about the bazaar-commits
mailing list