regen setup.py and docs so that "python3 setup.py build" maybe works if setuptools does
--HG-- branch : trunk
This commit is contained in:
parent
c8119d89b6
commit
3c3002ccd5
|
@ -32,8 +32,8 @@ on tests that wait on reading something from stdin.
|
||||||
You can influence output capturing mechanisms from the command line::
|
You can influence output capturing mechanisms from the command line::
|
||||||
|
|
||||||
py.test -s # disable all capturing
|
py.test -s # disable all capturing
|
||||||
py.test --capture=sys # set StringIO() to each of sys.stdout/stderr
|
py.test --capture=sys # replace sys.stdout/stderr with in-mem files
|
||||||
py.test --capture=fd # capture stdout/stderr on Filedescriptors 1/2
|
py.test --capture=fd # point filedescriptors 1 and 2 to temp file
|
||||||
|
|
||||||
If you set capturing values in a conftest file like this::
|
If you set capturing values in a conftest file like this::
|
||||||
|
|
||||||
|
@ -46,7 +46,9 @@ sys-level capturing
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
Capturing on 'sys' level means that ``sys.stdout`` and ``sys.stderr``
|
Capturing on 'sys' level means that ``sys.stdout`` and ``sys.stderr``
|
||||||
will be replaced with StringIO() objects.
|
will be replaced with in-memory files (``py.io.TextIO`` to be precise)
|
||||||
|
that capture writes and decode non-unicode strings to a unicode object
|
||||||
|
(using a default, usually, UTF-8, encoding).
|
||||||
|
|
||||||
FD-level capturing and subprocesses
|
FD-level capturing and subprocesses
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
@ -71,8 +73,9 @@ per-test capturing. Here is an example test function:
|
||||||
.. sourcecode:: python
|
.. sourcecode:: python
|
||||||
|
|
||||||
def test_myoutput(capsys):
|
def test_myoutput(capsys):
|
||||||
print "hello"
|
print ("hello")
|
||||||
print >>sys.stderr, "world"
|
sys.stderr.write("world
|
||||||
|
")
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "hello\n"
|
assert out == "hello\n"
|
||||||
assert err == "world\n"
|
assert err == "world\n"
|
||||||
|
|
|
@ -1,38 +1,38 @@
|
||||||
.. _`helpconfig`: helpconfig.html
|
.. _`helpconfig`: helpconfig.html
|
||||||
.. _`terminal`: terminal.html
|
.. _`terminal`: terminal.html
|
||||||
.. _`pytest_recwarn.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_recwarn.py
|
.. _`pytest_recwarn.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_recwarn.py
|
||||||
.. _`unittest`: unittest.html
|
.. _`unittest`: unittest.html
|
||||||
.. _`pytest_monkeypatch.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_monkeypatch.py
|
.. _`pytest_monkeypatch.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_monkeypatch.py
|
||||||
.. _`pytest_keyword.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_keyword.py
|
.. _`pytest_keyword.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_keyword.py
|
||||||
.. _`pastebin`: pastebin.html
|
.. _`pastebin`: pastebin.html
|
||||||
.. _`plugins`: index.html
|
.. _`plugins`: index.html
|
||||||
.. _`pytest_capture.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_capture.py
|
.. _`pytest_capture.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_capture.py
|
||||||
.. _`pytest_doctest.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_doctest.py
|
.. _`pytest_doctest.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_doctest.py
|
||||||
.. _`capture`: capture.html
|
.. _`capture`: capture.html
|
||||||
.. _`pytest_nose.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_nose.py
|
.. _`pytest_nose.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_nose.py
|
||||||
.. _`pytest_restdoc.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_restdoc.py
|
.. _`pytest_restdoc.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_restdoc.py
|
||||||
.. _`xfail`: xfail.html
|
.. _`xfail`: xfail.html
|
||||||
.. _`pytest_pastebin.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_pastebin.py
|
.. _`pytest_pastebin.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_pastebin.py
|
||||||
.. _`pytest_figleaf.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_figleaf.py
|
.. _`pytest_figleaf.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_figleaf.py
|
||||||
.. _`pytest_hooklog.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_hooklog.py
|
.. _`pytest_hooklog.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_hooklog.py
|
||||||
.. _`checkout the py.test development version`: ../../download.html#checkout
|
.. _`checkout the py.test development version`: ../../download.html#checkout
|
||||||
.. _`pytest_helpconfig.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_helpconfig.py
|
.. _`pytest_helpconfig.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_helpconfig.py
|
||||||
.. _`oejskit`: oejskit.html
|
.. _`oejskit`: oejskit.html
|
||||||
.. _`doctest`: doctest.html
|
.. _`doctest`: doctest.html
|
||||||
.. _`get in contact`: ../../contact.html
|
.. _`get in contact`: ../../contact.html
|
||||||
.. _`pytest_xfail.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_xfail.py
|
.. _`pytest_xfail.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_xfail.py
|
||||||
.. _`figleaf`: figleaf.html
|
.. _`figleaf`: figleaf.html
|
||||||
.. _`customize`: ../customize.html
|
.. _`customize`: ../customize.html
|
||||||
.. _`hooklog`: hooklog.html
|
.. _`hooklog`: hooklog.html
|
||||||
.. _`pytest_terminal.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_terminal.py
|
.. _`pytest_terminal.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_terminal.py
|
||||||
.. _`recwarn`: recwarn.html
|
.. _`recwarn`: recwarn.html
|
||||||
.. _`pytest_pdb.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_pdb.py
|
.. _`pytest_pdb.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_pdb.py
|
||||||
.. _`monkeypatch`: monkeypatch.html
|
.. _`monkeypatch`: monkeypatch.html
|
||||||
.. _`resultlog`: resultlog.html
|
.. _`resultlog`: resultlog.html
|
||||||
.. _`keyword`: keyword.html
|
.. _`keyword`: keyword.html
|
||||||
.. _`restdoc`: restdoc.html
|
.. _`restdoc`: restdoc.html
|
||||||
.. _`django`: django.html
|
.. _`django`: django.html
|
||||||
.. _`pytest_unittest.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_unittest.py
|
.. _`pytest_unittest.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_unittest.py
|
||||||
.. _`nose`: nose.html
|
.. _`nose`: nose.html
|
||||||
.. _`pytest_resultlog.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.0.2/py/test/plugin/pytest_resultlog.py
|
.. _`pytest_resultlog.py`: http://bitbucket.org/hpk42/py-trunk/raw/trunk/py/test/plugin/pytest_resultlog.py
|
||||||
.. _`pdb`: pdb.html
|
.. _`pdb`: pdb.html
|
||||||
|
|
|
@ -10,8 +10,8 @@ safely patch object attributes, dicts and environment variables.
|
||||||
Usage
|
Usage
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Use the `monkeypatch funcarg`_ to safely patch environment
|
Use the `monkeypatch funcarg`_ to safely modify or delete environment
|
||||||
variables, object attributes or dictionaries. For example, if you want
|
variables, object attributes or dictionary values. For example, if you want
|
||||||
to set the environment variable ``ENV1`` and patch the
|
to set the environment variable ``ENV1`` and patch the
|
||||||
``os.path.abspath`` function to return a particular value during a test
|
``os.path.abspath`` function to return a particular value during a test
|
||||||
function execution you can write it down like this:
|
function execution you can write it down like this:
|
||||||
|
@ -37,6 +37,20 @@ can use this example:
|
||||||
monkeypatch.setenv('PATH', 'x/y', prepend=":")
|
monkeypatch.setenv('PATH', 'x/y', prepend=":")
|
||||||
# x/y will be at the beginning of $PATH
|
# x/y will be at the beginning of $PATH
|
||||||
|
|
||||||
|
calling "undo" finalization explicitely
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
Usually at the end of function execution py.test will invoke
|
||||||
|
a teardown hook which undoes the changes. If you cannot wait
|
||||||
|
that long you can also call finalization explicitely::
|
||||||
|
|
||||||
|
monkeypatch.undo()
|
||||||
|
|
||||||
|
This will undo previous changes. This call consumes the
|
||||||
|
undo stack. Calling it a second time has no effect.
|
||||||
|
Within a test you can continue to use the monkeypatch
|
||||||
|
object, however.
|
||||||
|
|
||||||
.. _`monkeypatch blog post`: http://tetamap.wordpress.com/2009/03/03/monkeypatching-in-unit-tests-done-right/
|
.. _`monkeypatch blog post`: http://tetamap.wordpress.com/2009/03/03/monkeypatching-in-unit-tests-done-right/
|
||||||
|
|
||||||
.. _`monkeypatch funcarg`:
|
.. _`monkeypatch funcarg`:
|
||||||
|
@ -45,15 +59,22 @@ can use this example:
|
||||||
the 'monkeypatch' test function argument
|
the 'monkeypatch' test function argument
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
The returned ``monkeypatch`` funcarg provides three
|
The returned ``monkeypatch`` funcarg provides these
|
||||||
helper methods to modify objects, dictionaries or os.environ::
|
helper methods to modify objects, dictionaries or os.environ::
|
||||||
|
|
||||||
monkeypatch.setattr(obj, name, value)
|
monkeypatch.setattr(obj, name, value)
|
||||||
|
monkeypatch.delattr(obj, name, raising=True)
|
||||||
monkeypatch.setitem(mapping, name, value)
|
monkeypatch.setitem(mapping, name, value)
|
||||||
monkeypatch.setenv(name, value)
|
monkeypatch.delitem(obj, name, raising=True)
|
||||||
|
monkeypatch.setenv(name, value, prepend=False)
|
||||||
|
monkeypatch.delenv(name, value, raising=True)
|
||||||
|
monkeypatch.syspath_prepend(path)
|
||||||
|
|
||||||
All such modifications will be undone when the requesting
|
All modifications will be undone when the requesting
|
||||||
test function finished its execution.
|
test function finished its execution. For the ``del``
|
||||||
|
methods the ``raising`` parameter determines if a
|
||||||
|
KeyError or AttributeError will be raised if the
|
||||||
|
deletion has no target.
|
||||||
|
|
||||||
Start improving this plugin in 30 seconds
|
Start improving this plugin in 30 seconds
|
||||||
=========================================
|
=========================================
|
||||||
|
|
42
setup.py
42
setup.py
|
@ -23,6 +23,7 @@ For questions please check out http://pylib.org/contact.html
|
||||||
.. _`py.path`: http://pylib.org/path.html
|
.. _`py.path`: http://pylib.org/path.html
|
||||||
.. _`py.code`: http://pylib.org/code.html
|
.. _`py.code`: http://pylib.org/code.html
|
||||||
|
|
||||||
|
(c) Holger Krekel and others, 2009
|
||||||
|
|
||||||
"""
|
"""
|
||||||
trunk = 'trunk'
|
trunk = 'trunk'
|
||||||
|
@ -58,44 +59,25 @@ def main():
|
||||||
'Topic :: Utilities',
|
'Topic :: Utilities',
|
||||||
'Programming Language :: Python'],
|
'Programming Language :: Python'],
|
||||||
packages=['py',
|
packages=['py',
|
||||||
'py._testing',
|
|
||||||
'py.builtin',
|
'py.builtin',
|
||||||
'py.builtin.testing',
|
|
||||||
'py.cmdline',
|
'py.cmdline',
|
||||||
'py.cmdline.testing',
|
|
||||||
'py.code',
|
'py.code',
|
||||||
'py.code.testing',
|
|
||||||
'py.compat',
|
'py.compat',
|
||||||
'py.compat.testing',
|
|
||||||
'py.execnet',
|
'py.execnet',
|
||||||
'py.execnet.script',
|
'py.execnet.script',
|
||||||
'py.execnet.testing',
|
|
||||||
'py.io',
|
'py.io',
|
||||||
'py.io.testing',
|
|
||||||
'py.log',
|
'py.log',
|
||||||
'py.log.testing',
|
|
||||||
'py.path',
|
'py.path',
|
||||||
'py.path.gateway',
|
'py.path.gateway',
|
||||||
'py.path.testing',
|
|
||||||
'py.process',
|
'py.process',
|
||||||
'py.process.testing',
|
|
||||||
'py.rest',
|
'py.rest',
|
||||||
'py.rest.testing',
|
|
||||||
'py.test',
|
'py.test',
|
||||||
'py.test.dist',
|
'py.test.dist',
|
||||||
'py.test.dist.testing',
|
|
||||||
'py.test.looponfail',
|
'py.test.looponfail',
|
||||||
'py.test.looponfail.testing',
|
|
||||||
'py.test.plugin',
|
'py.test.plugin',
|
||||||
'py.test.testing',
|
|
||||||
'py.test.testing.import_test.package',
|
|
||||||
'py.test.web',
|
'py.test.web',
|
||||||
'py.thread',
|
'py.thread'],
|
||||||
'py.thread.testing',
|
package_data={'py': ['bin/_findpy.py',
|
||||||
'py.xmlobj',
|
|
||||||
'py.xmlobj.testing'],
|
|
||||||
package_data={'py': ['LICENSE',
|
|
||||||
'bin/_findpy.py',
|
|
||||||
'bin/env.cmd',
|
'bin/env.cmd',
|
||||||
'bin/env.py',
|
'bin/env.py',
|
||||||
'bin/py.cleanup',
|
'bin/py.cleanup',
|
||||||
|
@ -114,23 +96,7 @@ def main():
|
||||||
'bin/win32/py.svnwcrevert.cmd',
|
'bin/win32/py.svnwcrevert.cmd',
|
||||||
'bin/win32/py.test.cmd',
|
'bin/win32/py.test.cmd',
|
||||||
'bin/win32/py.which.cmd',
|
'bin/win32/py.which.cmd',
|
||||||
'compat/LICENSE',
|
'rest/rest.sty.template']},
|
||||||
'compat/testing/test_doctest.txt',
|
|
||||||
'compat/testing/test_doctest2.txt',
|
|
||||||
'execnet/NOTES',
|
|
||||||
'execnet/improve-remote-tracebacks.txt',
|
|
||||||
'path/gateway/TODO.txt',
|
|
||||||
'path/notes-svn-quoting.txt',
|
|
||||||
'path/testing/repotest.dump',
|
|
||||||
'rest/rest.sty.template',
|
|
||||||
'rest/testing/data/example.rst2pdfconfig',
|
|
||||||
'rest/testing/data/example1.dot',
|
|
||||||
'rest/testing/data/formula.txt',
|
|
||||||
'rest/testing/data/formula1.txt',
|
|
||||||
'rest/testing/data/graphviz.txt',
|
|
||||||
'rest/testing/data/part1.txt',
|
|
||||||
'rest/testing/data/part2.txt',
|
|
||||||
'rest/testing/data/tocdepth.rst2pdfconfig']},
|
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue