diff --git a/setup.py b/setup.py index ec656122e0..913c3dbfe9 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ try: except ImportError: frontend = None -from swift import __version__ as version +from swift import __canonical_version__ as version class local_sdist(sdist): diff --git a/swift/__init__.py b/swift/__init__.py index 441e13d5e8..6ba23a1c1b 100644 --- a/swift/__init__.py +++ b/swift/__init__.py @@ -1,5 +1,21 @@ import gettext -__version__ = '1.4-dev' +class Version(object): + def __init__(self, canonical_version, final): + self.canonical_version = canonical_version + self.final = final + + @property + def pretty_version(self): + if self.final: + return self.canonical_version + else: + return '%s-dev' % (self.canonical_version,) + + +_version = Version('1.4.1', False) +__version__ = _version.pretty_version +__canonical_version__ = _version.canonical_version + gettext.install('swift') diff --git a/test/unit/common/test_init.py b/test/unit/common/test_init.py new file mode 100644 index 0000000000..b86e89d0b3 --- /dev/null +++ b/test/unit/common/test_init.py @@ -0,0 +1,37 @@ +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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 re +import unittest +import swift + +class TestVersioning(unittest.TestCase): + def test_canonical_version_is_clean(self): + """Ensure that a non-clean canonical_version never happens""" + pattern = re.compile('^\d+(\.\d+)*$') + self.assertTrue(pattern.match(swift.__canonical_version__) is not None) + + def test_canonical_version_equals_version_for_final(self): + version = swift.Version('7.8.9', True) + self.assertEquals(version.pretty_version, '7.8.9') + self.assertEquals(version.canonical_version, '7.8.9') + + def test_version_has_dev_suffix_for_non_final(self): + version = swift.Version('7.8.9', False) + self.assertEquals(version.pretty_version, '7.8.9-dev') + self.assertEquals(version.canonical_version, '7.8.9') + +if __name__ == '__main__': + unittest.main()