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:
parent
4b1db63b35
commit
1580b2c8da
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
63
doc/bin.txt
63
doc/bin.txt
|
@ -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
|
|
||||||
|
|
|
@ -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/
|
||||||
|
|
|
@ -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
|
||||||
|
|
36
setup.py
36
setup.py
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue