| 1.4.31 | |
| ================================================== | |
| - fix local().copy(dest, mode=True) to also work | |
| with unicode. | |
| - pass better error message with svn EEXIST paths | |
| 1.4.30 | |
| ================================================== | |
| - fix issue68 an assert with a multiline list comprehension | |
| was not reported correctly. Thanks Henrik Heibuerger. | |
| 1.4.29 | |
| ================================================== | |
| - fix issue55: revert a change to the statement finding algorithm | |
| which is used by pytest for generating tracebacks. | |
| Thanks Daniel Hahler for initial analysis. | |
| - fix pytest issue254 for when traceback rendering can't | |
| find valid source code. Thanks Ionel Cristian Maries. | |
| 1.4.28 | |
| ================================================== | |
| - fix issue64 -- dirpath regression when "abs=True" is passed. | |
| Thanks Gilles Dartiguelongue. | |
| 1.4.27 | |
| ================================================== | |
| - fix issue59: point to new repo site | |
| - allow a new ensuresyspath="append" mode for py.path.local.pyimport() | |
| so that a neccessary import path is appended instead of prepended to | |
| sys.path | |
| - strike undocumented, untested argument to py.path.local.pypkgpath | |
| - speed up py.path.local.dirpath by a factor of 10 | |
| 1.4.26 | |
| ================================================== | |
| - avoid calling normpath twice in py.path.local | |
| - py.builtin._reraise properly reraises under Python3 now. | |
| - fix issue53 - remove module index, thanks jenisys. | |
| - allow posix path separators when "fnmatch" is called. | |
| Thanks Christian Long for the complete PR. | |
| 1.4.25 | |
| ================================================== | |
| - fix issue52: vaguely fix py25 compat of py.path.local (it's not | |
| officially supported), also fix docs | |
| - fix pytest issue 589: when checking if we have a recursion error | |
| check for the specific "maximum recursion depth" text of the exception. | |
| 1.4.24 | |
| ================================================== | |
| - Fix retrieving source when an else: line has an other statement on | |
| the same line. | |
| - add localpath read_text/write_text/read_bytes/write_bytes methods | |
| as shortcuts and clearer bytes/text interfaces for read/write. | |
| Adapted from a PR from Paul Moore. | |
| 1.4.23 | |
| ================================================== | |
| - use newer apipkg version which makes attribute access on | |
| alias modules resolve to None rather than an ImportError. | |
| This helps with code that uses inspect.getframeinfo() | |
| on py34 which causes a complete walk on sys.modules | |
| thus triggering the alias module to resolve and blowing | |
| up with ImportError. The negative side is that something | |
| like "py.test.X" will now result in None instead of "importerror: pytest" | |
| if pytest is not installed. But you shouldn't import "py.test" | |
| anyway anymore. | |
| - adapt one svn test to only check for any exception instead | |
| of specific ones because different svn versions cause different | |
| errors and we don't care. | |
| 1.4.22 | |
| ================================================== | |
| - refactor class-level registry on ForkedFunc child start/finish | |
| event to become instance based (i.e. passed into the constructor) | |
| 1.4.21 | |
| ================================================== | |
| - ForkedFunc now has class-level register_on_start/on_exit() | |
| methods to allow adding information in the boxed process. | |
| Thanks Marc Schlaich. | |
| - ForkedFunc in the child opens in "auto-flush" mode for | |
| stdout/stderr so that when a subprocess dies you can see | |
| its output even if it didn't flush itself. | |
| - refactor traceback generation in light of pytest issue 364 | |
| (shortening tracebacks). you can now set a new traceback style | |
| on a per-entry basis such that a caller can force entries to be | |
| isplayed as short or long entries. | |
| - win32: py.path.local.sysfind(name) will preferrably return files with | |
| extensions so that if "X" and "X.bat" or "X.exe" is on the PATH, | |
| one of the latter two will be returned. | |
| 1.4.20 | |
| ================================================== | |
| - ignore unicode decode errors in xmlescape. Thanks Anatoly Bubenkoff. | |
| - on python2 modify traceback.format_exception_only to match python3 | |
| behaviour, namely trying to print unicode for Exception instances | |
| - use a safer way for serializing exception reports (helps to fix | |
| pytest issue413) | |
| Changes between 1.4.18 and 1.4.19 | |
| ================================================== | |
| - merge in apipkg fixes | |
| - some micro-optimizations in py/_code/code.py for speeding | |
| up pytest runs. Thanks Alex Gaynor for initiative. | |
| - check PY_COLORS=1 or PY_COLORS=0 to force coloring/not-coloring | |
| for py.io.TerminalWriter() independently from capabilities | |
| of the output file. Thanks Marc Abramowitz for the PR. | |
| - some fixes to unicode handling in assertion handling. | |
| Thanks for the PR to Floris Bruynooghe. (This helps | |
| to fix pytest issue 319). | |
| - depend on setuptools presence, remove distribute_setup | |
| Changes between 1.4.17 and 1.4.18 | |
| ================================================== | |
| - introduce path.ensure_dir() as a synonym for ensure(..., dir=1) | |
| - some unicode/python3 related fixes wrt to path manipulations | |
| (if you start passing unicode particular in py2 you might | |
| still get problems, though) | |
| Changes between 1.4.16 and 1.4.17 | |
| ================================================== | |
| - make py.io.TerminalWriter() prefer colorama if it is available | |
| and avoid empty lines when separator-lines are printed by | |
| being defensive and reducing the working terminalwidth by 1 | |
| - introduce optional "expanduser" argument to py.path.local | |
| to that local("~", expanduser=True) gives the home | |
| directory of "user". | |
| Changes between 1.4.15 and 1.4.16 | |
| ================================================== | |
| - fix issue35 - define __gt__ ordering between a local path | |
| and strings | |
| - fix issue36 - make chdir() work even if os.getcwd() fails. | |
| - add path.exists/isdir/isfile/islink shortcuts | |
| - introduce local path.as_cwd() context manager. | |
| - introduce p.write(ensure=1) and p.open(ensure=1) | |
| where ensure triggers creation of neccessary parent | |
| dirs. | |
| Changes between 1.4.14 and 1.4.15 | |
| ================================================== | |
| - majorly speed up some common calling patterns with | |
| LocalPath.listdir()/join/check/stat functions considerably. | |
| - fix an edge case with fnmatch where a glob style pattern appeared | |
| in an absolute path. | |
| Changes between 1.4.13 and 1.4.14 | |
| ================================================== | |
| - fix dupfile to work with files that don't | |
| carry a mode. Thanks Jason R. Coombs. | |
| Changes between 1.4.12 and 1.4.13 | |
| ================================================== | |
| - fix getting statementrange/compiling a file ending | |
| in a comment line without newline (on python2.5) | |
| - for local paths you can pass "mode=True" to a copy() | |
| in order to copy permission bits (underlying mechanism | |
| is using shutil.copymode) | |
| - add paths arguments to py.path.local.sysfind to restrict | |
| search to the diretories in the path. | |
| - add isdir/isfile/islink to path.stat() objects allowing to perform | |
| multiple checks without calling out multiple times | |
| - drop py.path.local.__new__ in favour of a simpler __init__ | |
| - iniconfig: allow "name:value" settings in config files, no space after | |
| "name" required | |
| - fix issue 27 - NameError in unlikely untested case of saferepr | |
| Changes between 1.4.11 and 1.4.12 | |
| ================================================== | |
| - fix python2.4 support - for pre-AST interpreters re-introduce | |
| old way to find statements in exceptions (closes pytest issue 209) | |
| - add tox.ini to distribution | |
| - fix issue23 - print *,** args information in tracebacks, | |
| thanks Manuel Jacob | |
| Changes between 1.4.10 and 1.4.11 | |
| ================================================== | |
| - use _ast to determine statement ranges when printing tracebacks - | |
| avoiding multi-second delays on some large test modules | |
| - fix an internal test to not use class-denoted pytest_funcarg__ | |
| - fix a doc link to bug tracker | |
| - try to make terminal.write() printing more robust against | |
| unicodeencode/decode problems, amend according test | |
| - introduce py.builtin.text and py.builtin.bytes | |
| to point to respective str/unicode (py2) and bytes/str (py3) types | |
| - fix error handling on win32/py33 for ENODIR | |
| Changes between 1.4.9 and 1.4.10 | |
| ================================================== | |
| - terminalwriter: default to encode to UTF8 if no encoding is defined | |
| on the output stream | |
| - issue22: improve heuristic for finding the statementrange in exceptions | |
| Changes between 1.4.8 and 1.4.9 | |
| ================================================== | |
| - fix bug of path.visit() which would not recognize glob-style patterns | |
| for the "rec" recursion argument | |
| - changed iniconfig parsing to better conform, now the chars ";" | |
| and "#" only mark a comment at the stripped start of a line | |
| - include recent apipkg-1.2 | |
| - change internal terminalwriter.line/reline logic to more nicely | |
| support file spinners | |
| Changes between 1.4.7 and 1.4.8 | |
| ================================================== | |
| - fix issue 13 - correct handling of the tag name object in xmlgen | |
| - fix issue 14 - support raw attribute values in xmlgen | |
| - fix windows terminalwriter printing/re-line problem | |
| - update distribute_setup.py to 0.6.27 | |
| Changes between 1.4.6 and 1.4.7 | |
| ================================================== | |
| - fix issue11 - own test failure with python3.3 / Thanks Benjamin Peterson | |
| - help fix pytest issue 102 | |
| Changes between 1.4.5 and 1.4.6 | |
| ================================================== | |
| - help to fix pytest issue99: unify output of | |
| ExceptionInfo.getrepr(style="native") with ...(style="long") | |
| - fix issue7: source.getstatementrange() now raises proper error | |
| if no valid statement can be found | |
| - fix issue8: fix code and tests of svnurl/svnwc to work on subversion 1.7 - | |
| note that path.status(updates=1) will not properly work svn-17's status | |
| --xml output is broken. | |
| - make source.getstatementrange() more resilent about non-python code frames | |
| (as seen from jnja2) | |
| - make trackeback recursion detection more resilent | |
| about the eval magic of a decorator library | |
| - iniconfig: add support for ; as comment starter | |
| - properly handle lists in xmlgen on python3 | |
| - normalize py.code.getfslineno(obj) to always return a (string, int) tuple | |
| defaulting to ("", -1) respectively if no source code can be found for obj. | |
| Changes between 1.4.4 and 1.4.5 | |
| ================================================== | |
| - improve some unicode handling in terminalwriter and capturing | |
| (used by pytest) | |
| Changes between 1.4.3 and 1.4.4 | |
| ================================================== | |
| - a few fixes and assertion related refinements for pytest-2.1 | |
| - guard py.code.Code and getfslineno against bogus input | |
| and make py.code.Code objects for object instance | |
| by looking up their __call__ function. | |
| - make exception presentation robust against invalid current cwd | |
| Changes between 1.4.2 and 1.4.3 | |
| ================================================== | |
| - fix terminal coloring issue for skipped tests (thanks Amaury) | |
| - fix issue4 - large calls to ansi_print (thanks Amaury) | |
| Changes between 1.4.1 and 1.4.2 | |
| ================================================== | |
| - fix (pytest) issue23 - tmpdir argument now works on Python3.2 and WindowsXP | |
| (which apparently starts to offer os.symlink now) | |
| - better error message for syntax errors from compiled code | |
| - small fix to better deal with (un-)colored terminal output on windows | |
| Changes between 1.4.0 and 1.4.1 | |
| ================================================== | |
| - fix issue1 - py.error.* classes to be pickleable | |
| - fix issue2 - on windows32 use PATHEXT as the list of potential | |
| extensions to find find binaries with py.path.local.sysfind(commandname) | |
| - fix (pytest-) issue10 and refine assertion reinterpretation | |
| to avoid breaking if the __nonzero__ of an object fails | |
| - fix (pytest-) issue17 where python3 does not like "import *" | |
| leading to misrepresentation of import-errors in test modules | |
| - fix py.error.* attribute pypy access issue | |
| - allow path.samefile(arg) to succeed when arg is a relative filename | |
| - fix (pytest-) issue20 path.samefile(relpath) works as expected now | |
| - fix (pytest-) issue8 len(long_list) now shows the lenght of the list | |
| Changes between 1.3.4 and 1.4.0 | |
| ================================================== | |
| - py.test was moved to a separate "pytest" package. What remains is | |
| a stub hook which will proxy ``import py.test`` to ``pytest``. | |
| - all command line tools ("py.cleanup/lookup/countloc/..." moved | |
| to "pycmd" package) | |
| - removed the old and deprecated "py.magic" namespace | |
| - use apipkg-1.1 and make py.apipkg.initpkg|ApiModule available | |
| - add py.iniconfig module for brain-dead easy ini-config file parsing | |
| - introduce py.builtin.any() | |
| - path objects have a .dirname attribute now (equivalent to | |
| os.path.dirname(path)) | |
| - path.visit() accepts breadthfirst (bf) and sort options | |
| - remove deprecated py.compat namespace | |
| Changes between 1.3.3 and 1.3.4 | |
| ================================================== | |
| - fix issue111: improve install documentation for windows | |
| - fix issue119: fix custom collectability of __init__.py as a module | |
| - fix issue116: --doctestmodules work with __init__.py files as well | |
| - fix issue115: unify internal exception passthrough/catching/GeneratorExit | |
| - fix issue118: new --tb=native for presenting cpython-standard exceptions | |
| Changes between 1.3.2 and 1.3.3 | |
| ================================================== | |
| - fix issue113: assertion representation problem with triple-quoted strings | |
| (and possibly other cases) | |
| - make conftest loading detect that a conftest file with the same | |
| content was already loaded, avoids surprises in nested directory structures | |
| which can be produced e.g. by Hudson. It probably removes the need to use | |
| --confcutdir in most cases. | |
| - fix terminal coloring for win32 | |
| (thanks Michael Foord for reporting) | |
| - fix weirdness: make terminal width detection work on stdout instead of stdin | |
| (thanks Armin Ronacher for reporting) | |
| - remove trailing whitespace in all py/text distribution files | |
| Changes between 1.3.1 and 1.3.2 | |
| ================================================== | |
| New features | |
| ++++++++++++++++++ | |
| - fix issue103: introduce py.test.raises as context manager, examples:: | |
| with py.test.raises(ZeroDivisionError): | |
| x = 0 | |
| 1 / x | |
| with py.test.raises(RuntimeError) as excinfo: | |
| call_something() | |
| # you may do extra checks on excinfo.value|type|traceback here | |
| (thanks Ronny Pfannschmidt) | |
| - Funcarg factories can now dynamically apply a marker to a | |
| test invocation. This is for example useful if a factory | |
| provides parameters to a test which are expected-to-fail:: | |
| def pytest_funcarg__arg(request): | |
| request.applymarker(py.test.mark.xfail(reason="flaky config")) | |
| ... | |
| def test_function(arg): | |
| ... | |
| - improved error reporting on collection and import errors. This makes | |
| use of a more general mechanism, namely that for custom test item/collect | |
| nodes ``node.repr_failure(excinfo)`` is now uniformly called so that you can | |
| override it to return a string error representation of your choice | |
| which is going to be reported as a (red) string. | |
| - introduce '--junitprefix=STR' option to prepend a prefix | |
| to all reports in the junitxml file. | |
| Bug fixes / Maintenance | |
| ++++++++++++++++++++++++++ | |
| - make tests and the ``pytest_recwarn`` plugin in particular fully compatible | |
| to Python2.7 (if you use the ``recwarn`` funcarg warnings will be enabled so that | |
| you can properly check for their existence in a cross-python manner). | |
| - refine --pdb: ignore xfailed tests, unify its TB-reporting and | |
| don't display failures again at the end. | |
| - fix assertion interpretation with the ** operator (thanks Benjamin Peterson) | |
| - fix issue105 assignment on the same line as a failing assertion (thanks Benjamin Peterson) | |
| - fix issue104 proper escaping for test names in junitxml plugin (thanks anonymous) | |
| - fix issue57 -f|--looponfail to work with xpassing tests (thanks Ronny) | |
| - fix issue92 collectonly reporter and --pastebin (thanks Benjamin Peterson) | |
| - fix py.code.compile(source) to generate unique filenames | |
| - fix assertion re-interp problems on PyPy, by defering code | |
| compilation to the (overridable) Frame.eval class. (thanks Amaury Forgeot) | |
| - fix py.path.local.pyimport() to work with directories | |
| - streamline py.path.local.mkdtemp implementation and usage | |
| - don't print empty lines when showing junitxml-filename | |
| - add optional boolean ignore_errors parameter to py.path.local.remove | |
| - fix terminal writing on win32/python2.4 | |
| - py.process.cmdexec() now tries harder to return properly encoded unicode objects | |
| on all python versions | |
| - install plain py.test/py.which scripts also for Jython, this helps to | |
| get canonical script paths in virtualenv situations | |
| - make path.bestrelpath(path) return ".", note that when calling | |
| X.bestrelpath the assumption is that X is a directory. | |
| - make initial conftest discovery ignore "--" prefixed arguments | |
| - fix resultlog plugin when used in an multicpu/multihost xdist situation | |
| (thanks Jakub Gustak) | |
| - perform distributed testing related reporting in the xdist-plugin | |
| rather than having dist-related code in the generic py.test | |
| distribution | |
| - fix homedir detection on Windows | |
| - ship distribute_setup.py version 0.6.13 | |
| Changes between 1.3.0 and 1.3.1 | |
| ================================================== | |
| New features | |
| ++++++++++++++++++ | |
| - issue91: introduce new py.test.xfail(reason) helper | |
| to imperatively mark a test as expected to fail. Can | |
| be used from within setup and test functions. This is | |
| useful especially for parametrized tests when certain | |
| configurations are expected-to-fail. In this case the | |
| declarative approach with the @py.test.mark.xfail cannot | |
| be used as it would mark all configurations as xfail. | |
| - issue102: introduce new --maxfail=NUM option to stop | |
| test runs after NUM failures. This is a generalization | |
| of the '-x' or '--exitfirst' option which is now equivalent | |
| to '--maxfail=1'. Both '-x' and '--maxfail' will | |
| now also print a line near the end indicating the Interruption. | |
| - issue89: allow py.test.mark decorators to be used on classes | |
| (class decorators were introduced with python2.6) and | |
| also allow to have multiple markers applied at class/module level | |
| by specifying a list. | |
| - improve and refine letter reporting in the progress bar: | |
| . pass | |
| f failed test | |
| s skipped tests (reminder: use for dependency/platform mismatch only) | |
| x xfailed test (test that was expected to fail) | |
| X xpassed test (test that was expected to fail but passed) | |
| You can use any combination of 'fsxX' with the '-r' extended | |
| reporting option. The xfail/xpass results will show up as | |
| skipped tests in the junitxml output - which also fixes | |
| issue99. | |
| - make py.test.cmdline.main() return the exitstatus instead of raising | |
| SystemExit and also allow it to be called multiple times. This of | |
| course requires that your application and tests are properly teared | |
| down and don't have global state. | |
| Fixes / Maintenance | |
| ++++++++++++++++++++++ | |
| - improved traceback presentation: | |
| - improved and unified reporting for "--tb=short" option | |
| - Errors during test module imports are much shorter, (using --tb=short style) | |
| - raises shows shorter more relevant tracebacks | |
| - --fulltrace now more systematically makes traces longer / inhibits cutting | |
| - improve support for raises and other dynamically compiled code by | |
| manipulating python's linecache.cache instead of the previous | |
| rather hacky way of creating custom code objects. This makes | |
| it seemlessly work on Jython and PyPy where it previously didn't. | |
| - fix issue96: make capturing more resilient against Control-C | |
| interruptions (involved somewhat substantial refactoring | |
| to the underlying capturing functionality to avoid race | |
| conditions). | |
| - fix chaining of conditional skipif/xfail decorators - so it works now | |
| as expected to use multiple @py.test.mark.skipif(condition) decorators, | |
| including specific reporting which of the conditions lead to skipping. | |
| - fix issue95: late-import zlib so that it's not required | |
| for general py.test startup. | |
| - fix issue94: make reporting more robust against bogus source code | |
| (and internally be more careful when presenting unexpected byte sequences) | |
| Changes between 1.2.1 and 1.3.0 | |
| ================================================== | |
| - deprecate --report option in favour of a new shorter and easier to | |
| remember -r option: it takes a string argument consisting of any | |
| combination of 'xfsX' characters. They relate to the single chars | |
| you see during the dotted progress printing and will print an extra line | |
| per test at the end of the test run. This extra line indicates the exact | |
| position or test ID that you directly paste to the py.test cmdline in order | |
| to re-run a particular test. | |
| - allow external plugins to register new hooks via the new | |
| pytest_addhooks(pluginmanager) hook. The new release of | |
| the pytest-xdist plugin for distributed and looponfailing | |
| testing requires this feature. | |
| - add a new pytest_ignore_collect(path, config) hook to allow projects and | |
| plugins to define exclusion behaviour for their directory structure - | |
| for example you may define in a conftest.py this method:: | |
| def pytest_ignore_collect(path): | |
| return path.check(link=1) | |
| to prevent even a collection try of any tests in symlinked dirs. | |
| - new pytest_pycollect_makemodule(path, parent) hook for | |
| allowing customization of the Module collection object for a | |
| matching test module. | |
| - extend and refine xfail mechanism: | |
| ``@py.test.mark.xfail(run=False)`` do not run the decorated test | |
| ``@py.test.mark.xfail(reason="...")`` prints the reason string in xfail summaries | |
| specifiying ``--runxfail`` on command line virtually ignores xfail markers | |
| - expose (previously internal) commonly useful methods: | |
| py.io.get_terminal_with() -> return terminal width | |
| py.io.ansi_print(...) -> print colored/bold text on linux/win32 | |
| py.io.saferepr(obj) -> return limited representation string | |
| - expose test outcome related exceptions as py.test.skip.Exception, | |
| py.test.raises.Exception etc., useful mostly for plugins | |
| doing special outcome interpretation/tweaking | |
| - (issue85) fix junitxml plugin to handle tests with non-ascii output | |
| - fix/refine python3 compatibility (thanks Benjamin Peterson) | |
| - fixes for making the jython/win32 combination work, note however: | |
| jython2.5.1/win32 does not provide a command line launcher, see | |
| http://bugs.jython.org/issue1491 . See pylib install documentation | |
| for how to work around. | |
| - fixes for handling of unicode exception values and unprintable objects | |
| - (issue87) fix unboundlocal error in assertionold code | |
| - (issue86) improve documentation for looponfailing | |
| - refine IO capturing: stdin-redirect pseudo-file now has a NOP close() method | |
| - ship distribute_setup.py version 0.6.10 | |
| - added links to the new capturelog and coverage plugins | |
| Changes between 1.2.1 and 1.2.0 | |
| ===================================== | |
| - refined usage and options for "py.cleanup":: | |
| py.cleanup # remove "*.pyc" and "*$py.class" (jython) files | |
| py.cleanup -e .swp -e .cache # also remove files with these extensions | |
| py.cleanup -s # remove "build" and "dist" directory next to setup.py files | |
| py.cleanup -d # also remove empty directories | |
| py.cleanup -a # synonym for "-s -d -e 'pip-log.txt'" | |
| py.cleanup -n # dry run, only show what would be removed | |
| - add a new option "py.test --funcargs" which shows available funcargs | |
| and their help strings (docstrings on their respective factory function) | |
| for a given test path | |
| - display a short and concise traceback if a funcarg lookup fails | |
| - early-load "conftest.py" files in non-dot first-level sub directories. | |
| allows to conveniently keep and access test-related options in a ``test`` | |
| subdir and still add command line options. | |
| - fix issue67: new super-short traceback-printing option: "--tb=line" will print a single line for each failing (python) test indicating its filename, lineno and the failure value | |
| - fix issue78: always call python-level teardown functions even if the | |
| according setup failed. This includes refinements for calling setup_module/class functions | |
| which will now only be called once instead of the previous behaviour where they'd be called | |
| multiple times if they raise an exception (including a Skipped exception). Any exception | |
| will be re-corded and associated with all tests in the according module/class scope. | |
| - fix issue63: assume <40 columns to be a bogus terminal width, default to 80 | |
| - fix pdb debugging to be in the correct frame on raises-related errors | |
| - update apipkg.py to fix an issue where recursive imports might | |
| unnecessarily break importing | |
| - fix plugin links | |
| Changes between 1.2 and 1.1.1 | |
| ===================================== | |
| - moved dist/looponfailing from py.test core into a new | |
| separately released pytest-xdist plugin. | |
| - new junitxml plugin: --junitxml=path will generate a junit style xml file | |
| which is processable e.g. by the Hudson CI system. | |
| - new option: --genscript=path will generate a standalone py.test script | |
| which will not need any libraries installed. thanks to Ralf Schmitt. | |
| - new option: --ignore will prevent specified path from collection. | |
| Can be specified multiple times. | |
| - new option: --confcutdir=dir will make py.test only consider conftest | |
| files that are relative to the specified dir. | |
| - new funcarg: "pytestconfig" is the pytest config object for access | |
| to command line args and can now be easily used in a test. | |
| - install 'py.test' and `py.which` with a ``-$VERSION`` suffix to | |
| disambiguate between Python3, python2.X, Jython and PyPy installed versions. | |
| - new "pytestconfig" funcarg allows access to test config object | |
| - new "pytest_report_header" hook can return additional lines | |
| to be displayed at the header of a test run. | |
| - (experimental) allow "py.test path::name1::name2::..." for pointing | |
| to a test within a test collection directly. This might eventually | |
| evolve as a full substitute to "-k" specifications. | |
| - streamlined plugin loading: order is now as documented in | |
| customize.html: setuptools, ENV, commandline, conftest. | |
| also setuptools entry point names are turned to canonical namees ("pytest_*") | |
| - automatically skip tests that need 'capfd' but have no os.dup | |
| - allow pytest_generate_tests to be defined in classes as well | |
| - deprecate usage of 'disabled' attribute in favour of pytestmark | |
| - deprecate definition of Directory, Module, Class and Function nodes | |
| in conftest.py files. Use pytest collect hooks instead. | |
| - collection/item node specific runtest/collect hooks are only called exactly | |
| on matching conftest.py files, i.e. ones which are exactly below | |
| the filesystem path of an item | |
| - change: the first pytest_collect_directory hook to return something | |
| will now prevent further hooks to be called. | |
| - change: figleaf plugin now requires --figleaf to run. Also | |
| change its long command line options to be a bit shorter (see py.test -h). | |
| - change: pytest doctest plugin is now enabled by default and has a | |
| new option --doctest-glob to set a pattern for file matches. | |
| - change: remove internal py._* helper vars, only keep py._pydir | |
| - robustify capturing to survive if custom pytest_runtest_setup | |
| code failed and prevented the capturing setup code from running. | |
| - make py.test.* helpers provided by default plugins visible early - | |
| works transparently both for pydoc and for interactive sessions | |
| which will regularly see e.g. py.test.mark and py.test.importorskip. | |
| - simplify internal plugin manager machinery | |
| - simplify internal collection tree by introducing a RootCollector node | |
| - fix assert reinterpreation that sees a call containing "keyword=..." | |
| - fix issue66: invoke pytest_sessionstart and pytest_sessionfinish | |
| hooks on slaves during dist-testing, report module/session teardown | |
| hooks correctly. | |
| - fix issue65: properly handle dist-testing if no | |
| execnet/py lib installed remotely. | |
| - skip some install-tests if no execnet is available | |
| - fix docs, fix internal bin/ script generation | |
| Changes between 1.1.1 and 1.1.0 | |
| ===================================== | |
| - introduce automatic plugin registration via 'pytest11' | |
| entrypoints via setuptools' pkg_resources.iter_entry_points | |
| - fix py.test dist-testing to work with execnet >= 1.0.0b4 | |
| - re-introduce py.test.cmdline.main() for better backward compatibility | |
| - svn paths: fix a bug with path.check(versioned=True) for svn paths, | |
| allow '%' in svn paths, make svnwc.update() default to interactive mode | |
| like in 1.0.x and add svnwc.update(interactive=False) to inhibit interaction. | |
| - refine distributed tarball to contain test and no pyc files | |
| - try harder to have deprecation warnings for py.compat.* accesses | |
| report a correct location | |
| Changes between 1.1.0 and 1.0.2 | |
| ===================================== | |
| * adjust and improve docs | |
| * remove py.rest tool and internal namespace - it was | |
| never really advertised and can still be used with | |
| the old release if needed. If there is interest | |
| it could be revived into its own tool i guess. | |
| * fix issue48 and issue59: raise an Error if the module | |
| from an imported test file does not seem to come from | |
| the filepath - avoids "same-name" confusion that has | |
| been reported repeatedly | |
| * merged Ronny's nose-compatibility hacks: now | |
| nose-style setup_module() and setup() functions are | |
| supported | |
| * introduce generalized py.test.mark function marking | |
| * reshuffle / refine command line grouping | |
| * deprecate parser.addgroup in favour of getgroup which creates option group | |
| * add --report command line option that allows to control showing of skipped/xfailed sections | |
| * generalized skipping: a new way to mark python functions with skipif or xfail | |
| at function, class and modules level based on platform or sys-module attributes. | |
| * extend py.test.mark decorator to allow for positional args | |
| * introduce and test "py.cleanup -d" to remove empty directories | |
| * fix issue #59 - robustify unittest test collection | |
| * make bpython/help interaction work by adding an __all__ attribute | |
| to ApiModule, cleanup initpkg | |
| * use MIT license for pylib, add some contributors | |
| * remove py.execnet code and substitute all usages with 'execnet' proper | |
| * fix issue50 - cached_setup now caches more to expectations | |
| for test functions with multiple arguments. | |
| * merge Jarko's fixes, issue #45 and #46 | |
| * add the ability to specify a path for py.lookup to search in | |
| * fix a funcarg cached_setup bug probably only occuring | |
| in distributed testing and "module" scope with teardown. | |
| * many fixes and changes for making the code base python3 compatible, | |
| many thanks to Benjamin Peterson for helping with this. | |
| * consolidate builtins implementation to be compatible with >=2.3, | |
| add helpers to ease keeping 2 and 3k compatible code | |
| * deprecate py.compat.doctest|subprocess|textwrap|optparse | |
| * deprecate py.magic.autopath, remove py/magic directory | |
| * move pytest assertion handling to py/code and a pytest_assertion | |
| plugin, add "--no-assert" option, deprecate py.magic namespaces | |
| in favour of (less) py.code ones. | |
| * consolidate and cleanup py/code classes and files | |
| * cleanup py/misc, move tests to bin-for-dist | |
| * introduce delattr/delitem/delenv methods to py.test's monkeypatch funcarg | |
| * consolidate py.log implementation, remove old approach. | |
| * introduce py.io.TextIO and py.io.BytesIO for distinguishing between | |
| text/unicode and byte-streams (uses underlying standard lib io.* | |
| if available) | |
| * make py.unittest_convert helper script available which converts "unittest.py" | |
| style files into the simpler assert/direct-test-classes py.test/nosetests | |
| style. The script was written by Laura Creighton. | |
| * simplified internal localpath implementation | |
| Changes between 1.0.1 and 1.0.2 | |
| ===================================== | |
| * fixing packaging issues, triggered by fedora redhat packaging, | |
| also added doc, examples and contrib dirs to the tarball. | |
| * added a documentation link to the new django plugin. | |
| 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] |