1029
1029
search.start_searching(starts)
1030
1030
if stops is not None:
1031
1031
search.stop_searching_any(stops)
1032
result = search.get_result()
1033
self.assertEqual(recipe, result.get_recipe())
1034
self.assertEqual(set(included_keys), result.get_keys())
1032
state = search.get_state()
1033
self.assertEqual(set(included_keys), state[2])
1035
1034
self.assertEqual(seen, search.seen)
1037
1036
def test_breadth_first_get_result_excludes_current_pending(self):
1043
1042
search = graph._make_breadth_first_searcher(['head'])
1044
1043
# At the start, nothing has been seen, to its all excluded:
1045
result = search.get_result()
1046
self.assertEqual(('search', set(['head']), set(['head']), 0),
1047
result.get_recipe())
1048
self.assertEqual(set(), result.get_keys())
1044
state = search.get_state()
1045
self.assertEqual((set(['head']), set(['head']), set()),
1049
1047
self.assertEqual(set(), search.seen)
1074
1072
# Starting with nothing and adding a search works:
1075
1073
search.start_searching(['head'])
1076
1074
# head has been seen:
1077
result = search.get_result()
1078
self.assertEqual(('search', set(['head']), set(['child']), 1),
1079
result.get_recipe())
1080
self.assertEqual(set(['head']), result.get_keys())
1075
state = search.get_state()
1076
self.assertEqual((set(['head']), set(['child']), set(['head'])),
1081
1078
self.assertEqual(set(['head']), search.seen)
1234
1231
self.assertSeenAndResult(expected, search, search.next)
1235
1232
self.assertRaises(StopIteration, search.next)
1236
1233
self.assertEqual(set(['head', 'ghost', NULL_REVISION]), search.seen)
1237
result = search.get_result()
1238
self.assertEqual(('search', set(['ghost', 'head']), set(['ghost']), 2),
1239
result.get_recipe())
1240
self.assertEqual(set(['head', NULL_REVISION]), result.get_keys())
1234
state = search.get_state()
1236
(set(['ghost', 'head']), set(['ghost']),
1237
set(['head', NULL_REVISION])),
1241
1239
# using next_with_ghosts:
1242
1240
search = graph._make_breadth_first_searcher(['head'])
1243
1241
self.assertSeenAndResult(expected, search, search.next_with_ghosts)
1244
1242
self.assertRaises(StopIteration, search.next)
1245
1243
self.assertEqual(set(['head', 'ghost', NULL_REVISION]), search.seen)
1246
result = search.get_result()
1247
self.assertEqual(('search', set(['ghost', 'head']), set(['ghost']), 2),
1248
result.get_recipe())
1249
self.assertEqual(set(['head', NULL_REVISION]), result.get_keys())
1244
state = search.get_state()
1246
(set(['ghost', 'head']), set(['ghost']),
1247
set(['head', NULL_REVISION])),
1252
1251
class TestFindUniqueAncestors(TestGraphBase):