[py-svn] py-trunk commit 96fba87ba03f: create version/interpreter differentiated py.test$VER for cpython, jython, pypy-c's, prepare 1.1.2 release
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Thu Dec 24 13:14:15 CET 2009
# HG changeset patch -- Bitbucket.org
# Project py-trunk
# URL http://bitbucket.org/hpk42/py-trunk/overview/
# User holger krekel <holger at merlinux.eu>
# Date 1261594732 -3600
# Node ID 96fba87ba03f6f3c5af627d6cf3fd95bdb08516a
# Parent b3eda3294727a05c8e9eb6c3a36f8f2a81cc4e5d
create version/interpreter differentiated py.test$VER for cpython, jython, pypy-c's, prepare 1.1.2 release
--- a/doc/install.txt
+++ b/doc/install.txt
@@ -3,19 +3,30 @@
Downloading
==============
-.. _`PyPI project page`: http://pypi.python.org/pypi/py/
+.. _`index page`: http://pypi.python.org/pypi/py/
-py.test/pylib compat/install info in a nutshell
+py.test/pylib installation info in a nutshell
===================================================
-PyPI Pyckage name: "**py**", see `PyPI project page`_ for latest version
+**Pythons**: 2.4, 2.5, 2.6, 3.0, 3.1, Jython-2.5.1, PyPy-1.1
-Installers: easy_install_ and pip_, setuptools_ or Distribute_
+**Operating systems**: Linux, Windows, OSX, Unix
-Pythons: 2.4, 2.5, 2.6, 3.0, 3.1, Jython-2.5.1, PyPy-1.1
+**Requirements**: setuptools_ or Distribute_
-Operating systems: Linux, Windows and OSX + probably many others
+**Installers**: easy_install_ and pip_
+
+**Distribution names**:
+
+* PyPI name: ``py`` (see `index page`_ for versions)
+* redhat fedora: ``pylib``
+* debian: ``python-codespeak-lib``
+* gentoo: ``pylib``
+
+**Installed scripts**: see `bin`_ for which scripts are installed.
+
+.. _`bin`: bin.html
Best practise: install tool and dependencies virtually
@@ -28,12 +39,6 @@ you need to run your tests. Local virtu
(as opposed to system-wide "global" environments) make for a more
reproducible and reliable test environment.
-Note: as of November 2009 pytest/pylib 1.1 RPMs and DEB packages
-are not available. If you want to easy_install the newest py.test
-and pylib do everyone a favour and uninstall older versions
-from the global system e.g. like this on Ubuntu::
-
- sudo apt-get remove --purge python-codespeak-lib
.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv
.. _`buildout`: http://www.buildout.org/
--- a/py/__init__.py
+++ b/py/__init__.py
@@ -9,7 +9,7 @@ dictionary or an import path.
(c) Holger Krekel and others, 2009
"""
-version = "1.1.1"
+version = "1.1.2"
__version__ = version = version or "1.1.x"
import py.apipkg
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,11 @@
Changes between 1.1.2 and 1.1.1
=====================================
+- install 'py.test' and `py.which` with a ``-$VERSION`` suffix to
+ disambiguate between Python3, python2.X, Jython and PyPy installed versions.
+
- fix assert reinterpreation that sees a call containing "keyword=..."
+
- skip some install-tests if no execnet is available
Changes between 1.1.1 and 1.1.0
--- a/bin-for-dist/test_install.py
+++ b/bin-for-dist/test_install.py
@@ -143,3 +143,29 @@ def test_plugin_setuptools_entry_point_i
venv.setup_develop()
out = venv.pytest_getouterr("-h")
assert "testpluginopt" in out
+
+def test_cmdline_entrypoints():
+ from setup import cmdline_entrypoints
+ versioned_scripts = ['py.test', 'py.which']
+ unversioned_scripts = versioned_scripts + [ 'py.cleanup',
+ 'py.convert_unittest', 'py.countloc', 'py.lookup', 'py.svnwcrevert']
+ for ver in [(2,4,0), (2,5,0), (2,6,0), (2,7,0), (3,0,1), (3,1,1)]:
+ for platform in ('posix', 'win32'):
+ points = cmdline_entrypoints(ver, "posix", 'python')
+ for script in versioned_scripts:
+ script_ver = script + "-%s.%s" % ver[:2]
+ assert script_ver in points
+ for script in unversioned_scripts:
+ assert script in points
+ points = cmdline_entrypoints((2,5,1), "java1.6.123", 'jython')
+ for script in versioned_scripts:
+ expected = "%s-jython" % script
+ assert expected in points
+ for script in unversioned_scripts:
+ assert script in points
+ points = cmdline_entrypoints((2,5,1), "xyz", 'pypy-c-XYZ')
+ for script in versioned_scripts:
+ expected = "%s-pypy-c-XYZ" % script
+ assert expected in points
+ for script in unversioned_scripts:
+ assert script in points
--- a/doc/bin.txt
+++ b/doc/bin.txt
@@ -1,22 +1,40 @@
======================
-``py/bin/`` scripts
+pylib scripts
======================
-The py-lib contains some scripts, most of which are
-small ones (apart from ``py.test``) that help during
-the python development process. If working
-from a svn-checkout of py lib you may add ``py/bin``
-to your shell ``PATH`` which should make the scripts
-available on your command prompt.
+The pylib installs several scripts to support testing and (python)
+development. If working from a checkout you may also add ``bin`` to
+your ``PATH`` environment variable which makes the scripts available on
+your shell prompt.
-``py.test``
-===========
+``py.test`` and ``py.test-$VERSION``
+============================================
-The ``py.test`` executable is the main entry point into the py-lib testing tool,
-see the `py.test documentation`_.
+The ``py.test`` executable is the main tool that the py lib offers;
+in fact most code in the py lib is geared towards supporting the
+testing process. See the `py.test documentation`_ for extensive
+documentation. The ``py.test-$VERSION`` is the same script with
+an interpreter specific suffix appended to make
+several versions of py.test for using specific interpreters
+accessible:
+
+* CPython2.4: py.test-2.4
+* CPython2.5: py.test-2.5
+* ...
+* CPython3.1: py.test-3.1
+* Jython-2.5.1: py.test-jython
+* pypy-$SUFFIX: py.test-pypy-$SUFFIX
.. _`py.test documentation`: test/index.html
+``py.which`` and ``py.which-$VERSION``
+=========================================
+
+Usage: ``py.which modulename``
+
+Print the ``__file__`` of the module that is imported via ``import modulename``.
+The version-suffix is the same as with ``py.test`` above.
+
``py.cleanup``
==============
@@ -26,7 +44,6 @@ Delete pyc file recursively, starting fr
current working directory). Don't follow links and don't recurse into
directories with a ".".
-
``py.countloc``
===============
@@ -46,25 +63,3 @@ Looks recursively at Python files for a
present working directory. Prints the line, with the filename and line-number
prepended.
-``py.rest``
-===========
-
-Usage: ``py.rest [PATHS] [options]``
-
-[deprecated in 1.0, will likely be separated]
-Loot recursively for .txt files starting from ``PATHS`` and convert them to
-html using docutils or to pdf files, if the ``--pdf`` option is used. For
-conversion to PDF you will need several command line tools, on Ubuntu Linux
-this is **texlive** and **texlive-extra-utils**.
-
-``py.rest`` has some extra features over rst2html (which is shipped with
-docutils). Most of these are still experimental, the one which is most likely
-not going to change is the `graphviz`_ directive. With that you can embed .dot
-files into your document and have them be converted to png (when outputting
-html) and to eps (when outputting pdf). Otherwise the directive works mostly
-like the image directive::
-
- .. graphviz:: example.dot
- :scale: 90
-
-.. _`graphviz`: http://www.graphviz.org
--- a/setup.py
+++ b/setup.py
@@ -28,20 +28,13 @@ def main():
name='py',
description='py.test and pylib: rapid testing and development utils.',
long_description = long_description,
- version= trunk or '1.1.1',
+ version= trunk or '1.1.2',
url='http://pylib.org',
license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel, Guido Wesdorp, Carl Friedrich Bolz, Armin Rigo, Maciej Fijalkowski & others',
author_email='holger at merlinux.eu',
- entry_points={'console_scripts': [
- 'py.cleanup = py.cmdline:pycleanup',
- 'py.convert_unittest = py.cmdline:pyconvert_unittest',
- 'py.countloc = py.cmdline:pycountloc',
- 'py.lookup = py.cmdline:pylookup',
- 'py.svnwcrevert = py.cmdline:pysvnwcrevert',
- 'py.test = py.cmdline:pytest',
- 'py.which = py.cmdline:pywhich']},
+ entry_points= make_entry_points(),
classifiers=['Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
@@ -69,6 +62,31 @@ def main():
zip_safe=False,
)
+def cmdline_entrypoints(versioninfo, platform, basename):
+ if basename.startswith("pypy"):
+ points = {'py.test-%s' % basename: 'py.cmdline:pytest',
+ 'py.which-%s' % basename: 'py.cmdline:pywhich',}
+ elif platform.startswith('java'):
+ points = {'py.test-jython': 'py.cmdline:pytest',
+ 'py.which-jython': 'py.cmdline:pywhich'}
+ else: # cpython
+ points = {
+ 'py.test-%s.%s' % versioninfo[:2] : 'py.cmdline:pytest',
+ 'py.which-%s.%s' % versioninfo[:2] : 'py.cmdline:pywhich'
+ }
+ for x in ['py.cleanup', 'py.convert_unittest', 'py.countloc',
+ 'py.lookup', 'py.svnwcrevert', 'py.which', 'py.test']:
+ points[x] = "py.cmdline:%s" % x.replace('.','')
+ return points
+
+def make_entry_points():
+ basename = os.path.basename(sys.executable)
+ points = cmdline_entrypoints(sys.version_info, sys.platform, basename)
+ keys = list(points.keys())
+ keys.sort()
+ l = ["%s = %s" % (x, points[x]) for x in keys]
+ return {'console_scripts': l}
+
if __name__ == '__main__':
main()
More information about the pytest-commit
mailing list