testtools: Import new upstream snapshot.
[nivanova/samba-autobuild/.git] / lib / testtools / setup.py
index d7ed46f79f6cf4c70e5075bdf73ac35f7facd015..59e5804f05bd3ec1c40b95f362dc24e76dc6c9a5 100755 (executable)
@@ -2,18 +2,55 @@
 """Distutils installer for testtools."""
 
 from distutils.core import setup
+import email
+import os
+
 import testtools
-version = '.'.join(str(component) for component in testtools.__version__[0:3])
-phase = testtools.__version__[3]
-if phase != 'final':
+
+
+def get_revno():
     import bzrlib.workingtree
     t = bzrlib.workingtree.WorkingTree.open_containing(__file__)[0]
+    return t.branch.revno()
+
+
+def get_version_from_pkg_info():
+    """Get the version from PKG-INFO file if we can."""
+    pkg_info_path = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
+    try:
+        pkg_info_file = open(pkg_info_path, 'r')
+    except (IOError, OSError):
+        return None
+    try:
+        pkg_info = email.message_from_file(pkg_info_file)
+    except email.MessageError:
+        return None
+    return pkg_info.get('Version', None)
+
+
+def get_version():
+    """Return the version of testtools that we are building."""
+    version = '.'.join(
+        str(component) for component in testtools.__version__[0:3])
+    phase = testtools.__version__[3]
+    if phase == 'final':
+        return version
+    pkg_info_version = get_version_from_pkg_info()
+    if pkg_info_version:
+        return pkg_info_version
+    revno = get_revno()
     if phase == 'alpha':
         # No idea what the next version will be
-        version = 'next-%s' % t.branch.revno()
+        return 'next-r%s' % revno
     else:
         # Preserve the version number but give it a revno prefix
-        version = version + '~%s' % t.branch.revno()
+        return version + '-r%s' % revno
+
+
+def get_long_description():
+    manual_path = os.path.join(os.path.dirname(__file__), 'MANUAL')
+    return open(manual_path).read()
+
 
 setup(name='testtools',
       author='Jonathan M. Lange',
@@ -21,5 +58,7 @@ setup(name='testtools',
       url='https://launchpad.net/testtools',
       description=('Extensions to the Python standard library unit testing '
                    'framework'),
-      version=version,
+      long_description=get_long_description(),
+      version=get_version(),
+      classifiers=["License :: OSI Approved :: MIT License"],
       packages=['testtools', 'testtools.testresult', 'testtools.tests'])