2019-04-02 11:43:52 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.4.0
pytest 4.4.0:
Features
* async test functions are skipped and a warning is emitted when a suitable \
async plugin is not installed (such as pytest-asyncio or pytest-trio).
Previously async functions would not execute at all but still be marked as \
“passed”.
* Include new \
disable_test_id_escaping_and_forfeit_all_rights_to_community_support option to \
disable ascii-escaping in parametrized values. This may cause a series of \
problems and as the name makes clear, use at your own risk.
* The -p option can now be used to early-load plugins also by entry-point name, \
instead of just by module name.
This makes it possible to early load external plugins like pytest-cov in the \
command-line:
pytest -p pytest_cov
* The --pdbcls option handles classes via module attributes now (e.g. \
pdb:pdb.Pdb with pdb++), and its validation was improved.
* The testpaths configuration option is now displayed next to the rootdir and \
inifile lines in the pytest header if the option is in effect, i.e., directories \
or file names were not explicitly passed in the command line.
Also, inifile is only displayed if there’s a configuration file, instead of an \
empty inifile: string.
* Doctests can be skipped now dynamically using pytest.skip().
* Internal refactorings have been made in order to make the implementation of \
the pytest-subtests plugin possible, which adds unittest sub-test support and a \
new subtests fixture as discussed in 1367.
For details on the internal refactorings, please see the details on the related PR.
* pytester’s LineMatcher asserts that the passed lines are a sequence.
* Handle -p plug after -p no:plug.
This can be used to override a blocked plugin (e.g. in “addopts”) from the \
command line etc.
* Output capturing is handled correctly when only capturing via fixtures \
(capsys, capfs) with pdb.set_trace().
* pytester sets $HOME and $USERPROFILE to the temporary directory during test runs.
This ensures to not load configuration files from the real user’s home directory.
* Namespace packages are handled better with monkeypatch.syspath_prepend and \
testdir.syspathinsert (via pkg_resources.fixup_namespace_packages).
* The stepwise plugin reports status information now.
* If a setup.cfg file contains [tool:pytest] and also the no longer supported \
[pytest] section, pytest will use [tool:pytest] ignoring [pytest]. Previously it \
would unconditionally error out.
This makes it simpler for plugins to support old pytest versions.
Bug Fixes
* Fix bug where fixtures requested dynamically via request.getfixturevalue() \
might be teardown before the requesting fixture.
* pytester unsets PYTEST_ADDOPTS now to not use outer options with \
testdir.runpytest().
* Use the correct modified time for years after 2038 in rewritten .pyc files.
* Fix line offsets with ScopeMismatch errors.
* -p no:plugin is handled correctly for default (internal) plugins now, e.g. \
with -p no:capture.
Previously they were loaded (imported) always, making e.g. the capfd fixture \
available.
* The pdb quit command is handled properly when used after the debug command \
with pdb++.
* Fix the interpretation of -qq option where it was being considered as -v instead.
* outcomes.Exit is not swallowed in assertrepr_compare anymore.
* Close logging’s file handler explicitly when the session finishes.
* Fix line offset with mark collection error (off by one).
Improved Documentation
* Update docs for pytest_cmdline_parse hook to note availability liminations
Trivial/Internal Changes
* pluggy>=0.9 is now required.
* funcsigs>=1.0 is now required for Python 2.7.
* Some left-over internal code related to yield tests has been removed.
* Remove internally unused anypython fixture from the pytester plugin.
* Remove deprecated Sphinx directive, add_description_unit(), pin \
sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0.
* Fix pytest tests invocation with custom PYTHONPATH.
* New pytest_report_to_serializable and pytest_report_from_serializable \
experimental hooks.
These hooks will be used by pytest-xdist, pytest-subtests, and the replacement \
for resultlog to serialize and customize reports.
They are experimental, meaning that their details might change or even be \
removed completely in future patch releases without warning.
Feedback is welcome from plugin authors and users alike.
* Collector.repr_failure respects the --tb option, but only defaults to short \
now (with auto).
|
2019-03-13 09:54:21 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.3.1
pytest 4.3.1:
Bug Fixes
- Logging messages inside pytest_runtest_logreport() are now properly captured \
and displayed.
- Improve validation of contents written to captured output so it behaves the \
same as when capture is disabled.
- Fix AttributeError: FixtureRequest has no 'confg' attribute bug in \
testdir.copy_example.
Trivial/Internal Changes
- Avoid pkg_resources import at the top-level.
|
2019-02-19 09:25:49 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.3.0
pytest 4.3.0:
Deprecations
* pytest.warns() now emits a warning when it receives unknown keyword arguments.
This will be changed into an error in the future.
Features
* Usage errors from argparse are mapped to pytest’s UsageError.
* Add the --ignore-glob parameter to exclude test-modules with Unix shell-style \
wildcards. Add the collect_ignore_glob for conftest.py to exclude test-modules \
with Unix shell-style wildcards.
* The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has \
been removed.
In the end it was considered to be more of a nuisance than actual utility and \
users of those Python versions shouldn’t have problems as pip will not install \
pytest 5.0 on those interpreters.
* With the help of new set_log_path() method there is a way to set log_file \
paths from hooks.
Bug Fixes
* --help and --version are handled with UsageError.
* Fix AssertionError with collection of broken symlinks with packages.
|
2019-02-13 16:40:53 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.2.1
pytest 4.2.1:
Bug Fixes
- The pytest_report_collectionfinish hook now is also called with --collect-only.
- Do not raise UsageError when an imported package has a pytest_plugins.py child \
module.
- Fix output capturing when using pdb++ with recursive debugging.
- Fix handling of collect_ignore via parent conftest.py.
- Fix regression where setUpClass would always be called in subclasses even if \
all tests
were skipped by a unittest.skip() decorator applied in the subclass.
- Fix parametrize(... ids=<function>) when the function returns non-strings.
- Fix/improve collection of args when passing in __init__.py and a test file.
- more_itertools is now constrained to <6.0.0 when required for Python 2.7 \
compatibility.
- Fix "ValueError: Plugin already registered" exceptions when running \
in build directories that symlink to actual source.
Improved Documentation
- Add note to plugins.rst that pytest_plugins should not be used as a name for a \
user module containing plugins.
- Document how to use raises and does_not_raise to write parametrized tests with \
conditional raises.
- Document how to customize test failure messages when using
pytest.warns.
Trivial/Internal Changes
- Some verbosity related attributes of the TerminalReporter plugin are now
read only properties.
|
2019-02-03 12:07:39 by Leonardo Taccari | Files touched by this commit (1) |
Log message:
py-test: Remove not needed REPLACE_PYTHON (file no longer exists)
|
2019-02-01 12:52:22 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-test: updated to 4.2.0
pytest 4.2.0:
Features
* Class xunit-style functions and methods now obey the scope of autouse fixtures.
This fixes a number of surprising issues like setup_method being called before \
session-scoped autouse fixtures.
* Display a message at the end of the test session when running under Python 2.7 \
and 3.4 that pytest 5.0 will no longer support those Python versions.
* The number of selected tests now are also displayed when the -k or -m flags \
are used.
* pytest_report_teststatus hook now can also receive a config parameter.
* pytest_terminal_summary hook now can also receive a config parameter.
Bug Fixes
* --junitxml can emit XML compatible with Jenkins xUnit. junit_family INI option \
accepts legacy|xunit1, which produces old style output, and xunit2 that conforms \
more strictly to \
https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd
* Improve quitting from pdb, especially with --trace.
Using q[quit] after pdb.set_trace() will quit pytest also.
* Warning summary now groups warnings by message instead of by test id.
This makes the output more compact and better conveys the general idea of how \
much code is actually generating warnings, instead of how many tests call that \
code.
* monkeypatch.delattr handles class descriptors like staticmethod/classmethod.
* Restore marks being considered keywords for keyword expressions.
* tmp_path fixture and other related ones provides resolved path (a.k.a real path)
* pytest_terminal_summary uses result from pytest_report_teststatus hook, rather \
than hardcoded strings.
* Correctly handle unittest.SkipTest exception containing non-ascii characters \
on Python 2.
* Ensure the tmpdir and the tmp_path fixtures are the same folder.
* Ensure tmp_path is always a real path.
Trivial/Internal Changes
* Use a.item() instead of the deprecated np.asscalar(a) in pytest.approx.
np.asscalar has been deprecated in numpy 1.16..
* Copy saferepr from pylib
|
2019-01-13 18:45:34 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.1.1
pytest 4.1.1:
Bug Fixes
* Show full repr with assert a==b and -vv.
* Extend Doctest-modules to ignore mock objects.
* Fixed pytest.warns bug when context manager is reused (e.g. multiple \
parametrization).
* Don’t rewrite assertion when __getattr__ is broken
|
2019-01-07 09:38:01 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.1.0
pytest 4.1.0:
Removals
* pytest.mark.parametrize: in previous versions, errors raised by id functions \
were suppressed and changed into warnings. Now the exceptions are propagated, \
along with a pytest message informing the node, parameter value and index where \
the exception occurred.
* Remove legacy internal warnings system: config.warn, Node.warn. The \
pytest_logwarning now issues a warning when implemented.
See our docs on information on how to update your code.
* Removed support for yield tests - they are fundamentally broken because they \
don’t support fixtures properly since collection and test execution were \
separated.
See our docs on information on how to update your code.
* Removed support for applying marks directly to values in \
@pytest.mark.parametrize. Use pytest.param instead.
See our docs on information on how to update your code.
* Removed Metafunc.addcall. This was the predecessor mechanism to \
@pytest.mark.parametrize.
See our docs on information on how to update your code.
* Removed support for passing strings to pytest.main. Now, always pass a list of \
strings instead.
See our docs on information on how to update your code.
* [pytest] section in setup.cfg files is not longer supported, use [tool:pytest] \
instead. setup.cfg files are meant for use with distutils, and a section named \
pytest has notoriously been a source of conflicts and bugs.
Note that for pytest.ini and tox.ini files the section remains [pytest].
* Removed the deprecated compat properties for node.Class/Function/Module - use \
pytest.Class/Function/Module now.
See our docs on information on how to update your code.
* Removed the implementation of the pytest_namespace hook.
See our docs on information on how to update your code.
* Removed request.cached_setup. This was the predecessor mechanism to modern \
fixtures.
See our docs on information on how to update your code.
* Removed the deprecated PyCollector.makeitem method. This method was made \
public by mistake a long time ago.
* Removed support to define fixtures using the pytest_funcarg__ prefix. Use the \
@pytest.fixture decorator instead.
See our docs on information on how to update your code.
* Calling fixtures directly is now always an error instead of a warning.
See our docs on information on how to update your code.
* Remove Node.get_marker(name) the return value was not usable for more than a \
existence check.
Use Node.get_closest_marker(name) as a replacement.
* The deprecated record_xml_property fixture has been removed, use the more \
generic record_property instead.
See our docs for more information.
* An error is now raised if the pytest_plugins variable is defined in a \
non-top-level conftest.py file (i.e., not residing in the rootdir).
See our docs for more information.
* Remove testfunction.markername attributes - use Node.iter_markers(name=None) \
to iterate them.
Deprecations
* Deprecated the pytest.config global.
See https://docs.pytest.org/en/latest/deprecations.html#pytest-config-global for \
rationale.
* Passing the message parameter of pytest.raises now issues a DeprecationWarning.
It is a common mistake to think this parameter will match the exception message, \
while in fact it only serves to provide a custom message in case the \
pytest.raises check fails. To avoid this mistake and because it is believed to \
be little used, pytest is deprecating it without providing an alternative for \
the moment.
If you have concerns about this, please comment on issue 3974.
* Deprecated raises(..., 'code(as_a_string)') and warns(..., 'code(as_a_string)').
See https://docs.pytest.org/en/latest/deprecations.html#raises-warns-exec for \
rationale and examples.
Features
* A warning is now issued when assertions are made for None.
This is a common source of confusion among new users, which write:
assert mocked_object.assert_called_with(3, 4, 5, key="value")
When they should write:
mocked_object.assert_called_with(3, 4, 5, key="value")
Because the assert_called_with method of mock objects already executes an assertion.
This warning will not be issued when None is explicitly checked. An assertion like:
assert variable is None
will not issue the warning.
* Richer equality comparison introspection on AssertionError for objects created \
using attrs or dataclasses (Python 3.7+, backported to 3.6).
* CACHEDIR.TAG files are now created inside cache directories.
Those files are part of the Cache Directory Tagging Standard, and can be used by \
backup or synchronization programs to identify pytest’s cache directory as \
such.
* pytest.outcomes.Exit is derived from SystemExit instead of KeyboardInterrupt. \
This allows us to better handle pdb exiting.
* Updated the --collect-only option to display test descriptions when ran using \
--verbose.
* Restructured ExceptionInfo object construction and ensure incomplete instances \
have a repr/str.
* pdb: added support for keyword arguments with pdb.set_trace.
It handles header similar to Python 3.7 does it, and forwards any other keyword \
arguments to the Pdb constructor.
This allows for __import__("pdb").set_trace(skip=["foo.*"]).
* Added ini parameter junit_duration_report to optionally report test call \
durations, excluding setup and teardown times.
The JUnit XML specification and the default pytest behavior is to include setup \
and teardown times in the test duration report. You can include just the call \
durations instead (excluding setup and teardown) by adding this to your \
pytest.ini file:
[pytest]
junit_duration_report = call
* -ra now will show errors and failures last, instead of as the first items in \
the summary.
This makes it easier to obtain a list of errors and failures to run tests \
selectively.
* pytest.importorskip now supports a reason parameter, which will be shown when \
the requested module cannot be imported.
Bug Fixes
* -p now accepts its argument without a space between the value, for example \
-pmyplugin.
* approx again works with more generic containers, more precisely instances of \
Iterable and Sized instead of more restrictive Sequence.
* Ensure that node ids are printable.
* Fixed raises(..., 'code(string)') frame filename.
* Display actual test ids in --collect-only.
Improved Documentation
* Markers example documentation page updated to support latest pytest version.
* Update cache documentation example to correctly show cache hit and miss.
* Improved detailed summary report documentation.
Trivial/Internal Changes
* Changed the deprecation type of --result-log to PytestDeprecationWarning.
|
2018-12-14 15:44:22 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-test: updated to 4.0.2
pytest 4.0.2:
Bug Fixes
- Validate arguments from the PYTEST_ADDOPTS environment variable and the \
addopts ini option separately.
- Fix raises(..., 'code(string)') frame filename.
- When a fixture yields and a log call is made after the test runs, and, if the \
test is interrupted, capture attributes are None.
- Raise TypeError for with raises(..., match=<non-None falsey value>).
|
2018-12-11 00:59:20 by Leonardo Taccari | Files touched by this commit (1) |
Log message:
py-test: pathlib2 is needed by py27-test too
Due the if-elif condition pathlib2 was accidentally not marked as dependency
in the py27 case.
|