Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 3.3.0 #2945

Merged
merged 21 commits into from
Nov 27, 2017
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
4a0aea2
Add missing entry to CHANGELOG for 3.2.4
nicoddemus Nov 15, 2017
dd6c534
Remove py<1.5 restriction
nicoddemus Nov 15, 2017
a220a40
Preparing release version 3.2.5
nicoddemus Nov 15, 2017
74aaf91
Merge pull request #2927 from nicoddemus/release-3.2.5
nicoddemus Nov 15, 2017
f9029f1
Add Deprecation Roadmap to backward compatibility document
nicoddemus Nov 15, 2017
b0f558d
Add Future/Past Releases section
nicoddemus Nov 18, 2017
77bd0aa
Merge pull request #2931 from nicoddemus/deprecation-roadmap-docs
nicoddemus Nov 18, 2017
c8d52b6
Fix assertion rewrite to match module names correctly
nicoddemus Nov 22, 2017
8df7ed1
Merge pull request #2940 from nicoddemus/rewrite-bug-2939
The-Compiler Nov 22, 2017
5e71ffa
Handle marks without description
Perlence Nov 22, 2017
378eb5d
Minor formatting change in CHANGELOG
nicoddemus Nov 22, 2017
27935eb
Merge pull request #2943 from Perlence/fix-marks-without-description
nicoddemus Nov 22, 2017
f50ace7
Merge remote-tracking branch 'upstream/master' into release-3.3.0
nicoddemus Nov 23, 2017
e97c774
Remove vendoring import from tasks/__init__
nicoddemus Nov 23, 2017
aa9a02e
Preparing release version 3.3.0
nicoddemus Nov 23, 2017
0ddd3e2
Fix linting in CHANGELOG
nicoddemus Nov 23, 2017
05cfdcc
Revert making TerminalWriter public in TerminalReporter plugin
nicoddemus Nov 23, 2017
95de11a
Block pytest-catchlog and issue a warning
nicoddemus Nov 23, 2017
0de1a65
Update pluggy pin to pluggy>=0.5,<0.7 after pluggy-0.6 release
nicoddemus Nov 24, 2017
6eeacab
Fix typos in CHANGELOG
nicoddemus Nov 26, 2017
6cdd851
CHANGELOG and docs changes requested during review
nicoddemus Nov 27, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 184 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,187 @@

.. towncrier release notes start

Pytest 3.3.0 (2017-11-23)
=========================

Deprecations and Removals
-------------------------

- Remove internal ``_preloadplugins()`` function. This removal is part of the
``pytest_namespace()`` hook deprecation. (`#2236
<https://github.com/pytest-dev/pytest/issues/2236>`_)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This link is wrong, it should be #2636 if I'm not mistaken...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@uSpike it doesn't really matter, GH automatically redirects it to the appropriate page. 😉

All of our links use the pytest/issues/# form, even if the number actually points to a PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused because if I go to #2236 it's a PR about junitxml, "Change junitxml.py to produce results that comply with Junitxml schema"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@uSpike OH you are right, sorry I misinterpreted what you said.

I will fix this on master after the release, the package has just now finished testing and I would not like to go over the entire process again. 😁


- Internally change ``CallSpec2`` to have a list of marks instead of a broken
mapping of keywords. This removes the keywords attribute of the internal
``CallSpec2`` class. (`#2672
<https://github.com/pytest-dev/pytest/issues/2672>`_)

- remove ParameterSet.deprecated_arg_dict - its not a public api and the lack
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove -> Remove for consistency.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

of the underscore was a naming error. (`#2675
<https://github.com/pytest-dev/pytest/issues/2675>`_)

- Remove the internal multi-typed attribute ``Node._evalskip`` and replace it
with the boolean ``Node._skipped_by_mark``. (`#2767
<https://github.com/pytest-dev/pytest/issues/2767>`_)

- Pytest no longer supports Python **2.6** and **3.3**. Those Python versions
are EOL for some time now and incurr maintanance and compatibility costs on
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo maintanance should be maintenance.

the pytest core team, and following up with the rest of the community we
decided that they will no longer be supported starting on this version. Users
which still require those versions should pin pytest to ``<3.3``. (`#2812
<https://github.com/pytest-dev/pytest/issues/2812>`_)


Features
--------

- ``pytest_fixture_post_finalizer`` hook can now receive a ``request``
argument. (`#2124 <https://github.com/pytest-dev/pytest/issues/2124>`_)

- Replace the old introspection code in compat.py that determines the available
arguments of fixtures with inspect.signature on Python 3 and
funcsigs.signature on Python 2. This should respect __signature__
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to add `` around __signature__.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

declarations on functions. (`#2267
<https://github.com/pytest-dev/pytest/issues/2267>`_)

- Report only once tests with global ``pytestmark`` variable. (`#2549
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Report tests with ... only once.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

<https://github.com/pytest-dev/pytest/issues/2549>`_)

- Now pytest displays the total progress percentage while running tests. The
previous output style can be set by setting the new ``console_output_style``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the new ... -> the new ... setting?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

to ``classic``. (`#2657 <https://github.com/pytest-dev/pytest/issues/2657>`_)

- Match ``warns`` signature to ``raises`` by adding ``match`` keyworkd. (`#2708
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo meant to be keyword

<https://github.com/pytest-dev/pytest/issues/2708>`_)

- Pytest now captures and displays output from the standard `logging` module.
The user can control the logging level to be captured by specifying options
in ``pytest.ini``, the command line and also during individual tests using
markers. Also, a ``caplog`` fixture is available that enables users to test
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whaaa caplog is dope!

the captured log during specific tests (similar to ``capsys`` for example).
For more information, please see the `logging docs
<https://docs.pytest.org/en/latest/logging.html>`_. This feature was
introduced by merging the popular `pytest-catchlog
<https://pypi.org/project/pytest-catchlog/>`_ plugin, thanks to `Thomas Hisch
<https://github.com/thisch>`_. Be advised that during the merging the
backward compatibility interface with the defunct ``pytest-capturelog`` has
been dropped. (`#2794 <https://github.com/pytest-dev/pytest/issues/2794>`_)

- Add ``allow_module_level`` kwarg to ``pytest.skip()``, enabling to skip the
whole module. (`#2808 <https://github.com/pytest-dev/pytest/issues/2808>`_)

- Allow setting ``file_or_dir``, ``-c``, and ``-o`` in PYTEST_ADDOPTS. (`#2824
<https://github.com/pytest-dev/pytest/issues/2824>`_)

- Return stdout/stderr capture results as a ``namedtuple``, so ``out`` and
``err`` can be accessed by attribute. (`#2879
<https://github.com/pytest-dev/pytest/issues/2879>`_)

- Add ``capfdbinary`` a version of ``capfd`` which returns bytes from
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comma before "a version"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

``readouterr()``. (`#2923
<https://github.com/pytest-dev/pytest/issues/2923>`_)

- Add ``capsysbinary`` a version of ``capsys`` which returns bytes from
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comma before "a version"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

``readouterr()``. (`#2934
<https://github.com/pytest-dev/pytest/issues/2934>`_)

- Implement feature to skip ``setup.py`` files when ran with
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ran -> run

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

``--doctest-modules``. (`#502
<https://github.com/pytest-dev/pytest/issues/502>`_)


Bug Fixes
---------

- Resume output capturing after ``capsys/capfd.disabled()`` context manager.
(`#1993 <https://github.com/pytest-dev/pytest/issues/1993>`_)

- ``pytest_fixture_setup`` and ``pytest_fixture_post_finalizer`` hooks are now
called for all ``conftest.py`` files. (`#2124
<https://github.com/pytest-dev/pytest/issues/2124>`_)

- If an exception happens while loading a plugin, pytest no longer hides the
original traceback. In python2 it will show the original traceback with a new
message that explains in which plugin. In python3 it will show 2 canonized
exceptions, the original exception while loading the plugin in addition to an
exception that PyTest throws about loading a plugin. (`#2491
<https://github.com/pytest-dev/pytest/issues/2491>`_)

- ``capsys`` and ``capfd`` can now be used by other fixtures. (`#2709
<https://github.com/pytest-dev/pytest/issues/2709>`_)

- Internal ``pytester`` plugin properly encodes ``bytes`` arguments to
``utf-8``. (`#2738 <https://github.com/pytest-dev/pytest/issues/2738>`_)

