create version/interpreter differentiated py.test$VER for cpython, jython, pypy-c's, prepare 1.1.2 release

--HG--
branch : trunk
This commit is contained in:
holger krekel 2009-12-23 19:58:52 +01:00
parent 4b1db63b35
commit 1580b2c8da
6 changed files with 104 additions and 56 deletions

View File

@ -1,7 +1,11 @@
Changes between 1.1.2 and 1.1.1 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=..." - fix assert reinterpreation that sees a call containing "keyword=..."
- skip some install-tests if no execnet is available - skip some install-tests if no execnet is available
Changes between 1.1.1 and 1.1.0 Changes between 1.1.1 and 1.1.0

View File

@ -143,3 +143,29 @@ def test_plugin_setuptools_entry_point_integration(py_setup, venv, tmpdir):
venv.setup_develop() venv.setup_develop()
out = venv.pytest_getouterr("-h") out = venv.pytest_getouterr("-h")
assert "testpluginopt" in out 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

View File

@ -1,22 +1,40 @@
====================== ======================
``py/bin/`` scripts pylib scripts
====================== ======================
The py-lib contains some scripts, most of which are The pylib installs several scripts to support testing and (python)
small ones (apart from ``py.test``) that help during development. If working from a checkout you may also add ``bin`` to
the python development process. If working your ``PATH`` environment variable which makes the scripts available on
from a svn-checkout of py lib you may add ``py/bin`` your shell prompt.
to your shell ``PATH`` which should make the scripts
available on your command prompt.
``py.test`` ``py.test`` and ``py.test-$VERSION``
=========== ============================================
The ``py.test`` executable is the main entry point into the py-lib testing tool, The ``py.test`` executable is the main tool that the py lib offers;
see the `py.test documentation`_. 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.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`` ``py.cleanup``
============== ==============
@ -26,7 +44,6 @@ Delete pyc file recursively, starting from ``PATH`` (which defaults to the
current working directory). Don't follow links and don't recurse into current working directory). Don't follow links and don't recurse into
directories with a ".". directories with a ".".
``py.countloc`` ``py.countloc``
=============== ===============
@ -46,25 +63,3 @@ Looks recursively at Python files for a ``SEARCH_STRING``, starting from the
present working directory. Prints the line, with the filename and line-number present working directory. Prints the line, with the filename and line-number
prepended. 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

View File

@ -3,19 +3,30 @@
Downloading 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 Best practise: install tool and dependencies virtually
@ -28,12 +39,6 @@ you need to run your tests. Local virtual Python environments
(as opposed to system-wide "global" environments) make for a more (as opposed to system-wide "global" environments) make for a more
reproducible and reliable test environment. 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 .. _`virtualenv`: http://pypi.python.org/pypi/virtualenv
.. _`buildout`: http://www.buildout.org/ .. _`buildout`: http://www.buildout.org/

View File

@ -9,7 +9,7 @@ dictionary or an import path.
(c) Holger Krekel and others, 2009 (c) Holger Krekel and others, 2009
""" """
version = "1.1.1" version = "1.1.2"
__version__ = version = version or "1.1.x" __version__ = version = version or "1.1.x"
import py.apipkg import py.apipkg

View File

@ -28,20 +28,13 @@ def main():
name='py', name='py',
description='py.test and pylib: rapid testing and development utils.', description='py.test and pylib: rapid testing and development utils.',
long_description = long_description, long_description = long_description,
version= trunk or '1.1.1', version= trunk or '1.1.2',
url='http://pylib.org', url='http://pylib.org',
license='MIT license', license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel, Guido Wesdorp, Carl Friedrich Bolz, Armin Rigo, Maciej Fijalkowski & others', author='holger krekel, Guido Wesdorp, Carl Friedrich Bolz, Armin Rigo, Maciej Fijalkowski & others',
author_email='holger at merlinux.eu', author_email='holger at merlinux.eu',
entry_points={'console_scripts': [ entry_points= make_entry_points(),
'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']},
classifiers=['Development Status :: 5 - Production/Stable', classifiers=['Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License', 'License :: OSI Approved :: MIT License',
@ -69,6 +62,31 @@ def main():
zip_safe=False, 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__': if __name__ == '__main__':
main() main()