[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:56:53 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 9d803e15c6c2279173cc1518bb917bc029eb6a0d
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Nov 25 15:46:04 2009 +0000

    2009-11-25  Eric Seidel  <eric at webkit.org>
    
            Reviewed by Adam Barth.
    
            Abstract out capturing stdout/stderr into a new OutputCapture class for re-use among the various unit tests.
            https://bugs.webkit.org/show_bug.cgi?id=31870
    
            * Scripts/modules/commands/queries_unittest.py: Use the new class.
            * Scripts/modules/multicommandtool_unittest.py: Ditto.
            * Scripts/modules/outputcapture.py: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51381 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index f71d8f7..31c4fbc 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,14 @@
+2009-11-25  Eric Seidel  <eric at webkit.org>
+
+        Reviewed by Adam Barth.
+
+        Abstract out capturing stdout/stderr into a new OutputCapture class for re-use among the various unit tests.
+        https://bugs.webkit.org/show_bug.cgi?id=31870
+
+        * Scripts/modules/commands/queries_unittest.py: Use the new class.
+        * Scripts/modules/multicommandtool_unittest.py: Ditto.
+        * Scripts/modules/outputcapture.py: Added.
+
 2009-11-24  Dmitry Titov  <dimich at chromium.org>
 
         Reviewed by Eric Seidel.
diff --git a/WebKitTools/Scripts/modules/commands/queries_unittest.py b/WebKitTools/Scripts/modules/commands/queries_unittest.py
index 6bae722..d081c52 100644
--- a/WebKitTools/Scripts/modules/commands/queries_unittest.py
+++ b/WebKitTools/Scripts/modules/commands/queries_unittest.py
@@ -27,33 +27,17 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import unittest
-from StringIO import StringIO
 
 from modules.commands.queries import *
 from modules.mock_bugzillatool import *
+from modules.outputcapture import OutputCapture
 
 class QueryCommandsTest(unittest.TestCase):
-    def _capture_output_with_name(output_name):
-        self.saved_outputs[output_name] = getattr(sys, output_name)
-        setattr(sys, output_name, StringIO.StringIO())
-
-    def _release_output_with_name(output_name):
-        captured_output = getattr(sys, output_name).getvalue()
-        setattr(sys, output_name, self.saved_outputs[output_name])
-        del self.saved_outputs[output_name]
-        return captured_output
-
-    def _capture_output(self):
-        self._capture_output_with_name("stdout")
-        self._capture_output_with_name("stderr")
-
-    def _restore_output(self):
-        return (self._release_output_with_name("stdout"), self._release_output_with_name("stderr"))
-
     def _assert_execute_outputs(self, command, command_args, expected_stdout, expected_stderr = ""):
-        self._capture_output()
+        capture = OutputCapture()
+        capture.capture_output()
         command.execute(None, command_args, MockBugzillaTool())
-        (stdout_string, stderr_string) = self._restore_output()
+        (stdout_string, stderr_string) = capture.restore_output()
         self.assertEqual(stdout_string, expected_stdout)
         self.assertEqual(expected_stderr, expected_stderr)
 
diff --git a/WebKitTools/Scripts/modules/multicommandtool_unittest.py b/WebKitTools/Scripts/modules/multicommandtool_unittest.py
index dbae909..a7d59ec 100644
--- a/WebKitTools/Scripts/modules/multicommandtool_unittest.py
+++ b/WebKitTools/Scripts/modules/multicommandtool_unittest.py
@@ -29,7 +29,7 @@
 import sys
 import unittest
 from multicommandtool import MultiCommandTool, Command
-from StringIO import StringIO
+from modules.outputcapture import OutputCapture
 
 from optparse import make_option
 
@@ -66,16 +66,6 @@ class TrivialTool(MultiCommandTool):
 
 
 class MultiCommandToolTest(unittest.TestCase):
-    def _capture_stderr(self):
-        self.saved_stderr = sys.stderr
-        sys.stderr = StringIO()
-
-    def _release_stderr(self):
-        string = sys.stderr.getvalue()
-        sys.stderr = self.saved_stderr
-        self.saved_stderr = None
-        return string
-
     def _assert_split(self, args, expected_split):
         self.assertEqual(MultiCommandTool._split_args(args), expected_split)
 
@@ -103,12 +93,14 @@ class MultiCommandToolTest(unittest.TestCase):
         command_with_options = TrivialCommand(options=[make_option("--my_option")])
         tool = TrivialTool(commands=[command_with_options])
 
-        self._capture_stderr()
+        capture = OutputCapture()
+        capture.capture_output()
         exit_code = tool.main(["tool", "help", "trivial"])
-        help_text = self._release_stderr()
-        expected_subcommand_help = "  trivial [options]   help text\nOptions:\n  --my_option=MY_OPTION\n\n"
+        (stdout_string, stderr_string) = capture.restore_output()
+        expected_subcommand_help = "trivial [options]   help text\nOptions:\n  --my_option=MY_OPTION\n\n"
         self.assertEqual(exit_code, 0)
-        self.assertEqual(help_text, expected_subcommand_help)
+        self.assertEqual(stdout_string, "")
+        self.assertEqual(stderr_string, expected_subcommand_help)
 
 
 if __name__ == "__main__":
diff --git a/WebKitTools/Scripts/modules/outputcapture.py b/WebKitTools/Scripts/modules/outputcapture.py
new file mode 100644
index 0000000..f02fc5d
--- /dev/null
+++ b/WebKitTools/Scripts/modules/outputcapture.py
@@ -0,0 +1,53 @@
+# Copyright (c) 2009, Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Class for unittest support.  Used for capturing stderr/stdout.
+
+import sys
+from StringIO import StringIO
+
+class OutputCapture(object):
+    def __init__(self):
+        self.saved_outputs = dict()
+
+    def _capture_output_with_name(self, output_name):
+        self.saved_outputs[output_name] = getattr(sys, output_name)
+        setattr(sys, output_name, StringIO())
+
+    def _restore_output_with_name(self, output_name):
+        captured_output = getattr(sys, output_name).getvalue()
+        setattr(sys, output_name, self.saved_outputs[output_name])
+        del self.saved_outputs[output_name]
+        return captured_output
+
+    def capture_output(self):
+        self._capture_output_with_name("stdout")
+        self._capture_output_with_name("stderr")
+
+    def restore_output(self):
+        return (self._restore_output_with_name("stdout"), self._restore_output_with_name("stderr"))

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list