- ``testdir`` now uses use the same method used by ``tmpdir`` to create its
temporary directory. This changes the final structure of the ``testdir``
directory slightly, but should not affect usage in normal scenarios and
avoids a number of potential problems. (`#2751
<https://github.com/pytest-dev/pytest/issues/2751>`_)

- Pytest no longer complains about warnings with unicode messages being
non-ascii compatible even for ascii-compatible messages. As a result of this,
warnings with unicode messages are converted first to an ascii representation
for safety. (`#2809 <https://github.com/pytest-dev/pytest/issues/2809>`_)

- Change return value of pytest command when ``--maxfail`` is reached from
``2`` (interrupted) to ``1`` (failed). (`#2845
<https://github.com/pytest-dev/pytest/issues/2845>`_)

- Fix issue in assertion rewriting which could lead it to rewrite modules which
should not be rewritten. (`#2939
<https://github.com/pytest-dev/pytest/issues/2939>`_)

- Handle marks without description in ``pytest.ini``. (`#2942
<https://github.com/pytest-dev/pytest/issues/2942>`_)


Trivial/Internal Changes
------------------------

- pytest now depends on `attrs <https://pypi.org/project/attrs/>`_ for internal
structures to ease code maintainability. (`#2641
<https://github.com/pytest-dev/pytest/issues/2641>`_)

- Refactored internal Python 2/3 compatibility code to use ``six``. (`#2642
<https://github.com/pytest-dev/pytest/issues/2642>`_)

- Stop vendoring ``pluggy`` - we're missing out on it's latest changes for not
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heh looks like a typo on my part: should be its.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yikes - based on the number of minor easy to miss typos, we should investigate better news file auto scanning - else we run into them all at once at release time

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or actually start reviewing changelog entries 😉

much benefit (`#2719 <https://github.com/pytest-dev/pytest/issues/2719>`_)

- Internal refactor: simplify ascii string escaping by using the
backslashreplace error handler in newer Python 3 versions. (`#2734
<https://github.com/pytest-dev/pytest/issues/2734>`_)

- Remove unnecessary mark evaluator in unittest plugin (`#2767
<https://github.com/pytest-dev/pytest/issues/2767>`_)

- Calls to ``Metafunc.addcall`` now emit a deprecation warning. This function
is scheduled to be removed in ``pytest-4.0``. (`#2876
<https://github.com/pytest-dev/pytest/issues/2876>`_)

- Internal move of the parameterset extraction to a more maintainable place.
(`#2877 <https://github.com/pytest-dev/pytest/issues/2877>`_)

- Internal refactoring to simplify scope node lookup. (`#2910
<https://github.com/pytest-dev/pytest/issues/2910>`_)

- Configure ``pytest`` to prevent pip from installing pytest in unsupported
Python versions. (`#2922
<https://github.com/pytest-dev/pytest/issues/2922>`_)


Pytest 3.2.5 (2017-11-15)
=========================

Bug Fixes
---------

- Remove ``py<1.5`` restriction from ``pytest`` as this can cause version
conflicts in some installations. (`#2926
<https://github.com/pytest-dev/pytest/issues/2926>`_)


Pytest 3.2.4 (2017-11-13)
=========================

Expand All @@ -28,6 +209,8 @@ Bug Fixes
failed example in the docstring is < 9. (`#2882
<https://github.com/pytest-dev/pytest/issues/2882>`_)

- Match fixture paths against actual path segments in order to avoid matching folders which share a prefix.
(`#2836 <https://github.com/pytest-dev/pytest/issues/2836>`_)

Improved Documentation
----------------------
Expand Down Expand Up @@ -179,7 +362,7 @@ Deprecations and Removals
-------------------------

- ``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=``
operators to avoid surprising/inconsistent behavior. See `the docs
operators to avoid surprising/inconsistent behavior. See `the approx docs
<https://docs.pytest.org/en/latest/builtin.html#pytest.approx>`_ for more
information. (`#2003 <https://github.com/pytest-dev/pytest/issues/2003>`_)

Expand Down
2 changes: 1 addition & 1 deletion _pytest/assertion/rewrite.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def _should_rewrite(self, name, fn_pypath, state):
return True

