* 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:
holger krekel 2009-08-26 11:09:55 +02:00
parent ab83c4e05c
commit c024dc6417
12 changed files with 398 additions and 845 deletions

255
CHANGELOG
View File

@ -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]

1
CHANGELOG Symbolic link
View File

@ -0,0 +1 @@
doc/changelog.txt

426
MANIFEST
View File

@ -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

16
MANIFEST.in Normal file
View File

@ -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

View File

@ -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__

View 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():

View File

@ -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__

View File

@ -0,0 +1,5 @@
1.0.2: packaging fixes
-----------------------------------------------------------------------
this release is purely a release for fixing packaging issues.

View File

@ -1 +0,0 @@
../CHANGELOG

262
doc/changelog.txt Normal file
View File

@ -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]

View File

@ -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",

View File

@ -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()

View File

@ -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)

View File

@ -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'],