15a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden#!/usr/bin/python2
25a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden"""Switch part of the objects file in working set to (possible) bad ones.
35a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
45a9c4419a7625926712263b345f21ad6d204f130Cassidy BurdenThis script is meant to be specifically used with the set_file test. This uses
55a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenthe set files generated by binary_search_state to do the switching.
65a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden"""
75a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
85a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenfrom __future__ import print_function
95a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
105a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenimport os
115a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenimport sys
125a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
135a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenimport common
145a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
155a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
165a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdendef Main(_):
175a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  """Switch part of the objects file in working set to (possible) bad ones."""
185a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  working_set = common.ReadWorkingSet()
195a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  objects_file = common.ReadObjectsFile()
205a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
215a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  if not os.path.exists(os.environ['BISECT_BAD_SET']):
225a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden    print('Bad set file does not exist!')
235a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden    return 1
245a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
255a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  object_index = common.ReadObjectIndex(os.environ['BISECT_BAD_SET'])
265a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
275a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  for oi in object_index:
285a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden    working_set[int(oi)] = objects_file[oi]
295a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
305a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  common.WriteWorkingSet(working_set)
315a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
325a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  return 0
335a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
345a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden
355a9c4419a7625926712263b345f21ad6d204f130Cassidy Burdenif __name__ == '__main__':
365a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  retval = Main(sys.argv)
375a9c4419a7625926712263b345f21ad6d204f130Cassidy Burden  sys.exit(retval)
38