diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 22:42:09 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 22:42:09 +0000 |
commit | eadd95d47addbce28bf40fefab14457483284131 (patch) | |
tree | 51cb899952ca4500adc70a2f1889f7f2c8d65859 /tools/bisect_test.py | |
parent | d50dc7ca5f309488e6b7e9125a3b24a16627d0b0 (diff) | |
download | chromium_src-eadd95d47addbce28bf40fefab14457483284131.zip chromium_src-eadd95d47addbce28bf40fefab14457483284131.tar.gz chromium_src-eadd95d47addbce28bf40fefab14457483284131.tar.bz2 |
Make tools/bisect_builds.py handle reversed bad/good revision ranges
BUG=none
Review URL: https://codereview.chromium.org/11266025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165781 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/bisect_test.py')
-rw-r--r-- | tools/bisect_test.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/bisect_test.py b/tools/bisect_test.py new file mode 100644 index 0000000..b970f84 --- /dev/null +++ b/tools/bisect_test.py @@ -0,0 +1,53 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +bisect_builds = __import__('bisect-builds') + + +class BisectTest(unittest.TestCase): + + patched = [] + max_rev = 10000 + + def monkey_patch(self, obj, name, new): + self.patched.append((obj, name, getattr(obj, name))) + setattr(obj, name, new) + + def clear_patching(self): + for obj, name, old in self.patched: + setattr(obj, name, old) + self.patched = [] + + def setUp(self): + self.monkey_patch(bisect_builds.DownloadJob, 'Start', lambda *args: None) + self.monkey_patch(bisect_builds.DownloadJob, 'Stop', lambda *args: None) + self.monkey_patch(bisect_builds.DownloadJob, 'WaitFor', lambda *args: None) + self.monkey_patch(bisect_builds, 'RunRevision', lambda *args: (0, "", "")) + self.monkey_patch(bisect_builds.PathContext, 'ParseDirectoryIndex', + lambda *args: range(self.max_rev)) + + def tearDown(self): + self.clear_patching() + + def bisect(self, good_rev, bad_rev, evaluate): + return bisect_builds.Bisect(good_rev=good_rev, + bad_rev=bad_rev, + evaluate=evaluate, + num_runs=1, + official_builds=False, + platform='linux', + profile=None, + try_args=()) + + def testBisectConsistentAnswer(self): + self.assertEqual(self.bisect(1000, 100, lambda *args: 'g'), (100, 101)) + self.assertEqual(self.bisect(100, 1000, lambda *args: 'b'), (100, 101)) + self.assertEqual(self.bisect(2000, 200, lambda *args: 'b'), (1999, 2000)) + self.assertEqual(self.bisect(200, 2000, lambda *args: 'g'), (1999, 2000)) + + +if __name__ == '__main__': + unittest.main() |