From c024dc6417b4648be44ea57a0c5757222e7610b8 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Wed, 26 Aug 2009 11:09:55 +0200 Subject: [PATCH 1/2] * 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 --- CHANGELOG | 256 +----------------- MANIFEST | 426 ------------------------------ MANIFEST.in | 16 ++ _findpy.py | 39 --- bin-for-dist/gensetup.py | 2 +- bin-for-dist/test_install.py | 111 ++++++++ doc/announce/release-1.0.2.txt | 5 + doc/changelog.txt | 263 +++++++++++++++++- py/__init__.py | 2 +- py/misc/testing/test_install.py | 16 -- py/test/plugin/pytest_pytester.py | 105 -------- setup.py | 2 +- 12 files changed, 398 insertions(+), 845 deletions(-) mode change 100644 => 120000 CHANGELOG delete mode 100644 MANIFEST create mode 100644 MANIFEST.in delete mode 100755 _findpy.py create mode 100644 bin-for-dist/test_install.py create mode 100644 doc/announce/release-1.0.2.txt mode change 120000 => 100644 doc/changelog.txt delete mode 100644 py/misc/testing/test_install.py diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index 33866d2bd..000000000 --- a/CHANGELOG +++ /dev/null @@ -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] diff --git a/CHANGELOG b/CHANGELOG new file mode 120000 index 000000000..56095f2f3 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1 @@ +doc/changelog.txt \ No newline at end of file diff --git a/MANIFEST b/MANIFEST deleted file mode 100644 index 5b74398e4..000000000 --- a/MANIFEST +++ /dev/null @@ -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 \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..5e2203188 --- /dev/null +++ b/MANIFEST.in @@ -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 diff --git a/_findpy.py b/_findpy.py deleted file mode 100755 index 15384ee25..000000000 --- a/_findpy.py +++ /dev/null @@ -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__ diff --git a/bin-for-dist/gensetup.py b/bin-for-dist/gensetup.py index 574585868..5c6d9b276 100644 --- a/bin-for-dist/gensetup.py +++ b/bin-for-dist/gensetup.py @@ -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(): diff --git a/bin-for-dist/test_install.py b/bin-for-dist/test_install.py new file mode 100644 index 000000000..3d258792d --- /dev/null +++ b/bin-for-dist/test_install.py @@ -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 "" %(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__ diff --git a/doc/announce/release-1.0.2.txt b/doc/announce/release-1.0.2.txt new file mode 100644 index 000000000..1a9163fac --- /dev/null +++ b/doc/announce/release-1.0.2.txt @@ -0,0 +1,5 @@ +1.0.2: packaging fixes +----------------------------------------------------------------------- + +this release is purely a release for fixing packaging issues. + diff --git a/doc/changelog.txt b/doc/changelog.txt deleted file mode 120000 index a53599471..000000000 --- a/doc/changelog.txt +++ /dev/null @@ -1 +0,0 @@ -../CHANGELOG \ No newline at end of file diff --git a/doc/changelog.txt b/doc/changelog.txt new file mode 100644 index 000000000..f211549ca --- /dev/null +++ b/doc/changelog.txt @@ -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] diff --git a/py/__init__.py b/py/__init__.py index e94966656..9d4761bc6 100644 --- a/py/__init__.py +++ b/py/__init__.py @@ -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", diff --git a/py/misc/testing/test_install.py b/py/misc/testing/test_install.py deleted file mode 100644 index 211422231..000000000 --- a/py/misc/testing/test_install.py +++ /dev/null @@ -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() diff --git a/py/test/plugin/pytest_pytester.py b/py/test/plugin/pytest_pytester.py index 55d5e315c..a3d8e46a5 100644 --- a/py/test/plugin/pytest_pytester.py +++ b/py/test/plugin/pytest_pytester.py @@ -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 "" %(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) - diff --git a/setup.py b/setup.py index a9da10816..3d1e448c5 100644 --- a/setup.py +++ b/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'], From 3be875bfd22d1a5f5538ba08828c107eba53e68c Mon Sep 17 00:00:00 2001 From: holger krekel Date: Wed, 26 Aug 2009 19:09:52 +0200 Subject: [PATCH 2/2] some fixes and small doc updates, aiming to finalize 1.0.2 --HG-- branch : 1.0.x --- MANIFEST.in | 1 + README.txt | 12 +----------- doc/path.txt | 4 +--- py/__init__.py | 2 +- py/misc/rest.py | 2 +- setup.py | 2 +- 6 files changed, 6 insertions(+), 17 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 5e2203188..102feadbd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,6 +4,7 @@ include setup.py include LICENSE include py/LICENSE include py/path/svn/testing/repotest.dump +include py/rest/rest.sty.template exclude *.orig exclude *.rej prune .svn diff --git a/README.txt b/README.txt index 6ffe05619..c8c78699c 100644 --- a/README.txt +++ b/README.txt @@ -6,14 +6,4 @@ the following tools and modules: * py.code: dynamic code generation and introspection * py.path: uniform local and svn path objects -It includes code and contributions from several people, -listed in the LICENSE file. - -For questions, please see py/doc/index.txt, refer to the website -http://pylib.org or come to the #pylib IRC freenode channel or subscribe to -http://codespeak.net/mailman/listinfo/py-dev . - -have fun, - -holger krekel, holger at merlinux eu - +For questions and more information please visit http://pylib.org diff --git a/doc/path.txt b/doc/path.txt index bab3eea64..640f8dbcf 100644 --- a/doc/path.txt +++ b/doc/path.txt @@ -255,9 +255,7 @@ of platform-dependencies as much as possible). There is some experimental small approach (:source:`py/path/gateway/`) aiming at having -a convenient Remote Path implementation -and some considerations about future -works in the according :source:`py/path/gateway/TODO.txt` +a convenient Remote Path implementation. There are various hacks out there to have Memory-Filesystems and even path objects diff --git a/py/__init__.py b/py/__init__.py index 9d4761bc6..7aef04784 100644 --- a/py/__init__.py +++ b/py/__init__.py @@ -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.2b1" +version = trunk or "1.0.2" initpkg(__name__, description = "py.test and pylib: advanced testing tool and networking lib", diff --git a/py/misc/rest.py b/py/misc/rest.py index b4318bc97..6a97efe38 100644 --- a/py/misc/rest.py +++ b/py/misc/rest.py @@ -31,7 +31,7 @@ def convert_rest_html(source, source_path, stylesheet=None, encoding='latin1'): source_path = os.path.abspath(str(source_path)) prevdir = os.getcwd() try: - os.chdir(os.path.dirname(source_path)) + #os.chdir(os.path.dirname(source_path)) return publish_string(source, source_path, writer_name='html', settings_overrides=kwargs) finally: diff --git a/setup.py b/setup.py index 3d1e448c5..32e48dcd4 100644 --- a/setup.py +++ b/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.2b1', + version= trunk or '1.0.2', url='http://pylib.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],