aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool/test/switch_to_good_noinc_prune.py
diff options
context:
space:
mode:
authorCassidy Burden <cburden@google.com>2016-07-22 10:08:50 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-07-26 10:55:14 -0700
commit8f7e4bc040879b7a2eb22033f2c83d99cedbe6f4 (patch)
treefcbdee7ea9a972b2b7dc9444ae7573be03545517 /binary_search_tool/test/switch_to_good_noinc_prune.py
parent5a9c4419a7625926712263b345f21ad6d204f130 (diff)
downloadtoolchain-utils-8f7e4bc040879b7a2eb22033f2c83d99cedbe6f4.tar.gz
binary search tool: Fix edge case with noincremental and prune
Fix edge case where not all items were sent to switch_to_good script when noincremental and prune were both set. Pruning progressively narrows down the total number of items being searched across because some items can be assumed good. This fix ensures that these "known good" items are also sent to the switch script if noincremental is set. TEST=Add unit test for this case, run other tests Change-Id: I1145f6eea224f06ceb2352ec77e17e849d489606 Reviewed-on: https://chrome-internal-review.googlesource.com/270718 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
Diffstat (limited to 'binary_search_tool/test/switch_to_good_noinc_prune.py')
-rwxr-xr-xbinary_search_tool/test/switch_to_good_noinc_prune.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/binary_search_tool/test/switch_to_good_noinc_prune.py b/binary_search_tool/test/switch_to_good_noinc_prune.py
new file mode 100755
index 00000000..c5e78e45
--- /dev/null
+++ b/binary_search_tool/test/switch_to_good_noinc_prune.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python2
+"""Change portions of the object files to good.
+
+The "portion" is defined by the file (which is passed as the only argument to
+this script) content. Every line in the file is an object index, which will be
+set to good (mark as 0).
+
+This switch script is made for the noincremental-prune test. This makes sure
+that, after pruning starts (>1 bad item is found), that the number of args sent
+to the switch scripts is equals to the actual number of items (i.e. checking
+that noincremental always holds).
+
+Warning: This switch script assumes the --file_args option
+"""
+
+from __future__ import print_function
+
+import shutil
+import sys
+
+import common
+
+
+def Main(argv):
+ working_set = common.ReadWorkingSet()
+ object_index = common.ReadObjectIndex(argv[1])
+
+ for oi in object_index:
+ working_set[int(oi)] = 0
+
+ shutil.copy(argv[1], './noinc_prune_good')
+
+ common.WriteWorkingSet(working_set)
+
+ return 0
+
+
+if __name__ == '__main__':
+ retval = Main(sys.argv)
+ sys.exit(retval)