* using a MANIFEST.in file instead of our own generated MANIFEST file
* port the test_install refactoring from trunk, move to bin-for-dist --HG-- branch : 1.0.x
This commit is contained in:
parent
ab83c4e05c
commit
c024dc6417
255
CHANGELOG
255
CHANGELOG
|
@ -1,255 +0,0 @@
|
|||
Changes between 1.0.0 and 1.0.1
|
||||
=====================================
|
||||
|
||||
* added a 'pytest_nose' plugin which handles nose.SkipTest,
|
||||
nose-style function/method/generator setup/teardown and
|
||||
tries to report functions correctly.
|
||||
|
||||
* capturing of unicode writes or encoded strings to sys.stdout/err
|
||||
work better, also terminalwriting was adapted and somewhat
|
||||
unified between windows and linux.
|
||||
|
||||
* improved documentation layout and content a lot
|
||||
|
||||
* added a "--help-config" option to show conftest.py / ENV-var names for
|
||||
all longopt cmdline options, and some special conftest.py variables.
|
||||
renamed 'conf_capture' conftest setting to 'option_capture' accordingly.
|
||||
|
||||
* fix issue #27: better reporting on non-collectable items given on commandline
|
||||
(e.g. pyc files)
|
||||
|
||||
* fix issue #33: added --version flag (thanks Benjamin Peterson)
|
||||
|
||||
* fix issue #32: adding support for "incomplete" paths to wcpath.status()
|
||||
|
||||
* "Test" prefixed classes are *not* collected by default anymore if they
|
||||
have an __init__ method
|
||||
|
||||
* monkeypatch setenv() now accepts a "prepend" parameter
|
||||
|
||||
* improved reporting of collection error tracebacks
|
||||
|
||||
* simplified multicall mechanism and plugin architecture,
|
||||
renamed some internal methods and argnames
|
||||
|
||||
Changes between 1.0.0b9 and 1.0.0
|
||||
=====================================
|
||||
|
||||
* more terse reporting try to show filesystem path relatively to current dir
|
||||
* improve xfail output a bit
|
||||
|
||||
Changes between 1.0.0b8 and 1.0.0b9
|
||||
=====================================
|
||||
|
||||
* cleanly handle and report final teardown of test setup
|
||||
|
||||
* fix svn-1.6 compat issue with py.path.svnwc().versioned()
|
||||
(thanks Wouter Vanden Hove)
|
||||
|
||||
* setup/teardown or collection problems now show as ERRORs
|
||||
or with big "E"'s in the progress lines. they are reported
|
||||
and counted separately.
|
||||
|
||||
* dist-testing: properly handle test items that get locally
|
||||
collected but cannot be collected on the remote side - often
|
||||
due to platform/dependency reasons
|
||||
|
||||
* simplified py.test.mark API - see keyword plugin documentation
|
||||
|
||||
* integrate better with logging: capturing now by default captures
|
||||
test functions and their immediate setup/teardown in a single stream
|
||||
|
||||
* capsys and capfd funcargs now have a readouterr() and a close() method
|
||||
(underlyingly py.io.StdCapture/FD objects are used which grew a
|
||||
readouterr() method as well to return snapshots of captured out/err)
|
||||
|
||||
* make assert-reinterpretation work better with comparisons not
|
||||
returning bools (reported with numpy from thanks maciej fijalkowski)
|
||||
|
||||
* reworked per-test output capturing into the pytest_iocapture.py plugin
|
||||
and thus removed capturing code from config object
|
||||
|
||||
* item.repr_failure(excinfo) instead of item.repr_failure(excinfo, outerr)
|
||||
|
||||
|
||||
Changes between 1.0.0b7 and 1.0.0b8
|
||||
=====================================
|
||||
|
||||
* pytest_unittest-plugin is now enabled by default
|
||||
|
||||
* introduced pytest_keyboardinterrupt hook and
|
||||
refined pytest_sessionfinish hooked, added tests.
|
||||
|
||||
* workaround a buggy logging module interaction ("closing already closed
|
||||
files"). Thanks to Sridhar Ratnakumar for triggering.
|
||||
|
||||
* if plugins use "py.test.importorskip" for importing
|
||||
a dependency only a warning will be issued instead
|
||||
of exiting the testing process.
|
||||
|
||||
* many improvements to docs:
|
||||
- refined funcargs doc , use the term "factory" instead of "provider"
|
||||
- added a new talk/tutorial doc page
|
||||
- better download page
|
||||
- better plugin docstrings
|
||||
- added new plugins page and automatic doc generation script
|
||||
|
||||
* fixed teardown problem related to partially failing funcarg setups
|
||||
(thanks MrTopf for reporting), "pytest_runtest_teardown" is now
|
||||
always invoked even if the "pytest_runtest_setup" failed.
|
||||
|
||||
* tweaked doctest output for docstrings in py modules,
|
||||
thanks Radomir.
|
||||
|
||||
Changes between 1.0.0b3 and 1.0.0b7
|
||||
=============================================
|
||||
|
||||
* renamed py.test.xfail back to py.test.mark.xfail to avoid
|
||||
two ways to decorate for xfail
|
||||
|
||||
* re-added py.test.mark decorator for setting keywords on functions
|
||||
(it was actually documented so removing it was not nice)
|
||||
|
||||
* remove scope-argument from request.addfinalizer() because
|
||||
request.cached_setup has the scope arg. TOOWTDI.
|
||||
|
||||
* perform setup finalization before reporting failures
|
||||
|
||||
* apply modified patches from Andreas Kloeckner to allow
|
||||
test functions to have no func_code (#22) and to make
|
||||
"-k" and function keywords work (#20)
|
||||
|
||||
* apply patch from Daniel Peolzleithner (issue #23)
|
||||
|
||||
* resolve issue #18, multiprocessing.Manager() and
|
||||
redirection clash
|
||||
|
||||
* make __name__ == "__channelexec__" for remote_exec code
|
||||
|
||||
Changes between 1.0.0b1 and 1.0.0b3
|
||||
=============================================
|
||||
|
||||
* plugin classes are removed: one now defines
|
||||
hooks directly in conftest.py or global pytest_*.py
|
||||
files.
|
||||
|
||||
* added new pytest_namespace(config) hook that allows
|
||||
to inject helpers directly to the py.test.* namespace.
|
||||
|
||||
* documented and refined many hooks
|
||||
|
||||
* added new style of generative tests via
|
||||
pytest_generate_tests hook that integrates
|
||||
well with function arguments.
|
||||
|
||||
|
||||
Changes between 0.9.2 and 1.0.0b1
|
||||
=============================================
|
||||
|
||||
* introduced new "funcarg" setup method,
|
||||
see doc/test/funcarg.txt
|
||||
|
||||
* introduced plugin architecuture and many
|
||||
new py.test plugins, see
|
||||
doc/test/plugins.txt
|
||||
|
||||
* teardown_method is now guaranteed to get
|
||||
called after a test method has run.
|
||||
|
||||
* new method: py.test.importorskip(mod,minversion)
|
||||
will either import or call py.test.skip()
|
||||
|
||||
* completely revised internal py.test architecture
|
||||
|
||||
* new py.process.ForkedFunc object allowing to
|
||||
fork execution of a function to a sub process
|
||||
and getting a result back.
|
||||
|
||||
XXX lots of things missing here XXX
|
||||
|
||||
Changes between 0.9.1 and 0.9.2
|
||||
===============================
|
||||
|
||||
* refined installation and metadata, created new setup.py,
|
||||
now based on setuptools/ez_setup (thanks to Ralf Schmitt
|
||||
for his support).
|
||||
|
||||
* improved the way of making py.* scripts available in
|
||||
windows environments, they are now added to the
|
||||
Scripts directory as ".cmd" files.
|
||||
|
||||
* py.path.svnwc.status() now is more complete and
|
||||
uses xml output from the 'svn' command if available
|
||||
(Guido Wesdorp)
|
||||
|
||||
* fix for py.path.svn* to work with svn 1.5
|
||||
(Chris Lamb)
|
||||
|
||||
* fix path.relto(otherpath) method on windows to
|
||||
use normcase for checking if a path is relative.
|
||||
|
||||
* py.test's traceback is better parseable from editors
|
||||
(follows the filenames:LINENO: MSG convention)
|
||||
(thanks to Osmo Salomaa)
|
||||
|
||||
* fix to javascript-generation, "py.test --runbrowser"
|
||||
should work more reliably now
|
||||
|
||||
* removed previously accidentally added
|
||||
py.test.broken and py.test.notimplemented helpers.
|
||||
|
||||
* there now is a py.__version__ attribute
|
||||
|
||||
Changes between 0.9.0 and 0.9.1
|
||||
===============================
|
||||
|
||||
This is a fairly complete list of changes between 0.9 and 0.9.1, which can
|
||||
serve as a reference for developers.
|
||||
|
||||
* allowing + signs in py.path.svn urls [39106]
|
||||
* fixed support for Failed exceptions without excinfo in py.test [39340]
|
||||
* added support for killing processes for Windows (as well as platforms that
|
||||
support os.kill) in py.misc.killproc [39655]
|
||||
* added setup/teardown for generative tests to py.test [40702]
|
||||
* added detection of FAILED TO LOAD MODULE to py.test [40703, 40738, 40739]
|
||||
* fixed problem with calling .remove() on wcpaths of non-versioned files in
|
||||
py.path [44248]
|
||||
* fixed some import and inheritance issues in py.test [41480, 44648, 44655]
|
||||
* fail to run greenlet tests when pypy is available, but without stackless
|
||||
[45294]
|
||||
* small fixes in rsession tests [45295]
|
||||
* fixed issue with 2.5 type representations in py.test [45483, 45484]
|
||||
* made that internal reporting issues displaying is done atomically in py.test
|
||||
[45518]
|
||||
* made that non-existing files are igored by the py.lookup script [45519]
|
||||
* improved exception name creation in py.test [45535]
|
||||
* made that less threads are used in execnet [merge in 45539]
|
||||
* removed lock required for atomical reporting issue displaying in py.test
|
||||
[45545]
|
||||
* removed globals from execnet [45541, 45547]
|
||||
* refactored cleanup mechanics, made that setDaemon is set to 1 to make atexit
|
||||
get called in 2.5 (py.execnet) [45548]
|
||||
* fixed bug in joining threads in py.execnet's servemain [45549]
|
||||
* refactored py.test.rsession tests to not rely on exact output format anymore
|
||||
[45646]
|
||||
* using repr() on test outcome [45647]
|
||||
* added 'Reason' classes for py.test.skip() [45648, 45649]
|
||||
* killed some unnecessary sanity check in py.test.collect [45655]
|
||||
* avoid using os.tmpfile() in py.io.fdcapture because on Windows it's only
|
||||
usable by Administrators [45901]
|
||||
* added support for locking and non-recursive commits to py.path.svnwc [45994]
|
||||
* locking files in py.execnet to prevent CPython from segfaulting [46010]
|
||||
* added export() method to py.path.svnurl
|
||||
* fixed -d -x in py.test [47277]
|
||||
* fixed argument concatenation problem in py.path.svnwc [49423]
|
||||
* restore py.test behaviour that it exits with code 1 when there are failures
|
||||
[49974]
|
||||
* don't fail on html files that don't have an accompanying .txt file [50606]
|
||||
* fixed 'utestconvert.py < input' [50645]
|
||||
* small fix for code indentation in py.code.source [50755]
|
||||
* fix _docgen.py documentation building [51285]
|
||||
* improved checks for source representation of code blocks in py.test [51292]
|
||||
* added support for passing authentication to py.path.svn* objects [52000,
|
||||
52001]
|
||||
* removed sorted() call for py.apigen tests in favour of [].sort() to support
|
||||
Python 2.3 [52481]
|
426
MANIFEST
426
MANIFEST
|
@ -1,426 +0,0 @@
|
|||
CHANGELOG
|
||||
LICENSE
|
||||
MANIFEST
|
||||
README.txt
|
||||
_findpy.py
|
||||
bin-for-dist/all-plat.sh
|
||||
bin-for-dist/gendoc.py
|
||||
bin-for-dist/genscripts.py
|
||||
bin-for-dist/gensetup.py
|
||||
bin-for-dist/makepluginlist.py
|
||||
doc/announce/release-0.9.0.txt
|
||||
doc/announce/release-0.9.2.txt
|
||||
doc/announce/release-1.0.0.txt
|
||||
doc/announce/release-1.0.1.txt
|
||||
doc/announce/releases.txt
|
||||
doc/bin.txt
|
||||
doc/code.txt
|
||||
doc/confrest.py
|
||||
doc/conftest.py
|
||||
doc/contact.txt
|
||||
doc/download.txt
|
||||
doc/execnet.txt
|
||||
doc/faq.txt
|
||||
doc/img/pylib.png
|
||||
doc/index.txt
|
||||
doc/io.txt
|
||||
doc/log.txt
|
||||
doc/misc.txt
|
||||
doc/path.txt
|
||||
doc/style.css
|
||||
doc/test/attic.txt
|
||||
doc/test/config.html
|
||||
doc/test/customize.txt
|
||||
doc/test/dist.txt
|
||||
doc/test/examples.txt
|
||||
doc/test/extend.html
|
||||
doc/test/features.txt
|
||||
doc/test/funcargs.txt
|
||||
doc/test/index.txt
|
||||
doc/test/mission.txt
|
||||
doc/test/plugin/capture.txt
|
||||
doc/test/plugin/doctest.txt
|
||||
doc/test/plugin/figleaf.txt
|
||||
doc/test/plugin/helpconfig.txt
|
||||
doc/test/plugin/hooklog.txt
|
||||
doc/test/plugin/hookspec.txt
|
||||
doc/test/plugin/index.txt
|
||||
doc/test/plugin/keyword.txt
|
||||
doc/test/plugin/links.txt
|
||||
doc/test/plugin/monkeypatch.txt
|
||||
doc/test/plugin/nose.txt
|
||||
doc/test/plugin/oejskit.txt
|
||||
doc/test/plugin/pastebin.txt
|
||||
doc/test/plugin/pdb.txt
|
||||
doc/test/plugin/recwarn.txt
|
||||
doc/test/plugin/restdoc.txt
|
||||
doc/test/plugin/resultlog.txt
|
||||
doc/test/plugin/terminal.txt
|
||||
doc/test/plugin/unittest.txt
|
||||
doc/test/plugin/xfail.txt
|
||||
doc/test/quickstart.txt
|
||||
doc/test/talks.txt
|
||||
doc/test/test.html
|
||||
doc/test/xunit_setup.txt
|
||||
doc/xml.txt
|
||||
example/assertion/failure_demo.py
|
||||
example/assertion/test_failures.py
|
||||
example/assertion/test_setup_flow_example.py
|
||||
example/execnet/popen_read_multiple.py
|
||||
example/execnet/redirect_remote_output.py
|
||||
example/execnet/svn-sync-repo.py
|
||||
example/execnet/sysinfo.py
|
||||
example/funcarg/conftest.py
|
||||
example/funcarg/costlysetup/conftest.py
|
||||
example/funcarg/costlysetup/sub1/__init__.py
|
||||
example/funcarg/costlysetup/sub1/test_quick.py
|
||||
example/funcarg/costlysetup/sub2/__init__.py
|
||||
example/funcarg/costlysetup/sub2/test_two.py
|
||||
example/funcarg/mysetup/__init__.py
|
||||
example/funcarg/mysetup/conftest.py
|
||||
example/funcarg/mysetup/myapp.py
|
||||
example/funcarg/mysetup/test_sample.py
|
||||
example/funcarg/mysetup2/__init__.py
|
||||
example/funcarg/mysetup2/conftest.py
|
||||
example/funcarg/mysetup2/myapp.py
|
||||
example/funcarg/mysetup2/test_sample.py
|
||||
example/funcarg/mysetup2/test_ssh.py
|
||||
example/funcarg/parametrize/test_parametrize.py
|
||||
example/funcarg/parametrize/test_parametrize2.py
|
||||
example/funcarg/parametrize/test_parametrize3.py
|
||||
example/funcarg/test_simpleprovider.py
|
||||
example/genhtml.py
|
||||
example/genhtmlcss.py
|
||||
example/genxml.py
|
||||
py/LICENSE
|
||||
py/__init__.py
|
||||
py/_com.py
|
||||
py/bin/_findpy.py
|
||||
py/bin/py.cleanup
|
||||
py/bin/py.countloc
|
||||
py/bin/py.lookup
|
||||
py/bin/py.rest
|
||||
py/bin/py.svnwcrevert
|
||||
py/bin/py.test
|
||||
py/bin/py.which
|
||||
py/bin/win32/py.cleanup.cmd
|
||||
py/bin/win32/py.countloc.cmd
|
||||
py/bin/win32/py.lookup.cmd
|
||||
py/bin/win32/py.rest.cmd
|
||||
py/bin/win32/py.svnwcrevert.cmd
|
||||
py/bin/win32/py.test.cmd
|
||||
py/bin/win32/py.which.cmd
|
||||
py/builtin/__init__.py
|
||||
py/builtin/enumerate.py
|
||||
py/builtin/exception.py
|
||||
py/builtin/reversed.py
|
||||
py/builtin/set.py
|
||||
py/builtin/sorted.py
|
||||
py/builtin/testing/__init__.py
|
||||
py/builtin/testing/test_enumerate.py
|
||||
py/builtin/testing/test_exception.py
|
||||
py/builtin/testing/test_reversed.py
|
||||
py/builtin/testing/test_set.py
|
||||
py/builtin/testing/test_sorted.py
|
||||
py/cmdline/__init__.py
|
||||
py/cmdline/pycleanup.py
|
||||
py/cmdline/pycountloc.py
|
||||
py/cmdline/pylookup.py
|
||||
py/cmdline/pyrest.py
|
||||
py/cmdline/pysvnwcrevert.py
|
||||
py/cmdline/pytest.py
|
||||
py/cmdline/pywhich.py
|
||||
py/cmdline/testing/__init__.py
|
||||
py/cmdline/testing/test_cmdline.py
|
||||
py/cmdline/testing/test_generic.py
|
||||
py/code/__init__.py
|
||||
py/code/code.py
|
||||
py/code/excinfo.py
|
||||
py/code/frame.py
|
||||
py/code/safe_repr.py
|
||||
py/code/source.py
|
||||
py/code/testing/__init__.py
|
||||
py/code/testing/test_code.py
|
||||
py/code/testing/test_excinfo.py
|
||||
py/code/testing/test_frame.py
|
||||
py/code/testing/test_safe_repr.py
|
||||
py/code/testing/test_source.py
|
||||
py/code/traceback2.py
|
||||
py/compat/LICENSE
|
||||
py/compat/__init__.py
|
||||
py/compat/conftest.py
|
||||
py/compat/doctest.py
|
||||
py/compat/optparse.py
|
||||
py/compat/subprocess.py
|
||||
py/compat/testing/__init__.py
|
||||
py/compat/testing/test_doctest.py
|
||||
py/compat/testing/test_doctest.txt
|
||||
py/compat/testing/test_doctest2.py
|
||||
py/compat/testing/test_doctest2.txt
|
||||
py/compat/testing/test_optparse.py
|
||||
py/compat/testing/test_subprocess.py
|
||||
py/compat/testing/test_textwrap.py
|
||||
py/compat/textwrap.py
|
||||
py/conftest.py
|
||||
py/env.cmd
|
||||
py/env.py
|
||||
py/execnet/NOTES
|
||||
py/execnet/__init__.py
|
||||
py/execnet/channel.py
|
||||
py/execnet/gateway.py
|
||||
py/execnet/gwmanage.py
|
||||
py/execnet/improve-remote-tracebacks.txt
|
||||
py/execnet/inputoutput.py
|
||||
py/execnet/message.py
|
||||
py/execnet/multi.py
|
||||
py/execnet/register.py
|
||||
py/execnet/rsync.py
|
||||
py/execnet/rsync_remote.py
|
||||
py/execnet/script/__init__.py
|
||||
py/execnet/script/loop_socketserver.py
|
||||
py/execnet/script/quitserver.py
|
||||
py/execnet/script/shell.py
|
||||
py/execnet/script/socketserver.py
|
||||
py/execnet/script/socketserverservice.py
|
||||
py/execnet/script/xx.py
|
||||
py/execnet/testing/__init__.py
|
||||
py/execnet/testing/conftest.py
|
||||
py/execnet/testing/test_event.py
|
||||
py/execnet/testing/test_gateway.py
|
||||
py/execnet/testing/test_gwmanage.py
|
||||
py/execnet/testing/test_multi.py
|
||||
py/execnet/testing/test_pickle.py
|
||||
py/execnet/testing/test_rsync.py
|
||||
py/execnet/testing/test_xspec.py
|
||||
py/execnet/xspec.py
|
||||
py/initpkg.py
|
||||
py/io/__init__.py
|
||||
py/io/dupfile.py
|
||||
py/io/fdcapture.py
|
||||
py/io/stdcapture.py
|
||||
py/io/terminalwriter.py
|
||||
py/io/testing/__init__.py
|
||||
py/io/testing/test_dupfile.py
|
||||
py/io/testing/test_fdcapture.py
|
||||
py/io/testing/test_stdcapture.py
|
||||
py/io/testing/test_terminalwriter.py
|
||||
py/log/__init__.py
|
||||
py/log/consumer.py
|
||||
py/log/logger.py
|
||||
py/log/producer.py
|
||||
py/log/testing/__init__.py
|
||||
py/log/testing/test_log.py
|
||||
py/log/testing/test_logger.py
|
||||
py/log/testing/test_warning.py
|
||||
py/log/warning.py
|
||||
py/magic/__init__.py
|
||||
py/magic/assertion.py
|
||||
py/magic/autopath.py
|
||||
py/magic/exprinfo.py
|
||||
py/magic/invoke.py
|
||||
py/magic/patch.py
|
||||
py/magic/testing/__init__.py
|
||||
py/magic/testing/test_assertion.py
|
||||
py/magic/testing/test_autopath.py
|
||||
py/magic/testing/test_exprinfo.py
|
||||
py/magic/testing/test_invoke.py
|
||||
py/magic/testing/test_patch.py
|
||||
py/magic/testing/test_viewtype.py
|
||||
py/magic/viewtype.py
|
||||
py/misc/__init__.py
|
||||
py/misc/_dist.py
|
||||
py/misc/buildcmodule.py
|
||||
py/misc/cache.py
|
||||
py/misc/cmdline/__init__.py
|
||||
py/misc/cmdline/countloc.py
|
||||
py/misc/difftime.py
|
||||
py/misc/dynpkg.py
|
||||
py/misc/error.py
|
||||
py/misc/findmissingdocstrings.py
|
||||
py/misc/rest.py
|
||||
py/misc/std.py
|
||||
py/misc/svnlook.py
|
||||
py/misc/terminal_helper.py
|
||||
py/misc/testing/__init__.py
|
||||
py/misc/testing/data/svnlookrepo.dump
|
||||
py/misc/testing/test_api.py
|
||||
py/misc/testing/test_cache.py
|
||||
py/misc/testing/test_com.py
|
||||
py/misc/testing/test_error.py
|
||||
py/misc/testing/test_initpkg.py
|
||||
py/misc/testing/test_install.py
|
||||
py/misc/testing/test_std.py
|
||||
py/misc/testing/test_svnlook.py
|
||||
py/misc/testing/test_terminal.py
|
||||
py/path/__init__.py
|
||||
py/path/common.py
|
||||
py/path/gateway/TODO.txt
|
||||
py/path/gateway/__init__.py
|
||||
py/path/gateway/channeltest.py
|
||||
py/path/gateway/channeltest2.py
|
||||
py/path/gateway/remotepath.py
|
||||
py/path/local/__init__.py
|
||||
py/path/local/common.py
|
||||
py/path/local/local.py
|
||||
py/path/local/posix.py
|
||||
py/path/local/testing/__init__.py
|
||||
py/path/local/testing/test_local.py
|
||||
py/path/local/testing/test_posix.py
|
||||
py/path/local/testing/test_win.py
|
||||
py/path/local/win.py
|
||||
py/path/svn/__init__.py
|
||||
py/path/svn/cache.py
|
||||
py/path/svn/quoting.txt
|
||||
py/path/svn/svncommon.py
|
||||
py/path/svn/testing/__init__.py
|
||||
py/path/svn/testing/repotest.dump
|
||||
py/path/svn/testing/svntestbase.py
|
||||
py/path/svn/testing/test_auth.py
|
||||
py/path/svn/testing/test_test_repo.py
|
||||
py/path/svn/testing/test_urlcommand.py
|
||||
py/path/svn/testing/test_wccommand.py
|
||||
py/path/svn/urlcommand.py
|
||||
py/path/svn/wccommand.py
|
||||
py/path/testing/__init__.py
|
||||
py/path/testing/common.py
|
||||
py/path/testing/fscommon.py
|
||||
py/path/testing/test_api.py
|
||||
py/process/__init__.py
|
||||
py/process/cmdexec.py
|
||||
py/process/forkedfunc.py
|
||||
py/process/killproc.py
|
||||
py/process/testing/__init__.py
|
||||
py/process/testing/test_cmdexec.py
|
||||
py/process/testing/test_forkedfunc.py
|
||||
py/process/testing/test_killproc.py
|
||||
py/rest/__init__.py
|
||||
py/rest/convert.py
|
||||
py/rest/directive.py
|
||||
py/rest/latex.py
|
||||
py/rest/rest.sty.template
|
||||
py/rest/rst.py
|
||||
py/rest/testing/__init__.py
|
||||
py/rest/testing/data/example.rst2pdfconfig
|
||||
py/rest/testing/data/example1.dot
|
||||
py/rest/testing/data/formula.txt
|
||||
py/rest/testing/data/formula1.txt
|
||||
py/rest/testing/data/graphviz.txt
|
||||
py/rest/testing/data/part1.txt
|
||||
py/rest/testing/data/part2.txt
|
||||
py/rest/testing/data/tocdepth.rst2pdfconfig
|
||||
py/rest/testing/setup.py
|
||||
py/rest/testing/test_convert.py
|
||||
py/rest/testing/test_directive.py
|
||||
py/rest/testing/test_htmlrest.py
|
||||
py/rest/testing/test_rst.py
|
||||
py/rest/testing/test_rst2pdf.py
|
||||
py/rest/testing/test_transform.py
|
||||
py/rest/transform.py
|
||||
py/test/__init__.py
|
||||
py/test/cmdline.py
|
||||
py/test/collect.py
|
||||
py/test/compat.py
|
||||
py/test/config.py
|
||||
py/test/conftesthandle.py
|
||||
py/test/defaultconftest.py
|
||||
py/test/dist/__init__.py
|
||||
py/test/dist/dsession.py
|
||||
py/test/dist/mypickle.py
|
||||
py/test/dist/nodemanage.py
|
||||
py/test/dist/testing/__init__.py
|
||||
py/test/dist/testing/acceptance_test.py
|
||||
py/test/dist/testing/test_dsession.py
|
||||
py/test/dist/testing/test_mypickle.py
|
||||
py/test/dist/testing/test_nodemanage.py
|
||||
py/test/dist/testing/test_txnode.py
|
||||
py/test/dist/txnode.py
|
||||
py/test/funcargs.py
|
||||
py/test/looponfail/__init__.py
|
||||
py/test/looponfail/remote.py
|
||||
py/test/looponfail/testing/__init__.py
|
||||
py/test/looponfail/testing/test_remote.py
|
||||
py/test/looponfail/testing/test_util.py
|
||||
py/test/looponfail/util.py
|
||||
py/test/outcome.py
|
||||
py/test/parseopt.py
|
||||
py/test/plugin/__init__.py
|
||||
py/test/plugin/conftest.py
|
||||
py/test/plugin/hookspec.py
|
||||
py/test/plugin/pytest__pytest.py
|
||||
py/test/plugin/pytest_capture.py
|
||||
py/test/plugin/pytest_default.py
|
||||
py/test/plugin/pytest_doctest.py
|
||||
py/test/plugin/pytest_execnetcleanup.py
|
||||
py/test/plugin/pytest_figleaf.py
|
||||
py/test/plugin/pytest_helpconfig.py
|
||||
py/test/plugin/pytest_hooklog.py
|
||||
py/test/plugin/pytest_keyword.py
|
||||
py/test/plugin/pytest_monkeypatch.py
|
||||
py/test/plugin/pytest_nose.py
|
||||
py/test/plugin/pytest_pastebin.py
|
||||
py/test/plugin/pytest_pdb.py
|
||||
py/test/plugin/pytest_pylint.py
|
||||
py/test/plugin/pytest_pytester.py
|
||||
py/test/plugin/pytest_recwarn.py
|
||||
py/test/plugin/pytest_restdoc.py
|
||||
py/test/plugin/pytest_resultlog.py
|
||||
py/test/plugin/pytest_runner.py
|
||||
py/test/plugin/pytest_terminal.py
|
||||
py/test/plugin/pytest_tmpdir.py
|
||||
py/test/plugin/pytest_unittest.py
|
||||
py/test/plugin/pytest_xfail.py
|
||||
py/test/plugin/test_pytest_capture.py
|
||||
py/test/plugin/test_pytest_helpconfig.py
|
||||
py/test/plugin/test_pytest_nose.py
|
||||
py/test/plugin/test_pytest_runner.py
|
||||
py/test/plugin/test_pytest_runner_xunit.py
|
||||
py/test/plugin/test_pytest_terminal.py
|
||||
py/test/pluginmanager.py
|
||||
py/test/pycollect.py
|
||||
py/test/session.py
|
||||
py/test/testing/__init__.py
|
||||
py/test/testing/acceptance_test.py
|
||||
py/test/testing/conftest.py
|
||||
py/test/testing/import_test/package/__init__.py
|
||||
py/test/testing/import_test/package/absolute_import_shared_lib.py
|
||||
py/test/testing/import_test/package/module_that_imports_shared_lib.py
|
||||
py/test/testing/import_test/package/shared_lib.py
|
||||
py/test/testing/import_test/package/test_import.py
|
||||
py/test/testing/test_collect.py
|
||||
py/test/testing/test_compat.py
|
||||
py/test/testing/test_config.py
|
||||
py/test/testing/test_conftesthandle.py
|
||||
py/test/testing/test_deprecated_api.py
|
||||
py/test/testing/test_funcargs.py
|
||||
py/test/testing/test_genitems.py
|
||||
py/test/testing/test_outcome.py
|
||||
py/test/testing/test_parseopt.py
|
||||
py/test/testing/test_pickling.py
|
||||
py/test/testing/test_pluginmanager.py
|
||||
py/test/testing/test_pycollect.py
|
||||
py/test/testing/test_recording.py
|
||||
py/test/testing/test_session.py
|
||||
py/test/testing/test_traceback.py
|
||||
py/test/web/__init__.py
|
||||
py/test/web/exception.py
|
||||
py/test/web/post_multipart.py
|
||||
py/test/web/webcheck.py
|
||||
py/thread/__init__.py
|
||||
py/thread/io.py
|
||||
py/thread/pool.py
|
||||
py/thread/testing/__init__.py
|
||||
py/thread/testing/test_io.py
|
||||
py/thread/testing/test_pool.py
|
||||
py/tool/__init__.py
|
||||
py/tool/testing/__init__.py
|
||||
py/tool/testing/test_utestconvert.py
|
||||
py/tool/utestconvert.py
|
||||
py/xmlobj/__init__.py
|
||||
py/xmlobj/html.py
|
||||
py/xmlobj/misc.py
|
||||
py/xmlobj/testing/__init__.py
|
||||
py/xmlobj/testing/test_html.py
|
||||
py/xmlobj/testing/test_xml.py
|
||||
py/xmlobj/visit.py
|
||||
py/xmlobj/xml.py
|
||||
setup.py
|
|
@ -0,0 +1,16 @@
|
|||
include CHANGELOG
|
||||
include README.txt
|
||||
include setup.py
|
||||
include LICENSE
|
||||
include py/LICENSE
|
||||
include py/path/svn/testing/repotest.dump
|
||||
exclude *.orig
|
||||
exclude *.rej
|
||||
prune .svn
|
||||
prune .hg
|
||||
graft doc
|
||||
graft contrib
|
||||
graft example
|
||||
graft py/bin
|
||||
graft py/rest/testing/data
|
||||
graft py/misc/testing/data
|
39
_findpy.py
39
_findpy.py
|
@ -1,39 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
#
|
||||
# try to find and import a nearby version of the 'py' package.
|
||||
# otherwise use the system global default
|
||||
# XXX turn this into a developer-only thing?
|
||||
#
|
||||
import sys
|
||||
import os
|
||||
from os.path import dirname as opd, exists, join, basename, abspath
|
||||
|
||||
def searchpy(current):
|
||||
while 1:
|
||||
last = current
|
||||
initpy = join(current, '__init__.py')
|
||||
if not exists(initpy):
|
||||
pydir = join(current, 'py')
|
||||
# recognize py-package and ensure it is importable
|
||||
if exists(pydir) and exists(join(pydir, '__init__.py')):
|
||||
#for p in sys.path:
|
||||
# if p == current:
|
||||
# return True
|
||||
if current != sys.path[0]: # if we are already first, then ok
|
||||
print >>sys.stderr, "inserting into sys.path:", current
|
||||
sys.path.insert(0, current)
|
||||
return True
|
||||
current = opd(current)
|
||||
if last == current:
|
||||
return False
|
||||
|
||||
if not searchpy(abspath(os.curdir)):
|
||||
if not searchpy(opd(abspath(sys.argv[0]))):
|
||||
if not searchpy(opd(__file__)):
|
||||
pass # let's hope it is just on sys.path
|
||||
|
||||
import py
|
||||
|
||||
if __name__ == '__main__':
|
||||
print "py lib is at", py.__file__
|
|
@ -317,7 +317,7 @@ class SetupWriter(object):
|
|||
print "wrote", targetfile
|
||||
|
||||
def write_all(self):
|
||||
self.write_manifest()
|
||||
#self.write_manifest()
|
||||
self.write_setup()
|
||||
|
||||
def parseargs():
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
import py
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
|
||||
#
|
||||
# experimental funcargs for venv/install-tests
|
||||
#
|
||||
|
||||
pytest_plugins = 'pytest_pytester',
|
||||
|
||||
def pytest_funcarg__venv(request):
|
||||
p = request.config.mktemp(request.function.__name__, numbered=True)
|
||||
venv = VirtualEnv(str(p))
|
||||
return venv
|
||||
|
||||
def pytest_funcarg__py_setup(request):
|
||||
testdir = request.getfuncargvalue('testdir')
|
||||
rootdir = py.path.local(py.__file__).dirpath().dirpath()
|
||||
setup = rootdir.join('setup.py')
|
||||
if not setup.check():
|
||||
py.test.skip("not found: %r" % setup)
|
||||
return SetupBuilder(setup, testdir.tmpdir)
|
||||
|
||||
class SetupBuilder:
|
||||
def __init__(self, setup_path, tmpdir):
|
||||
self.setup_path = setup_path
|
||||
self.tmpdir = tmpdir
|
||||
assert setup_path.check()
|
||||
|
||||
def make_sdist(self, destdir=None):
|
||||
temp = self.tmpdir.mkdir('dist')
|
||||
args = ['python', 'setup.py', 'sdist', '--dist-dir', str(temp)]
|
||||
old = self.setup_path.dirpath().chdir()
|
||||
try:
|
||||
subcall(args)
|
||||
finally:
|
||||
old.chdir()
|
||||
l = temp.listdir('py-*')
|
||||
assert len(l) == 1
|
||||
sdist = l[0]
|
||||
if destdir is None:
|
||||
destdir = self.setup_path.dirpath('build')
|
||||
assert destdir.check()
|
||||
else:
|
||||
destdir = py.path.local(destdir)
|
||||
target = destdir.join(sdist.basename)
|
||||
sdist.copy(target)
|
||||
return target
|
||||
|
||||
def subcall(args):
|
||||
if hasattr(subprocess, 'check_call'):
|
||||
subprocess.check_call(args)
|
||||
else:
|
||||
subprocess.call(args)
|
||||
# code taken from Ronny Pfannenschmidt's virtualenvmanager
|
||||
|
||||
class VirtualEnv(object):
|
||||
def __init__(self, path):
|
||||
#XXX: supply the python executable
|
||||
self.path = path
|
||||
|
||||
def __repr__(self):
|
||||
return "<VirtualEnv at %r>" %(self.path)
|
||||
|
||||
def _cmd(self, name):
|
||||
return os.path.join(self.path, 'bin', name)
|
||||
|
||||
def ensure(self):
|
||||
if not os.path.exists(self._cmd('python')):
|
||||
self.create()
|
||||
|
||||
def create(self, sitepackages=False):
|
||||
args = ['virtualenv', self.path]
|
||||
if not sitepackages:
|
||||
args.append('--no-site-packages')
|
||||
subcall(args)
|
||||
|
||||
def makegateway(self):
|
||||
python = self._cmd('python')
|
||||
return py.execnet.makegateway("popen//python=%s" %(python,))
|
||||
|
||||
def pcall(self, cmd, *args, **kw):
|
||||
self.ensure()
|
||||
return subprocess.call([
|
||||
self._cmd(cmd)
|
||||
] + list(args),
|
||||
**kw)
|
||||
|
||||
|
||||
def easy_install(self, *packages, **kw):
|
||||
args = []
|
||||
if 'index' in kw:
|
||||
index = kw['index']
|
||||
if isinstance(index, (list, tuple)):
|
||||
for i in index:
|
||||
args.extend(['-i', i])
|
||||
else:
|
||||
args.extend(['-i', index])
|
||||
|
||||
args.extend(packages)
|
||||
self.pcall('easy_install', *args)
|
||||
|
||||
|
||||
def test_make_sdist_and_run_it(py_setup, venv):
|
||||
sdist = py_setup.make_sdist(venv.path)
|
||||
venv.easy_install(str(sdist))
|
||||
gw = venv.makegateway()
|
||||
ch = gw.remote_exec("import py ; channel.send(py.__version__)")
|
||||
version = ch.receive()
|
||||
assert version == py.__version__
|
|
@ -0,0 +1,5 @@
|
|||
1.0.2: packaging fixes
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
this release is purely a release for fixing packaging issues.
|
||||
|
|
@ -1 +0,0 @@
|
|||
../CHANGELOG
|
|
@ -0,0 +1,262 @@
|
|||
Changes between 1.0.1 and 1.0.2
|
||||
=====================================
|
||||
|
||||
fixing packaging issues: adding doc, examples and contrib dirs
|
||||
to tarball.
|
||||
|
||||
|
||||
Changes between 1.0.0 and 1.0.1
|
||||
=====================================
|
||||
|
||||
* added a 'pytest_nose' plugin which handles nose.SkipTest,
|
||||
nose-style function/method/generator setup/teardown and
|
||||
tries to report functions correctly.
|
||||
|
||||
* capturing of unicode writes or encoded strings to sys.stdout/err
|
||||
work better, also terminalwriting was adapted and somewhat
|
||||
unified between windows and linux.
|
||||
|
||||
* improved documentation layout and content a lot
|
||||
|
||||
* added a "--help-config" option to show conftest.py / ENV-var names for
|
||||
all longopt cmdline options, and some special conftest.py variables.
|
||||
renamed 'conf_capture' conftest setting to 'option_capture' accordingly.
|
||||
|
||||
* fix issue #27: better reporting on non-collectable items given on commandline
|
||||
(e.g. pyc files)
|
||||
|
||||
* fix issue #33: added --version flag (thanks Benjamin Peterson)
|
||||
|
||||
* fix issue #32: adding support for "incomplete" paths to wcpath.status()
|
||||
|
||||
* "Test" prefixed classes are *not* collected by default anymore if they
|
||||
have an __init__ method
|
||||
|
||||
* monkeypatch setenv() now accepts a "prepend" parameter
|
||||
|
||||
* improved reporting of collection error tracebacks
|
||||
|
||||
* simplified multicall mechanism and plugin architecture,
|
||||
renamed some internal methods and argnames
|
||||
|
||||
Changes between 1.0.0b9 and 1.0.0
|
||||
=====================================
|
||||
|
||||
* more terse reporting try to show filesystem path relatively to current dir
|
||||
* improve xfail output a bit
|
||||
|
||||
Changes between 1.0.0b8 and 1.0.0b9
|
||||
=====================================
|
||||
|
||||
* cleanly handle and report final teardown of test setup
|
||||
|
||||
* fix svn-1.6 compat issue with py.path.svnwc().versioned()
|
||||
(thanks Wouter Vanden Hove)
|
||||
|
||||
* setup/teardown or collection problems now show as ERRORs
|
||||
or with big "E"'s in the progress lines. they are reported
|
||||
and counted separately.
|
||||
|
||||
* dist-testing: properly handle test items that get locally
|
||||
collected but cannot be collected on the remote side - often
|
||||
due to platform/dependency reasons
|
||||
|
||||
* simplified py.test.mark API - see keyword plugin documentation
|
||||
|
||||
* integrate better with logging: capturing now by default captures
|
||||
test functions and their immediate setup/teardown in a single stream
|
||||
|
||||
* capsys and capfd funcargs now have a readouterr() and a close() method
|
||||
(underlyingly py.io.StdCapture/FD objects are used which grew a
|
||||
readouterr() method as well to return snapshots of captured out/err)
|
||||
|
||||
* make assert-reinterpretation work better with comparisons not
|
||||
returning bools (reported with numpy from thanks maciej fijalkowski)
|
||||
|
||||
* reworked per-test output capturing into the pytest_iocapture.py plugin
|
||||
and thus removed capturing code from config object
|
||||
|
||||
* item.repr_failure(excinfo) instead of item.repr_failure(excinfo, outerr)
|
||||
|
||||
|
||||
Changes between 1.0.0b7 and 1.0.0b8
|
||||
=====================================
|
||||
|
||||
* pytest_unittest-plugin is now enabled by default
|
||||
|
||||
* introduced pytest_keyboardinterrupt hook and
|
||||
refined pytest_sessionfinish hooked, added tests.
|
||||
|
||||
* workaround a buggy logging module interaction ("closing already closed
|
||||
files"). Thanks to Sridhar Ratnakumar for triggering.
|
||||
|
||||
* if plugins use "py.test.importorskip" for importing
|
||||
a dependency only a warning will be issued instead
|
||||
of exiting the testing process.
|
||||
|
||||
* many improvements to docs:
|
||||
- refined funcargs doc , use the term "factory" instead of "provider"
|
||||
- added a new talk/tutorial doc page
|
||||
- better download page
|
||||
- better plugin docstrings
|
||||
- added new plugins page and automatic doc generation script
|
||||
|
||||
* fixed teardown problem related to partially failing funcarg setups
|
||||
(thanks MrTopf for reporting), "pytest_runtest_teardown" is now
|
||||
always invoked even if the "pytest_runtest_setup" failed.
|
||||
|
||||
* tweaked doctest output for docstrings in py modules,
|
||||
thanks Radomir.
|
||||
|
||||
Changes between 1.0.0b3 and 1.0.0b7
|
||||
=============================================
|
||||
|
||||
* renamed py.test.xfail back to py.test.mark.xfail to avoid
|
||||
two ways to decorate for xfail
|
||||
|
||||
* re-added py.test.mark decorator for setting keywords on functions
|
||||
(it was actually documented so removing it was not nice)
|
||||
|
||||
* remove scope-argument from request.addfinalizer() because
|
||||
request.cached_setup has the scope arg. TOOWTDI.
|
||||
|
||||
* perform setup finalization before reporting failures
|
||||
|
||||
* apply modified patches from Andreas Kloeckner to allow
|
||||
test functions to have no func_code (#22) and to make
|
||||
"-k" and function keywords work (#20)
|
||||
|
||||
* apply patch from Daniel Peolzleithner (issue #23)
|
||||
|
||||
* resolve issue #18, multiprocessing.Manager() and
|
||||
redirection clash
|
||||
|
||||
* make __name__ == "__channelexec__" for remote_exec code
|
||||
|
||||
Changes between 1.0.0b1 and 1.0.0b3
|
||||
=============================================
|
||||
|
||||
* plugin classes are removed: one now defines
|
||||
hooks directly in conftest.py or global pytest_*.py
|
||||
files.
|
||||
|
||||
* added new pytest_namespace(config) hook that allows
|
||||
to inject helpers directly to the py.test.* namespace.
|
||||
|
||||
* documented and refined many hooks
|
||||
|
||||
* added new style of generative tests via
|
||||
pytest_generate_tests hook that integrates
|
||||
well with function arguments.
|
||||
|
||||
|
||||
Changes between 0.9.2 and 1.0.0b1
|
||||
=============================================
|
||||
|
||||
* introduced new "funcarg" setup method,
|
||||
see doc/test/funcarg.txt
|
||||
|
||||
* introduced plugin architecuture and many
|
||||
new py.test plugins, see
|
||||
doc/test/plugins.txt
|
||||
|
||||
* teardown_method is now guaranteed to get
|
||||
called after a test method has run.
|
||||
|
||||
* new method: py.test.importorskip(mod,minversion)
|
||||
will either import or call py.test.skip()
|
||||
|
||||
* completely revised internal py.test architecture
|
||||
|
||||
* new py.process.ForkedFunc object allowing to
|
||||
fork execution of a function to a sub process
|
||||
and getting a result back.
|
||||
|
||||
XXX lots of things missing here XXX
|
||||
|
||||
Changes between 0.9.1 and 0.9.2
|
||||
===============================
|
||||
|
||||
* refined installation and metadata, created new setup.py,
|
||||
now based on setuptools/ez_setup (thanks to Ralf Schmitt
|
||||
for his support).
|
||||
|
||||
* improved the way of making py.* scripts available in
|
||||
windows environments, they are now added to the
|
||||
Scripts directory as ".cmd" files.
|
||||
|
||||
* py.path.svnwc.status() now is more complete and
|
||||
uses xml output from the 'svn' command if available
|
||||
(Guido Wesdorp)
|
||||
|
||||
* fix for py.path.svn* to work with svn 1.5
|
||||
(Chris Lamb)
|
||||
|
||||
* fix path.relto(otherpath) method on windows to
|
||||
use normcase for checking if a path is relative.
|
||||
|
||||
* py.test's traceback is better parseable from editors
|
||||
(follows the filenames:LINENO: MSG convention)
|
||||
(thanks to Osmo Salomaa)
|
||||
|
||||
* fix to javascript-generation, "py.test --runbrowser"
|
||||
should work more reliably now
|
||||
|
||||
* removed previously accidentally added
|
||||
py.test.broken and py.test.notimplemented helpers.
|
||||
|
||||
* there now is a py.__version__ attribute
|
||||
|
||||
Changes between 0.9.0 and 0.9.1
|
||||
===============================
|
||||
|
||||
This is a fairly complete list of changes between 0.9 and 0.9.1, which can
|
||||
serve as a reference for developers.
|
||||
|
||||
* allowing + signs in py.path.svn urls [39106]
|
||||
* fixed support for Failed exceptions without excinfo in py.test [39340]
|
||||
* added support for killing processes for Windows (as well as platforms that
|
||||
support os.kill) in py.misc.killproc [39655]
|
||||
* added setup/teardown for generative tests to py.test [40702]
|
||||
* added detection of FAILED TO LOAD MODULE to py.test [40703, 40738, 40739]
|
||||
* fixed problem with calling .remove() on wcpaths of non-versioned files in
|
||||
py.path [44248]
|
||||
* fixed some import and inheritance issues in py.test [41480, 44648, 44655]
|
||||
* fail to run greenlet tests when pypy is available, but without stackless
|
||||
[45294]
|
||||
* small fixes in rsession tests [45295]
|
||||
* fixed issue with 2.5 type representations in py.test [45483, 45484]
|
||||
* made that internal reporting issues displaying is done atomically in py.test
|
||||
[45518]
|
||||
* made that non-existing files are igored by the py.lookup script [45519]
|
||||
* improved exception name creation in py.test [45535]
|
||||
* made that less threads are used in execnet [merge in 45539]
|
||||
* removed lock required for atomical reporting issue displaying in py.test
|
||||
[45545]
|
||||
* removed globals from execnet [45541, 45547]
|
||||
* refactored cleanup mechanics, made that setDaemon is set to 1 to make atexit
|
||||
get called in 2.5 (py.execnet) [45548]
|
||||
* fixed bug in joining threads in py.execnet's servemain [45549]
|
||||
* refactored py.test.rsession tests to not rely on exact output format anymore
|
||||
[45646]
|
||||
* using repr() on test outcome [45647]
|
||||
* added 'Reason' classes for py.test.skip() [45648, 45649]
|
||||
* killed some unnecessary sanity check in py.test.collect [45655]
|
||||
* avoid using os.tmpfile() in py.io.fdcapture because on Windows it's only
|
||||
usable by Administrators [45901]
|
||||
* added support for locking and non-recursive commits to py.path.svnwc [45994]
|
||||
* locking files in py.execnet to prevent CPython from segfaulting [46010]
|
||||
* added export() method to py.path.svnurl
|
||||
* fixed -d -x in py.test [47277]
|
||||
* fixed argument concatenation problem in py.path.svnwc [49423]
|
||||
* restore py.test behaviour that it exits with code 1 when there are failures
|
||||
[49974]
|
||||
* don't fail on html files that don't have an accompanying .txt file [50606]
|
||||
* fixed 'utestconvert.py < input' [50645]
|
||||
* small fix for code indentation in py.code.source [50755]
|
||||
* fix _docgen.py documentation building [51285]
|
||||
* improved checks for source representation of code blocks in py.test [51292]
|
||||
* added support for passing authentication to py.path.svn* objects [52000,
|
||||
52001]
|
||||
* removed sorted() call for py.apigen tests in favour of [].sort() to support
|
||||
Python 2.3 [52481]
|
|
@ -20,7 +20,7 @@ For questions please check out http://pylib.org/contact.html
|
|||
from initpkg import initpkg
|
||||
trunk = None
|
||||
|
||||
version = trunk or "1.0.1"
|
||||
version = trunk or "1.0.2b1"
|
||||
|
||||
initpkg(__name__,
|
||||
description = "py.test and pylib: advanced testing tool and networking lib",
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
import py
|
||||
|
||||
def test_make_sdist_and_run_it(capfd, py_setup, venv):
|
||||
try:
|
||||
sdist = py_setup.make_sdist(venv.path)
|
||||
venv.easy_install(str(sdist))
|
||||
gw = venv.makegateway()
|
||||
ch = gw.remote_exec("import py ; channel.send(py.__version__)")
|
||||
version = ch.receive()
|
||||
assert version == py.__version__
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except:
|
||||
print capfd.readouterr()
|
||||
raise
|
||||
capfd.close()
|
|
@ -516,108 +516,3 @@ def test_testdir_runs_with_plugin(testdir):
|
|||
"*1 passed*"
|
||||
])
|
||||
|
||||
#
|
||||
# experimental funcargs for venv/install-tests
|
||||
#
|
||||
|
||||
def pytest_funcarg__venv(request):
|
||||
p = request.config.mktemp(request.function.__name__, numbered=True)
|
||||
venv = VirtualEnv(str(p))
|
||||
return venv
|
||||
|
||||
def pytest_funcarg__py_setup(request):
|
||||
rootdir = py.path.local(py.__file__).dirpath().dirpath()
|
||||
setup = rootdir.join('setup.py')
|
||||
if not setup.check():
|
||||
py.test.skip("not found: %r" % setup)
|
||||
return SetupBuilder(setup)
|
||||
|
||||
class SetupBuilder:
|
||||
def __init__(self, setup_path):
|
||||
self.setup_path = setup_path
|
||||
assert setup_path.check()
|
||||
|
||||
def make_sdist(self, destdir=None):
|
||||
temp = py.path.local.mkdtemp()
|
||||
try:
|
||||
args = ['python', str(self.setup_path), 'sdist',
|
||||
'--dist-dir', str(temp)]
|
||||
subcall(args)
|
||||
l = temp.listdir('py-*')
|
||||
assert len(l) == 1
|
||||
sdist = l[0]
|
||||
if destdir is None:
|
||||
destdir = self.setup_path.dirpath('build')
|
||||
assert destdir.check()
|
||||
else:
|
||||
destdir = py.path.local(destdir)
|
||||
target = destdir.join(sdist.basename)
|
||||
sdist.copy(target)
|
||||
return target
|
||||
finally:
|
||||
temp.remove()
|
||||
|
||||
def subcall(args):
|
||||
if hasattr(subprocess, 'check_call'):
|
||||
subprocess.check_call(args)
|
||||
else:
|
||||
subprocess.call(args)
|
||||
# code taken from Ronny Pfannenschmidt's virtualenvmanager
|
||||
|
||||
class VirtualEnv(object):
|
||||
def __init__(self, path):
|
||||
#XXX: supply the python executable
|
||||
self.path = path
|
||||
|
||||
def __repr__(self):
|
||||
return "<VirtualEnv at %r>" %(self.path)
|
||||
|
||||
def _cmd(self, name):
|
||||
return os.path.join(self.path, 'bin', name)
|
||||
|
||||
def ensure(self):
|
||||
if not os.path.exists(self._cmd('python')):
|
||||
self.create()
|
||||
|
||||
def create(self, sitepackages=False):
|
||||
args = ['virtualenv', self.path]
|
||||
if not sitepackages:
|
||||
args.append('--no-site-packages')
|
||||
subcall(args)
|
||||
|
||||
def makegateway(self):
|
||||
python = self._cmd('python')
|
||||
return py.execnet.makegateway("popen//python=%s" %(python,))
|
||||
|
||||
def pcall(self, cmd, *args, **kw):
|
||||
self.ensure()
|
||||
return subprocess.call([
|
||||
self._cmd(cmd)
|
||||
] + list(args),
|
||||
**kw)
|
||||
|
||||
|
||||
def easy_install(self, *packages, **kw):
|
||||
args = []
|
||||
if 'index' in kw:
|
||||
index = kw['index']
|
||||
if isinstance(index, (list, tuple)):
|
||||
for i in index:
|
||||
args.extend(['-i', i])
|
||||
else:
|
||||
args.extend(['-i', index])
|
||||
|
||||
args.extend(packages)
|
||||
self.pcall('easy_install', *args)
|
||||
|
||||
|
||||
@property
|
||||
def has_pip(self):
|
||||
return os.path.exists(self._cmd('pip'))
|
||||
|
||||
def pip_install(self, *packages):
|
||||
if not self.has_pip:
|
||||
self.easy_install('pip')
|
||||
|
||||
self.pcall('pip', *packages)
|
||||
|
||||
|
|
2
setup.py
2
setup.py
|
@ -31,7 +31,7 @@ def main():
|
|||
name='py',
|
||||
description='py.test and pylib: advanced testing tool and networking lib',
|
||||
long_description = long_description,
|
||||
version= trunk or '1.0.1',
|
||||
version= trunk or '1.0.2b1',
|
||||
url='http://pylib.org',
|
||||
license='MIT license',
|
||||
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
|
||||
|
|
Loading…
Reference in New Issue