[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
mihaip at chromium.org
mihaip at chromium.org
Wed Dec 22 13:45:36 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 76121c1e8e1fed288f5a281151bc2afd42c2c9d8
Author: mihaip at chromium.org <mihaip at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sat Sep 25 01:36:34 2010 +0000
2010-09-24 Mihai Parparita <mihaip at chromium.org>
Reviewed by Adam Barth.
Allow rebaselines for webkit-patch rebaseline to be chosen
https://bugs.webkit.org/show_bug.cgi?id=46407
Instead of always rebaselining all failing tests, allow a subset to be
chosen.
* Scripts/webkitpy/common/system/user.py:
* Scripts/webkitpy/tool/commands/rebaseline.py:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68317 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index cc49a77..4bb3194 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-24 Mihai Parparita <mihaip at chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Allow rebaselines for webkit-patch rebaseline to be chosen
+ https://bugs.webkit.org/show_bug.cgi?id=46407
+
+ Instead of always rebaselining all failing tests, allow a subset to be
+ chosen.
+
+ * Scripts/webkitpy/common/system/user.py:
+ * Scripts/webkitpy/tool/commands/rebaseline.py:
+
2010-09-24 Ryosuke Niwa <rniwa at webkit.org>
Reviewed by Tony Chang.
diff --git a/WebKitTools/Scripts/webkitpy/common/system/user.py b/WebKitTools/Scripts/webkitpy/common/system/user.py
index 9444c00..dffa027 100644
--- a/WebKitTools/Scripts/webkitpy/common/system/user.py
+++ b/WebKitTools/Scripts/webkitpy/common/system/user.py
@@ -28,6 +28,7 @@
import logging
import os
+import re
import shlex
import subprocess
import sys
@@ -61,14 +62,30 @@ class User(object):
return response
@classmethod
- def prompt_with_list(cls, list_title, list_items):
+ def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=raw_input):
print list_title
i = 0
for item in list_items:
i += 1
print "%2d. %s" % (i, item)
- result = int(cls.prompt("Enter a number: ")) - 1
- return list_items[result]
+
+ # Loop until we get valid input
+ while True:
+ if can_choose_multiple:
+ response = cls.prompt("Enter one or more numbers (comma-separated), or \"all\": ", raw_input=raw_input)
+ if not response.strip() or response == "all":
+ return list_items
+ try:
+ indices = [int(r) - 1 for r in re.split("\s*,\s*", response)]
+ except ValueError, err:
+ continue
+ return [list_items[i] for i in indices]
+ else:
+ try:
+ result = int(cls.prompt("Enter a number: ", raw_input=raw_input)) - 1
+ except ValueError, err:
+ continue
+ return list_items[result]
def edit(self, files):
editor = os.environ.get("EDITOR") or "vi"
diff --git a/WebKitTools/Scripts/webkitpy/common/system/user_unittest.py b/WebKitTools/Scripts/webkitpy/common/system/user_unittest.py
index dadead3..a496421 100644
--- a/WebKitTools/Scripts/webkitpy/common/system/user_unittest.py
+++ b/WebKitTools/Scripts/webkitpy/common/system/user_unittest.py
@@ -50,5 +50,22 @@ class UserTest(unittest.TestCase):
return None
self.assertEqual(User.prompt("input", repeat=self.repeatsRemaining, raw_input=mock_raw_input), None)
+ def test_prompt_with_list(self):
+ def run_prompt_test(options, inputs, expected_result, can_choose_multiple=False):
+ def mock_raw_input(message):
+ return inputs.pop(0)
+ self.assertEqual(User.prompt_with_list("title", options, can_choose_multiple=can_choose_multiple, raw_input=mock_raw_input), expected_result)
+ self.assertEqual(len(inputs), 0)
+
+ run_prompt_test(["foo", "bar"], ["1"], "foo")
+ run_prompt_test(["foo", "bar"], ["badinput", "2"], "bar")
+
+ run_prompt_test(["foo", "bar"], ["1,2"], ["foo", "bar"], can_choose_multiple=True)
+ run_prompt_test(["foo", "bar"], [" 1, 2 "], ["foo", "bar"], can_choose_multiple=True)
+ run_prompt_test(["foo", "bar"], ["all"], ["foo", "bar"], can_choose_multiple=True)
+ run_prompt_test(["foo", "bar"], [""], ["foo", "bar"], can_choose_multiple=True)
+ run_prompt_test(["foo", "bar"], [" "], ["foo", "bar"], can_choose_multiple=True)
+ run_prompt_test(["foo", "bar"], ["badinput", "all"], ["foo", "bar"], can_choose_multiple=True)
+
if __name__ == '__main__':
unittest.main()
diff --git a/WebKitTools/Scripts/webkitpy/tool/commands/rebaseline.py b/WebKitTools/Scripts/webkitpy/tool/commands/rebaseline.py
index d6e4840..abfa850 100644
--- a/WebKitTools/Scripts/webkitpy/tool/commands/rebaseline.py
+++ b/WebKitTools/Scripts/webkitpy/tool/commands/rebaseline.py
@@ -90,7 +90,8 @@ class Rebaseline(AbstractDeclarativeCommand):
parsed_results = build.layout_test_results().parsed_results()
# FIXME: This probably belongs as API on LayoutTestResults
# but .failing_tests() already means something else.
- return parsed_results[LayoutTestResults.fail_key]
+ failing_tests = parsed_results[LayoutTestResults.fail_key]
+ return self._tool.user.prompt_with_list("Which test(s) to rebaseline:", failing_tests, can_choose_multiple=True)
def _results_url_for_test(self, build, test):
test_base = os.path.splitext(test)[0]
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list