[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