for marked in self._must_rewrite:
if name.startswith(marked):
if name == marked or name.startswith(marked + '.'):
state.trace("matched marked file %r (from %r)" % (name, marked))
return True

Expand Down
6 changes: 5 additions & 1 deletion _pytest/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,10 @@ def parse_hookspec_opts(self, module_or_class, name):
return opts

def register(self, plugin, name=None):
if name == 'pytest_catchlog':
self._warn('pytest-catchlog plugin has been merged into the core, '
'please remove it from your requirements.')
return
ret = super(PytestPluginManager, self).register(plugin, name)
if ret:
self.hook.pytest_plugin_registered.call_historic(
Expand Down Expand Up @@ -931,7 +935,7 @@ def warn(self, code, message, fslocation=None, nodeid=None):
fslocation=fslocation, nodeid=nodeid))

def get_terminal_writer(self):
return self.pluginmanager.get_plugin("terminalreporter").writer
return self.pluginmanager.get_plugin("terminalreporter")._tw

def pytest_cmdline_parse(self, pluginmanager, args):
# REF1 assert self == pluginmanager.config, (self, pluginmanager.config)
Expand Down
2 changes: 1 addition & 1 deletion _pytest/debugging.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def _enter_pdb(node, excinfo, rep):
# XXX we re-use the TerminalReporter's terminalwriter
# because this seems to avoid some encoding related troubles
# for not completely clear reasons.
tw = node.config.pluginmanager.getplugin("terminalreporter").writer
tw = node.config.pluginmanager.getplugin("terminalreporter")._tw
tw.line()
tw.sep(">", "traceback")
rep.toterminal(tw)
Expand Down
2 changes: 1 addition & 1 deletion _pytest/helpconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def pytest_cmdline_main(config):

def showhelp(config):
reporter = config.pluginmanager.get_plugin('terminalreporter')
tw = reporter.writer
tw = reporter._tw
tw.write(config._parser.optparser.format_help())
tw.line()
tw.line()
Expand Down
6 changes: 4 additions & 2 deletions _pytest/mark.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,9 @@ def pytest_cmdline_main(config):
config._do_configure()
tw = _pytest.config.create_terminal_writer(config)
for line in config.getini("markers"):
name, rest = line.split(":", 1)
parts = line.split(":", 1)
name = parts[0]
rest = parts[1] if len(parts) == 2 else ''
tw.write("@pytest.mark.%s:" % name, bold=True)
tw.line(rest)
tw.line()
Expand Down Expand Up @@ -298,7 +300,7 @@ def _check(self, name):
pass
self._markers = values = set()
for line in self._config.getini("markers"):
marker, _ = line.split(":", 1)
marker = line.split(":", 1)[0]
marker = marker.rstrip()
x = marker.split("(", 1)[0]
values.add(x)
Expand Down
6 changes: 3 additions & 3 deletions _pytest/pastebin.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ def pytest_configure(config):
if tr is not None:
# pastebin file will be utf-8 encoded binary file
config._pastebinfile = tempfile.TemporaryFile('w+b')
oldwrite = tr.writer.write
oldwrite = tr._tw.write

def tee_write(s, **kwargs):
oldwrite(s, **kwargs)
if isinstance(s, six.text_type):
s = s.encode('utf-8')
config._pastebinfile.write(s)

tr.writer.write = tee_write
tr._tw.write = tee_write


def pytest_unconfigure(config):
Expand All @@ -45,7 +45,7 @@ def pytest_unconfigure(config):
del config._pastebinfile
# undo our patching in the terminal reporter
tr = config.pluginmanager.getplugin('terminalreporter')
del tr.writer.__dict__['write']
del tr._tw.__dict__['write']
# write summary
tr.write_sep("=", "Sending information to Paste Service")
pastebinurl = create_new_paste(sessionlog)
Expand Down
4 changes: 2 additions & 2 deletions _pytest/skipping.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,9 +308,9 @@ def pytest_terminal_summary(terminalreporter):
show_simple(terminalreporter, lines, 'passed', "PASSED %s")

if lines:
tr.writer.sep("=", "short test summary info")
tr._tw.sep("=", "short test summary info")
for line in lines:
tr.writer.line(line)
tr._tw.line(line)


def show_simple(terminalreporter, lines, stat, format):
Expand Down
Loading