Title: [104482] trunk/Tools
Revision
104482
Author
[email protected]
Date
2012-01-09 13:10:47 -0800 (Mon, 09 Jan 2012)

Log Message

webkitpy: revamp version checking
https://bugs.webkit.org/show_bug.cgi?id=75765

Reviewed by Adam Barth.

The version-checking code in webkitpy/python24/versioning seems really
awkward and overdesigned, especially since we don't support python 2.4
any more.

In addition, I am tired of getting warnings about Python 2.6 being "a
newer release than what is supported" :).

I'm taking a page from the depot_tools python code and just creating a
new webkitpy.common.version_check module that will print a message on
stderr and call sys.exit() if we're running an unsupported version.

* Scripts/check-webkit-style:
* Scripts/new-run-webkit-httpd:
* Scripts/new-run-webkit-tests:
* Scripts/rebaseline-chromium-webkit-tests:
* Scripts/test-webkitpy:
(configure_logging):
(init):
* Scripts/webkit-patch:
(main):
* Scripts/webkitpy/common/system/executive.py:
(Executive._child_process_encoding):
(Executive._should_encode_child_process_arguments):
* Scripts/webkitpy/common/version_check.py: Copied from Tools/Scripts/rebaseline-chromium-webkit-tests.
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
* Scripts/webkitpy/python24/__init__.py: Removed.
* Scripts/webkitpy/python24/versioning.py: Removed.
* Scripts/webkitpy/python24/versioning_unittest.py: Removed.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Tools/ChangeLog (104481 => 104482)


--- trunk/Tools/ChangeLog	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/ChangeLog	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,3 +1,39 @@
+2012-01-06  Dirk Pranke  <[email protected]>
+
+        webkitpy: revamp version checking
+        https://bugs.webkit.org/show_bug.cgi?id=75765
+
+        Reviewed by Adam Barth.
+
+        The version-checking code in webkitpy/python24/versioning seems really
+        awkward and overdesigned, especially since we don't support python 2.4
+        any more.
+
+        In addition, I am tired of getting warnings about Python 2.6 being "a
+        newer release than what is supported" :).
+
+        I'm taking a page from the depot_tools python code and just creating a
+        new webkitpy.common.version_check module that will print a message on
+        stderr and call sys.exit() if we're running an unsupported version.
+
+        * Scripts/check-webkit-style:
+        * Scripts/new-run-webkit-httpd:
+        * Scripts/new-run-webkit-tests:
+        * Scripts/rebaseline-chromium-webkit-tests:
+        * Scripts/test-webkitpy:
+        (configure_logging):
+        (init):
+        * Scripts/webkit-patch:
+        (main):
+        * Scripts/webkitpy/common/system/executive.py:
+        (Executive._child_process_encoding):
+        (Executive._should_encode_child_process_arguments):
+        * Scripts/webkitpy/common/version_check.py: Copied from Tools/Scripts/rebaseline-chromium-webkit-tests.
+        * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
+        * Scripts/webkitpy/python24/__init__.py: Removed.
+        * Scripts/webkitpy/python24/versioning.py: Removed.
+        * Scripts/webkitpy/python24/versioning_unittest.py: Removed.
+
 2012-01-09  Adam Barth  <[email protected]>
 
         Remove Chromium Mac CG from the flakiness dashboard

Modified: trunk/Tools/Scripts/check-webkit-style (104481 => 104482)


--- trunk/Tools/Scripts/check-webkit-style	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/check-webkit-style	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright (C) 2009 Google Inc. All rights reserved.
+# Copyright (C) 2011 Google Inc. All rights reserved.
 # Copyright (C) 2010 Chris Jerdonek ([email protected])
 #
 # Redistribution and use in source and binary forms, with or without
@@ -39,6 +39,8 @@
 
 import sys
 
+import webkitpy.common.version_check
+
 from webkitpy.style.main import CheckWebKitStyle
 
 

Modified: trunk/Tools/Scripts/new-run-webkit-httpd (104481 => 104482)


--- trunk/Tools/Scripts/new-run-webkit-httpd	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/new-run-webkit-httpd	2012-01-09 21:10:47 UTC (rev 104482)
@@ -42,6 +42,8 @@
 import sys
 import tempfile
 
