diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2012-11-12 10:52:55 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2012-11-12 10:52:55 -0500 |
commit | 46140346e2dbacebddfa007cae793f3e2e3fadc1 (patch) | |
tree | b8ee353720ce54f7c49d07a8245879d5fc125036 | |
parent | 2be7a0db8713bbcc8682eb58c7d1b5b5a9b2c06f (diff) | |
download | python-coveragepy-git-46140346e2dbacebddfa007cae793f3e2e3fadc1.tar.gz |
Don't import coverage into setup.py to get the version number. Do something far worse... :) #73
-rw-r--r-- | coverage/__init__.py | 8 | ||||
-rw-r--r-- | coverage/version.py | 9 | ||||
-rw-r--r-- | howto.txt | 2 | ||||
-rw-r--r-- | setup.py | 21 | ||||
-rw-r--r-- | test/test_misc.py | 18 |
5 files changed, 41 insertions, 17 deletions
diff --git a/coverage/__init__.py b/coverage/__init__.py index 2653853b..0ccc699f 100644 --- a/coverage/__init__.py +++ b/coverage/__init__.py @@ -5,19 +5,13 @@ http://nedbatchelder.com/code/coverage """ -__version__ = "3.5.4b1" # see detailed history in CHANGES.txt - -__url__ = "http://nedbatchelder.com/code/coverage" -if max(__version__).isalpha(): - # For pre-releases, use a version-specific URL. - __url__ += "/" + __version__ +from coverage.version import __version__, __url__ from coverage.control import coverage, process_startup from coverage.data import CoverageData from coverage.cmdline import main, CoverageScript from coverage.misc import CoverageException - # Module-level functions. The original API to this module was based on # functions defined directly in the module, with a singleton of the coverage() # class. That design hampered programmability, so the current api uses diff --git a/coverage/version.py b/coverage/version.py new file mode 100644 index 00000000..5a8a2d6e --- /dev/null +++ b/coverage/version.py @@ -0,0 +1,9 @@ +"""The version and URL for coverage.py""" +# This file is exec'ed in setup.py, don't import anything! + +__version__ = "3.5.4b1" # see detailed history in CHANGES.txt + +__url__ = "http://nedbatchelder.com/code/coverage" +if max(__version__).isalpha(): + # For pre-releases, use a version-specific URL. + __url__ += "/" + __version__ @@ -5,7 +5,7 @@ - Ubuntu - Mac - Pythons 2.3, 2.4, 2.5, 2.6, 2.7, 3.1, 3.2, 3.3 -- Version number in coverage/__init__.py +- Version number in coverage/version.py - 3.1a1, 3.1b1, 3.1c1, 3.1 - Update CHANGES.txt, including release date. - Update docstring in setup.py, including "New in x.y:" @@ -1,4 +1,4 @@ -# setup.py for coverage. +# setup.py for coverage.py """Code coverage measurement for Python @@ -19,12 +19,11 @@ can be reported. New in 3.3: .coveragerc files. New in 3.2: Branch coverage! - """ # This file is used unchanged under all versions of Python, 2.x and 3.x. -classifiers = """ +classifiers = """\ Environment :: Console Intended Audience :: Developers License :: OSI Approved :: BSD License @@ -36,7 +35,7 @@ Topic :: Software Development :: Testing """ # Pull in the tools we need. -import sys +import os, sys # Distribute is a new fork of setuptools. It's supported on Py3.x, so we use # it there, but stick with classic setuptools on Py2.x until Distribute becomes @@ -51,13 +50,17 @@ use_setuptools() from setuptools import setup from distutils.core import Extension # pylint: disable=E0611,F0401 -# Get or massage our metadata. +# Get or massage our metadata. We exec coverage/version.py so we can avoid +# importing the product code into setup.py. -from coverage import __url__, __version__ +doc = __doc__ # __doc__ will be overwritten by version.py. +__version__ = __url__ = "" # keep pylint happy. -doclines = (__doc__ % __url__).split('\n') +cov_ver_py = os.path.join(os.path.split(__file__)[0], "coverage/version.py") +exec(compile(open(cov_ver_py).read(), cov_ver_py, 'exec')) -classifier_list = [c for c in classifiers.split("\n") if c] +doclines = (doc % __url__).splitlines() +classifier_list = classifiers.splitlines() if 'a' in __version__: devstat = "3 - Alpha" @@ -67,7 +70,7 @@ else: devstat = "5 - Production/Stable" classifier_list.append("Development Status :: " + devstat) -# Set it up! +# Create the keyword arguments for setup() setup_args = dict( name = 'coverage', diff --git a/test/test_misc.py b/test/test_misc.py index eb73cc81..857f4cd8 100644 --- a/test/test_misc.py +++ b/test/test_misc.py @@ -3,6 +3,7 @@ import os, sys from coverage.misc import Hasher +from coverage import __version__, __url__ sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k from coveragetest import CoverageTest @@ -25,3 +26,20 @@ class HasherTest(CoverageTest): h2 = Hasher() h2.update({'b': 23, 'a': 17}) self.assertEqual(h1.digest(), h2.digest()) + + +class SetupPyTest(CoverageTest): + """Tests of setup.py""" + + run_in_temp_dir = False + + def test_version(self): + status, output = self.run_command_status( + "python setup.py --description --version --url --author" + ) + self.assertEqual(status, 0) + out = output.splitlines() + self.assertIn("measurement", out[0]) + self.assertEqual(out[1], __version__) + self.assertEqual(out[2], __url__) + self.assertIn("Ned Batchelder", out[3]) |