1
# Copyright (C) 2007-2010 Canonical Ltd
1
# Copyright (C) 2007, 2008 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
833
833
super(TestUpdateEntry, self).setUp()
834
self.overrideAttr(dirstate, 'update_entry', self.update_entry)
834
orig = dirstate.update_entry
836
dirstate.update_entry = orig
837
self.addCleanup(cleanup)
838
dirstate.update_entry = self.update_entry
836
840
def get_state_with_a(self):
837
841
"""Create a DirState tracking a single object named 'a'"""
1275
1279
def setUp(self):
1276
1280
super(TestProcessEntry, self).setUp()
1277
self.overrideAttr(dirstate, '_process_entry', self._process_entry)
1281
orig = dirstate._process_entry
1283
dirstate._process_entry = orig
1284
self.addCleanup(cleanup)
1285
dirstate._process_entry = self._process_entry
1279
1287
def assertChangedFileIds(self, expected, tree):
1280
1288
tree.lock_read()
1286
1294
self.assertEqual(sorted(expected), sorted(file_ids))
1288
def test_exceptions_raised(self):
1289
# This is a direct test of bug #495023, it relies on osutils.is_inside
1290
# getting called in an inner function. Which makes it a bit brittle,
1291
# but at least it does reproduce the bug.
1292
tree = self.make_branch_and_tree('tree')
1293
self.build_tree(['tree/file', 'tree/dir/', 'tree/dir/sub',
1294
'tree/dir2/', 'tree/dir2/sub2'])
1295
tree.add(['file', 'dir', 'dir/sub', 'dir2', 'dir2/sub2'])
1296
tree.commit('first commit')
1298
self.addCleanup(tree.unlock)
1299
basis_tree = tree.basis_tree()
1300
def is_inside_raises(*args, **kwargs):
1301
raise RuntimeError('stop this')
1302
self.overrideAttr(osutils, 'is_inside', is_inside_raises)
1303
self.assertListRaises(RuntimeError, tree.iter_changes, basis_tree)
1305
1296
def test_simple_changes(self):
1306
1297
tree = self.make_branch_and_tree('tree')
1307
1298
self.build_tree(['tree/file'])