summaryrefslogtreecommitdiffstats
path: root/lib/testtools/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/testtools/setup.py')
-rwxr-xr-xlib/testtools/setup.py51
1 files changed, 45 insertions, 6 deletions
diff --git a/lib/testtools/setup.py b/lib/testtools/setup.py
index d7ed46f79f6..59e5804f05b 100755
--- a/lib/testtools/setup.py
+++ b/lib/testtools/setup.py
@@ -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'])