testtools-dev team mailing list archive
-
testtools-dev team
-
Mailing list archive
-
Message #00178
[Merge] lp:~jml/testtools/better-snapshot-613734 into lp:testtools
Jonathan Lange has proposed merging lp:~jml/testtools/better-snapshot-613734 into lp:testtools.
Requested reviews:
testtools developers (testtools-dev)
Related bugs:
#613734 Hard to make snapshots for use with buildout
https://bugs.launchpad.net/bugs/613734
This branch addresses bug 613734 by attempting to read the version number from PKG-INFO if it is present. This prevents bzrlib from being used to get the revno when using a testtools snapshot in buildout.
PKG-INFO is defined as being an RFC 822 message, and the 'email' module is the recommended way of reading such.
I changed the version number for development versions to be of the form 0.9.8-r123. This is largely because buildout explodes on the ~.
setup.py is also refactored a little to make it more readable to me.
--
https://code.launchpad.net/~jml/testtools/better-snapshot-613734/+merge/38719
Your team testtools developers is requested to review the proposed merge of lp:~jml/testtools/better-snapshot-613734 into lp:testtools.
=== modified file 'MANIFEST.in'
--- MANIFEST.in 2009-12-13 00:34:05 +0000
+++ MANIFEST.in 2010-10-18 13:33:39 +0000
@@ -5,5 +5,4 @@
include MANUAL
include NEWS
include README
-include run-tests
include .bzrignore
=== modified file 'setup.py'
--- setup.py 2010-09-11 13:44:56 +0000
+++ setup.py 2010-10-18 13:33:39 +0000
@@ -2,20 +2,49 @@
"""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():
@@ -30,6 +59,6 @@
description=('Extensions to the Python standard library unit testing '
'framework'),
long_description=get_long_description(),
- version=version,
+ version=get_version(),
classifiers=["License :: OSI Approved :: MIT License"],
packages=['testtools', 'testtools.testresult', 'testtools.tests'])
Follow ups