refine session initialization / fix custom collect crash --------------------------------------------------------------- tags: bug 1.4 core xdist When calling "py.test path/X" py.test can crash if the collection of that directory is skipped. Calling "py.test path" will give proper output. The reason is that for the very first colitems getinitialnodes() and a collection is done before the fully controlled session and pytest_make_collect_report protocol takes over. Try to remove the redundant getinitialnodes related logic and amend the session collect logic to care for this "initial" case as well. Apart from simplification a side effect the dsession's session and the core session probably converge some more. introduce py.test.mark.nocollect ------------------------------------------------------- tags: feature 1.4 for not considering a function for test collection at all. maybe also introduce a py.test.mark.test to explicitely mark a function to become a tested one. Lookup JUnit ways of tagging tests. introduce py.test.mark registration ----------------------------------------- tags: feature 1.3 introduce a hook that allows to register a named mark decorator with documentation and add "py.test --marks" to get a list of available marks. Deprecate "dynamic" mark definitions. do early-teardown of test modules ----------------------------------------- tags: feature 1.3 currently teardowns are called when the next tests is setup except for the function/method level where interally "teardown_exact" tears down immediately. Generalize this to perform the "neccessary" teardown compared to the "next" test item during teardown - this should get rid of some irritations because otherwise e.g. prints of teardown-code appear in the setup of the next test. do recursive walk of conftest.py files? ----------------------------------------- tags: feature 1.3 it maybe makes sense to generally do a recursive search of conftest.py files before command line parsing - this would help to offer the full list of options as applicable to a given test project. consider introducing py.test.mark.skip_[not]win32/jython/pyXY ------------------------------------------------------------- tags: feature 1.3 conveniently introduce markers for platforms to have a shorter form for skipping. generalize parametrized testing to generate combinations ------------------------------------------------------------- tags: feature 1.3 think about extending metafunc.addcall or add a new method to allow to generate tests with combinations of all generated versions - what to do about "id" and "param" in such combinations though? introduce py.test.mark.multi ----------------------------------------- tags: feature 1.3 introduce py.test.mark.multi to specify a number of values for a given function argument. have imported module mismatch honour relative paths -------------------------------------------------------- tags: bug 1.4 With 1.1.1 py.test fails at least on windows if an import is relative and compared against an absolute conftest.py path. Normalize. make node._checkcollectable more robust ------------------------------------------------- tags: bug 1.4 currently node._checkcollectable() can raise exceptions for all kinds of reasons ('conftest.py' loading problems, missing rsync-dirs, platform-skip-at-import-level issues, ...). It should just return True/False and cause a good error message. call termination with small timeout ------------------------------------------------- tags: feature 1.4 test: testing/pytest/dist/test_dsession.py - test_terminate_on_hanging_node Call gateway group termination with a small timeout if available. Should make dist-testing less likely to leave lost processes. consider globals: py.test.ensuretemp and config -------------------------------------------------------------- tags: experimental-wish 1.4 consider deprecating py.test.ensuretemp and py.test.config to further reduce py.test globality. Also consider having py.test.config and ensuretemp coming from a plugin rather than being there from the start. consider allowing funcargs to setup methods -------------------------------------------------------------- tags: experimental-wish 1.4 Users have expressed the wish to have funcargs available to setup functions. Experiment with allowing funcargs there - it might also help to make the py.test.ensuretemp and config deprecation. For filling funcargs for setup methods, we could call funcarg factories with a request object that not have a cls/function attributes. However, how to handle parametrized test functions and funcargs? consider pytest_addsyspath hook ----------------------------------------- tags: 1.4 py.test could call a new pytest_addsyspath() in order to systematically allow manipulation of sys.path and to inhibit it via --no-addsyspath in order to more easily run against installed packages. Alternatively it could also be done via the config object and pytest_configure. relax requirement to have tests/testing contain an __init__ ---------------------------------------------------------------- tags: feature 1.4 bb: http://bitbucket.org/hpk42/py-trunk/issue/64 A local test run of a "tests" directory may work but a remote one fail because the tests directory does not contain an "__init__.py". Either give an error or make it work without the __init__.py show plugin information in test header ---------------------------------------------------------------- tags: feature 1.4 Now that external plugins are becoming more numerous it would be useful to have external plugins along with their versions displayed as a header line. generate/refine plugin doc generation ---------------------------------------------------------------- tags: feature 1.4 review and prepare docs for 1.4.0 release. Probably have docs living with the plugin and require them to be available on doc generation time, at least when the target is the website? Or rather go for interactive help? deprecate global py.test.config usage ---------------------------------------------------------------- tags: feature 1.4 py.test.ensuretemp and py.test.config are probably the last objects containing global state. Often using them is not neccessary. This is about trying to get rid of them, i.e. deprecating them and checking with PyPy's usages as well as others.