From 9d96d14d83855de8138e6b83fe13a78a78158ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Nov=C3=BD?= Date: Sun, 13 Dec 2015 18:10:17 +0100 Subject: [PATCH] Unit tests for swift_version Return False if version can't be compared. It's safer. Change-Id: I1af9f15712ae7c27979ab4a78f7dd8a6fc43057e --- swauth/swift_version.py | 51 +-------------- test/unit/test_swift_version.py | 107 ++++++++++++++++++++++++++++++++ tox.ini | 2 +- 3 files changed, 111 insertions(+), 49 deletions(-) create mode 100644 test/unit/test_swift_version.py diff --git a/swauth/swift_version.py b/swauth/swift_version.py index 9f737cf..fa524f3 100644 --- a/swauth/swift_version.py +++ b/swauth/swift_version.py @@ -12,7 +12,6 @@ # limitations under the License. import swift -from sys import stderr MAJOR = None @@ -54,51 +53,7 @@ def newer_than(value): elif REVISION == revision: if not FINAL or final: return False - except Exception as err: - stderr.write( - "Unable to automatically detect if %r is newer_than(%r) so just " - "assuming it is: %s\n" % ( - getattr(swift, "__version__", "no swift.__version__"), - value, err)) + except Exception: + # Unable to detect if it's newer, better to fail + return False return True - - -def run_tests(): - global MAJOR - orig_version = swift.__version__ - try: - swift.__version__ = '1.3' - MAJOR = None - assert(newer_than('1.2')) - assert(newer_than('1.2.9')) - assert(newer_than('1.3-dev')) - assert(newer_than('1.3.0-dev')) - assert(not newer_than('1.3')) - assert(not newer_than('1.3.0')) - assert(not newer_than('1.3.1-dev')) - assert(not newer_than('1.3.1')) - assert(not newer_than('1.4')) - assert(not newer_than('2.0')) - swift.__version__ = '1.7.7-dev' - MAJOR = None - assert(newer_than('1.6')) - assert(newer_than('1.7')) - assert(newer_than('1.7.6-dev')) - assert(newer_than('1.7.6')) - assert(not newer_than('1.7.7')) - assert(not newer_than('1.7.8-dev')) - assert(not newer_than('1.7.8')) - assert(not newer_than('1.8.0')) - assert(not newer_than('2.0')) - swift.__version__ = '1.10.0-2.el6' - MAJOR = None - assert(not newer_than('2.0')) - swift.__version__ = 'garbage' - MAJOR = None - assert(newer_than('2.0')) - finally: - swift.__version__ = orig_version - - -if __name__ == '__main__': - run_tests() diff --git a/test/unit/test_swift_version.py b/test/unit/test_swift_version.py new file mode 100644 index 0000000..1576ea2 --- /dev/null +++ b/test/unit/test_swift_version.py @@ -0,0 +1,107 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +from swauth import swift_version as ver +import swift + + +class TestSwiftVersion(unittest.TestCase): + def test_parse(self): + tests = { + "1.2": (1, 2, 0, True), + "1.2.3": (1, 2, 3, True), + "1.2.3-dev": (1, 2, 3, False) + } + + for (input, ref_out) in tests.items(): + out = ver.parse(input) + self.assertEqual(ref_out, out) + + def test_newer_than(self): + orig_version = swift.__version__ + + swift.__version__ = '1.3' + ver.MAJOR = None + self.assertTrue(ver.newer_than('1.2')) + self.assertTrue(ver.newer_than('1.2.9')) + self.assertTrue(ver.newer_than('1.3-dev')) + self.assertTrue(ver.newer_than('1.3.0-dev')) + self.assertFalse(ver.newer_than('1.3')) + self.assertFalse(ver.newer_than('1.3.0')) + self.assertFalse(ver.newer_than('1.3.1-dev')) + self.assertFalse(ver.newer_than('1.3.1')) + self.assertFalse(ver.newer_than('1.4-dev')) + self.assertFalse(ver.newer_than('1.4')) + self.assertFalse(ver.newer_than('2.0-dev')) + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = '1.3-dev' + ver.MAJOR = None + self.assertTrue(ver.newer_than('1.2')) + self.assertTrue(ver.newer_than('1.2.9')) + self.assertFalse(ver.newer_than('1.3-dev')) + self.assertFalse(ver.newer_than('1.3.0-dev')) + self.assertFalse(ver.newer_than('1.3')) + self.assertFalse(ver.newer_than('1.3.0')) + self.assertFalse(ver.newer_than('1.3.1-dev')) + self.assertFalse(ver.newer_than('1.3.1')) + self.assertFalse(ver.newer_than('1.4-dev')) + self.assertFalse(ver.newer_than('1.4')) + self.assertFalse(ver.newer_than('2.0-dev')) + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = '1.5.6' + ver.MAJOR = None + self.assertTrue(ver.newer_than('1.4')) + self.assertTrue(ver.newer_than('1.5')) + self.assertTrue(ver.newer_than('1.5.5-dev')) + self.assertTrue(ver.newer_than('1.5.5')) + self.assertTrue(ver.newer_than('1.5.6-dev')) + self.assertFalse(ver.newer_than('1.5.6')) + self.assertFalse(ver.newer_than('1.5.7-dev')) + self.assertFalse(ver.newer_than('1.5.7')) + self.assertFalse(ver.newer_than('1.6-dev')) + self.assertFalse(ver.newer_than('1.6')) + self.assertFalse(ver.newer_than('2.0-dev')) + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = '1.5.6-dev' + ver.MAJOR = None + self.assertTrue(ver.newer_than('1.4')) + self.assertTrue(ver.newer_than('1.5')) + self.assertTrue(ver.newer_than('1.5.5-dev')) + self.assertTrue(ver.newer_than('1.5.5')) + self.assertFalse(ver.newer_than('1.5.6-dev')) + self.assertFalse(ver.newer_than('1.5.6')) + self.assertFalse(ver.newer_than('1.5.7-dev')) + self.assertFalse(ver.newer_than('1.5.7')) + self.assertFalse(ver.newer_than('1.6-dev')) + self.assertFalse(ver.newer_than('1.6')) + self.assertFalse(ver.newer_than('2.0-dev')) + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = '1.10.0-2.el6' + ver.MAJOR = None + self.assertTrue(ver.newer_than('1.9')) + self.assertTrue(ver.newer_than('1.10.0-dev')) + self.assertFalse(ver.newer_than('1.10.0')) + self.assertFalse(ver.newer_than('1.11')) + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = 'garbage' + ver.MAJOR = None + self.assertFalse(ver.newer_than('2.0')) + + swift.__version__ = orig_version diff --git a/tox.ini b/tox.ini index 7e4323a..0169fee 100644 --- a/tox.ini +++ b/tox.ini @@ -22,7 +22,7 @@ setenv = VIRTUAL_ENV={envdir} NOSE_COVER_BRANCHES=1 NOSE_COVER_HTML=1 NOSE_COVER_HTML_DIR={toxinidir}/cover - NOSE_COVER_MIN_PERCENTAGE=85 + NOSE_COVER_MIN_PERCENTAGE=89 NOSE_COVER_ERASE=1 [testenv:pep8]