+import webkitpy.common.version_check
+
 from webkitpy.common.host import Host
 from webkitpy.layout_tests.servers import http_server
 

Modified: trunk/Tools/Scripts/new-run-webkit-tests (104481 => 104482)


--- trunk/Tools/Scripts/new-run-webkit-tests	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/new-run-webkit-tests	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (C) 2010 Google Inc. All rights reserved.
+# Copyright (C) 2011 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
@@ -33,6 +33,8 @@
 import subprocess
 import sys
 
+import webkitpy.common.version_check
+
 if __name__ == '__main__':
     # In order for the multiprocessing module to spawn children correctly on
     # Windows, we need to be running a Python module that can be imported

Modified: trunk/Tools/Scripts/rebaseline-chromium-webkit-tests (104481 => 104482)


--- trunk/Tools/Scripts/rebaseline-chromium-webkit-tests	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/rebaseline-chromium-webkit-tests	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (C) 2010 Google Inc. All rights reserved.
+# Copyright (C) 2011 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
@@ -29,6 +29,8 @@
 
 import sys
 
+import webkitpy.common.version_check
+
 import webkitpy.to_be_moved.rebaseline_chromium_webkit_tests
 
 

Modified: trunk/Tools/Scripts/test-webkitpy (104481 => 104482)


--- trunk/Tools/Scripts/test-webkitpy	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/test-webkitpy	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
-# Copyright (c) 2009 Google Inc. All rights reserved.
+# Copyright (c) 2011 Google Inc. All rights reserved.
 # Copyright (C) 2010 Chris Jerdonek ([email protected])
 #
 # 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
@@ -15,7 +15,7 @@
 #     * 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
@@ -32,14 +32,10 @@
 import os
 import sys
 
-# Do not import anything from webkitpy prior to cleaning webkitpy of
-# orphaned *.pyc files.  This ensures that no orphaned *.pyc files are
-# accidentally imported during the course of this script.
-#
-# Also, do not import or execute any Python code incompatible with
-# Python 2.4 until after execution of the init() method below.
+# We strictly limit what is imported from webkitpy until we get a chance
+# to delete any stray *.pyc files.
+import webkitpy.common.version_check
 
-
 _log = logging.getLogger("test-webkitpy")
 
 
