diff options
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/python24')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/python24/__init__.py | 1 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/python24/versioning.py | 133 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/python24/versioning_unittest.py | 134 |
3 files changed, 0 insertions, 268 deletions
diff --git a/WebKitTools/Scripts/webkitpy/python24/__init__.py b/WebKitTools/Scripts/webkitpy/python24/__init__.py deleted file mode 100644 index ef65bee..0000000 --- a/WebKitTools/Scripts/webkitpy/python24/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Required for Python to search this directory for module files diff --git a/WebKitTools/Scripts/webkitpy/python24/versioning.py b/WebKitTools/Scripts/webkitpy/python24/versioning.py deleted file mode 100644 index 8b1f21b..0000000 --- a/WebKitTools/Scripts/webkitpy/python24/versioning.py +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) -# -# 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("webkitpy.python24.versioning") - -# 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 diff --git a/WebKitTools/Scripts/webkitpy/python24/versioning_unittest.py b/WebKitTools/Scripts/webkitpy/python24/versioning_unittest.py deleted file mode 100644 index 6939e2d..0000000 --- a/WebKitTools/Scripts/webkitpy/python24/versioning_unittest.py +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) -# -# 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]) - |