@@ -61,8 +57,6 @@
                           logging.DEBUG.  Otherwise, it is set to logging.INFO.
 
     """
-    # Don't use the Python ternary operator here so that this method will
-    # work with Python 2.4.
     if is_verbose_logging:
         logging_level = logging.DEBUG
     else:
@@ -194,10 +188,10 @@
     # after any file moves.  Otherwise, incorrect import statements can
     # be masked.
     #
-    # For example, if webkitpy/python24/versioning.py were moved to a
+    # For example, if webkitpy/common/host.py were moved to a
     # different location without changing any import statements, and if
     # the corresponding .pyc file were left behind without deleting it,
-    # then "import webkitpy.python24.versioning" would continue to succeed
+    # then "import webkitpy.common.host" would continue to succeed
     # even though it would fail for someone checking out a fresh copy
     # of the source tree.  This is because of a Python feature:
     #
@@ -212,20 +206,7 @@
     # cause an ImportError to occur on import as desired.
     _clean_packages_with_test(external_package_paths)
 
-    import webkitpy.python24.versioning as versioning
 
-    versioning.check_version(log=_log)
-
-    (comparison, current_version, expected_version) = \
-        versioning.compare_version()
-
-    if comparison != 0:
-        # Then the current version is not what we expect.
-        message = ("You are testing webkitpy with Python version (%s) "
-                   "instead of version (%s) which we support.  Please verify "
-                   "changes against version (%s)" % (current_version, expected_version, expected_version))
-        _log.warn(message)
-
 def _path_from_webkit_root(*components):
     webkit_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
     return os.path.join(webkit_root, *components)

Modified: trunk/Tools/Scripts/webkit-patch (104481 => 104482)


--- trunk/Tools/Scripts/webkit-patch	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkit-patch	2012-01-09 21:10:47 UTC (rev 104482)
@@ -7,7 +7,7 @@
 # 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
@@ -17,7 +17,7 @@
 #     * 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
@@ -38,14 +38,17 @@
 import sys
 import codecs
 
+import webkitpy.common.version_check
+
+from webkitpy.common.system.logutils import configure_logging
+from webkitpy.tool.main import WebKitPatch
+
 # By default, sys.stdout assumes ascii encoding.  Since our messages can
 # contain unicode strings (as with some peoples' names) we need to apply
 # the utf-8 codec to prevent throwing and exception.
 # Not having this was the cause of https://bugs.webkit.org/show_bug.cgi?id=63452.
 sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout)
 
-from webkitpy.common.system.logutils import configure_logging
-import webkitpy.python24.versioning as versioning
 
 _log = logging.getLogger("webkit-patch")
 
@@ -58,14 +61,6 @@
     else:
         logging_level = logging.INFO
     configure_logging(logging_level=logging_level)
-
-    versioning.check_version()
-
-    # Import webkit-patch code only after version-checking so that
-    # script doesn't error out before having a chance to report the
-    # version warning.
-    from webkitpy.tool.main import WebKitPatch
-
     WebKitPatch(os.path.abspath(__file__)).main()
 
 

Modified: trunk/Tools/Scripts/webkitpy/common/system/executive.py (104481 => 104482)


--- trunk/Tools/Scripts/webkitpy/common/system/executive.py	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkitpy/common/system/executive.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -46,7 +46,6 @@
 
 from webkitpy.common.system.deprecated_logging import tee
 from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.python24 import versioning
 
 
 _log = logging.getLogger(__name__)
@@ -445,7 +444,7 @@
         # Win32 Python 2.x uses CreateProcessA rather than CreateProcessW
         # to launch subprocesses, so we have to encode arguments using the
         # current code page.
-        if sys.platform == 'win32' and versioning.compare_version(sys, '3.0')[0] < 0:
+        if sys.platform == 'win32' and sys.version < '3':
             return 'mbcs'
         # All other platforms use UTF-8.
         # FIXME: Using UTF-8 on Cygwin will confuse Windows-native commands
@@ -462,7 +461,7 @@
         # Win32 Python 2.x uses CreateProcessA rather than CreateProcessW
         # to launch subprocesses, so we have to encode arguments using the
         # current code page.
-        if sys.platform == 'win32' and versioning.compare_version(sys, '3.0')[0] < 0:
+        if sys.platform == 'win32' and sys.version < '3':
             return True
 
         return False

Copied: trunk/Tools/Scripts/webkitpy/common/version_check.py (from rev 104480, trunk/Tools/Scripts/rebaseline-chromium-webkit-tests) (0 => 104482)


--- trunk/Tools/Scripts/webkitpy/common/version_check.py	                        (rev 0)
+++ trunk/Tools/Scripts/webkitpy/common/version_check.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+# Copyright (c) 2011 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.
+
+import sys
+
+if sys.version < '2.5' or sys.version >= '2.8':
+    print >> sys.stderr, "Unsupported Python version: WebKit only supports 2.5.x - 2.7.x, and you're running %s." % sys.version.split()[0]
+    sys.exit(1)

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py (104481 => 104482)


--- trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -70,7 +70,6 @@
 from webkitpy.layout_tests import run_webkit_tests
 from webkitpy.layout_tests.port import Port
 from webkitpy.layout_tests.port.test import TestPort, TestDriver
-from webkitpy.python24.versioning import compare_version
 from webkitpy.test.skip import skip_if
 
 
@@ -760,7 +759,7 @@
         self.assertTrue(MainTest.has_test_of_type(batch_tests_run_http, 'http'))
         self.assertTrue(MainTest.has_test_of_type(batch_tests_run_http, 'websocket'))
 
-MainTest = skip_if(MainTest, sys.platform == 'cygwin' and compare_version(sys, '2.6')[0] < 0, 'new-run-webkit-tests tests hang on Cygwin Python 2.5.2')
+MainTest = skip_if(MainTest, sys.platform == 'cygwin' and sys.version < '2.6', 'new-run-webkit-tests tests hang on Cygwin Python 2.5.2')
 
 
 class EndToEndTest(unittest.TestCase):

Deleted: trunk/Tools/Scripts/webkitpy/python24/__init__.py (104481 => 104482)


--- trunk/Tools/Scripts/webkitpy/python24/__init__.py	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkitpy/python24/__init__.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files

Deleted: trunk/Tools/Scripts/webkitpy/python24/versioning.py (104481 => 104482)


--- trunk/Tools/Scripts/webkitpy/python24/versioning.py	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkitpy/python24/versioning.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,135 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek ([email protected])
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-# 2.  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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
-
-"""Supports Python version checking."""
-
-import logging
-import sys
-
-
-_log = logging.getLogger(__name__)
-
-
-# The minimum Python version the webkitpy package supports.
-_MINIMUM_SUPPORTED_PYTHON_VERSION = "2.5"
-
-
-def compare_version(sysmodule=None, target_version=None):
-    """Compare the current Python version with a target version.
-
-    Args:
-      sysmodule: An object with version and version_info data attributes
-                 used to detect the current Python version.  The attributes
-                 should have the same semantics as sys.version and
-                 sys.version_info.  This parameter should only be used
-                 for unit testing.  Defaults to sys.
-      target_version: A string representing the Python version to compare
-                      the current version against.  The string should have
-                      one of the following three forms: 2, 2.5, or 2.5.3.
-                      Defaults to the minimum version that the webkitpy
-                      package supports.
-
-    Returns:
-      A triple of (comparison, current_version, target_version).
-
-      comparison: An integer representing the result of comparing the
-                  current version with the target version.  A positive
-                  number means the current version is greater than the
-                  target, 0 means they are the same, and a negative number
-                  means the current version is less than the target.
-                      This method compares version information only up
-                  to the precision of the given target version.  For
-                  example, if the target version is 2.6 and the current
-                  version is 2.5.3, this method uses 2.5 for the purposes
-                  of comparing with the target.
-      current_version: A string representing the current Python version, for
-                       example 2.5.3.
-      target_version: A string representing the version that the current
-                      version was compared against, for example 2.5.
-
-    """
-    if sysmodule is None:
-        sysmodule = sys
-    if target_version is None:
-        target_version = _MINIMUM_SUPPORTED_PYTHON_VERSION
-
-    # The number of version parts to compare.
-    precision = len(target_version.split("."))
-
-    # We use sys.version_info rather than sys.version since its first
-    # three elements are guaranteed to be integers.
-    current_version_info_to_compare = sysmodule.version_info[:precision]
-    # Convert integers to strings.
-    current_version_info_to_compare = map(str, current_version_info_to_compare)
-    current_version_to_compare = ".".join(current_version_info_to_compare)
-
-    # Compare version strings lexicographically.
-    if current_version_to_compare > target_version:
-        comparison = 1
-    elif current_version_to_compare == target_version:
-        comparison = 0
-    else:
-        comparison = -1
-
-    # The version number portion of the current version string, for
-    # example "2.6.4".
-    current_version = sysmodule.version.split()[0]
-
-    return (comparison, current_version, target_version)
-
-
-# FIXME: Add a logging level parameter to allow the version message
-#        to be logged at levels other than WARNING, for example CRITICAL.
-def check_version(log=None, sysmodule=None, target_version=None):
-    """Check the current Python version against a target version.
-
-    Logs a warning message if the current version is less than the
-    target version.
-
-    Args:
-      log: A logging.logger instance to use when logging the version warning.
-           Defaults to the logger of this module.
-      sysmodule: See the compare_version() docstring.
-      target_version: See the compare_version() docstring.
-
-    Returns:
-      A boolean value of whether the current version is greater than
-      or equal to the target version.
-
-    """
-    if log is None:
-        log = _log
-
-    (comparison, current_version, target_version) = \
-        compare_version(sysmodule, target_version)
-
-    if comparison >= 0:
-        # Then the current version is at least the minimum version.
-        return True
-
-    message = ("WebKit Python scripts do not support your current Python "
-               "version (%s).  The minimum supported version is %s.\n"
-               "  See the following page to upgrade your Python version:\n\n"
-               "    http://trac.webkit.org/wiki/PythonGuidelines\n"
-               % (current_version, target_version))
-    log.warn(message)
-    return False

Deleted: trunk/Tools/Scripts/webkitpy/python24/versioning_unittest.py (104481 => 104482)


--- trunk/Tools/Scripts/webkitpy/python24/versioning_unittest.py	2012-01-09 21:08:32 UTC (rev 104481)
+++ trunk/Tools/Scripts/webkitpy/python24/versioning_unittest.py	2012-01-09 21:10:47 UTC (rev 104482)
@@ -1,134 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek ([email protected])
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-# 2.  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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
-
-"""Contains unit tests for versioning.py."""
-
-import logging
-import unittest
-
-from webkitpy.common.system.logtesting import LogTesting
-from webkitpy.python24.versioning import check_version
-from webkitpy.python24.versioning import compare_version
-
-class MockSys(object):
-
-    """A mock sys module for passing to version-checking methods."""
-
-    def __init__(self, current_version):
-        """Create an instance.
-
-        current_version: A version string with major, minor, and micro
-                         version parts.
-
-        """
-        version_info = current_version.split(".")
-        version_info = map(int, version_info)
-
-        self.version = current_version + " Version details."
-        self.version_info = version_info
-
-
-class CompareVersionTest(unittest.TestCase):
-
-    """Tests compare_version()."""
-
-    def _mock_sys(self, current_version):
-        return MockSys(current_version)
-
-    def test_default_minimum_version(self):
-        """Test the configured minimum version that webkitpy supports."""
-        (comparison, current_version, min_version) = compare_version()
-        self.assertEquals(min_version, "2.5")
-
-    def compare_version(self, target_version, current_version=None):
-        """Call compare_version()."""
-        if current_version is None:
-            current_version = "2.5.3"
-        mock_sys = self._mock_sys(current_version)
-        return compare_version(mock_sys, target_version)
-
-    def compare(self, target_version, current_version=None):
-        """Call compare_version(), and return the comparison."""
-        return self.compare_version(target_version, current_version)[0]
-
-    def test_returned_current_version(self):
-        """Test the current_version return value."""
-        current_version = self.compare_version("2.5")[1]
-        self.assertEquals(current_version, "2.5.3")
-
-    def test_returned_target_version(self):
-        """Test the current_version return value."""
-        target_version = self.compare_version("2.5")[2]
-        self.assertEquals(target_version, "2.5")
-
-    def test_target_version_major(self):
-        """Test major version for target."""
-        self.assertEquals(-1, self.compare("3"))
-        self.assertEquals(0, self.compare("2"))
-        self.assertEquals(1, self.compare("2", "3.0.0"))
-
-    def test_target_version_minor(self):
-        """Test minor version for target."""
-        self.assertEquals(-1, self.compare("2.6"))
-        self.assertEquals(0, self.compare("2.5"))
-        self.assertEquals(1, self.compare("2.4"))
-
-    def test_target_version_micro(self):
-        """Test minor version for target."""
-        self.assertEquals(-1, self.compare("2.5.4"))
-        self.assertEquals(0, self.compare("2.5.3"))
-        self.assertEquals(1, self.compare("2.5.2"))
-
-
-class CheckVersionTest(unittest.TestCase):
-
-    """Tests check_version()."""
-
-    def setUp(self):
-        self._log = LogTesting.setUp(self)
-
-    def tearDown(self):
-        self._log.tearDown()
-
-    def _check_version(self, minimum_version):
-        """Call check_version()."""
-        mock_sys = MockSys("2.5.3")
-        return check_version(sysmodule=mock_sys, target_version=minimum_version)
-
-    def test_true_return_value(self):
-        """Test the configured minimum version that webkitpy supports."""
-        is_current = self._check_version("2.4")
-        self.assertEquals(True, is_current)
-        self._log.assertMessages([])  # No warning was logged.
-
-    def test_false_return_value(self):
-        """Test the configured minimum version that webkitpy supports."""
-        is_current = self._check_version("2.6")
-        self.assertEquals(False, is_current)
-        expected_message = ('WARNING: WebKit Python scripts do not support '
-                            'your current Python version (2.5.3).  '
-                            'The minimum supported version is 2.6.\n  '
-                            'See the following page to upgrade your Python '
-                            'version:\n\n    '
-                            'http://trac.webkit.org/wiki/PythonGuidelines\n\n')
-        self._log.assertMessages([expected_message])
-
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to