[Pytest-commit] commit/pytest: 3 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Oct 1 12:39:25 CEST 2013
3 new commits in pytest:
https://bitbucket.org/hpk42/pytest/commits/af860de70cc3/
Changeset: af860de70cc3
User: hpk42
Date: 2013-10-01 10:43:36
Summary: bump version to 2.4.0
Affected #: 3 files
diff -r b2058c24af7a3cc8d64d037abc7622cac4c5d446 -r af860de70cc3f157ac34ca1d4bf557a057bff775 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,4 @@
-Changes between 2.3.5 and 2.4.DEV
+Changes between 2.3.5 and 2.4
-----------------------------------
known incompatibilities:
diff -r b2058c24af7a3cc8d64d037abc7622cac4c5d446 -r af860de70cc3f157ac34ca1d4bf557a057bff775 _pytest/__init__.py
--- a/_pytest/__init__.py
+++ b/_pytest/__init__.py
@@ -1,2 +1,2 @@
#
-__version__ = '2.4.0.dev14'
+__version__ = '2.4.0'
diff -r b2058c24af7a3cc8d64d037abc7622cac4c5d446 -r af860de70cc3f157ac34ca1d4bf557a057bff775 setup.py
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@
long_description = open("README.rst").read()
def main():
- install_requires = ["py>=1.4.15"]
+ install_requires = ["py>=1.4.16"]
if sys.version_info < (2,7):
install_requires.append("argparse")
@@ -11,7 +11,7 @@
name='pytest',
description='py.test: simple powerful testing with Python',
long_description = long_description,
- version='2.4.0.dev14',
+ version='2.4.0',
url='http://pytest.org',
license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
https://bitbucket.org/hpk42/pytest/commits/49b10f86e351/
Changeset: 49b10f86e351
User: hpk42
Date: 2013-10-01 10:43:40
Summary: Added tag 2.4.0 for changeset af860de70cc3
Affected #: 1 file
diff -r af860de70cc3f157ac34ca1d4bf557a057bff775 -r 49b10f86e35114a851957723058328e2f45e2657 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -60,3 +60,4 @@
0000000000000000000000000000000000000000 1.4.14
0000000000000000000000000000000000000000 1.4.14
0000000000000000000000000000000000000000 1.4.14
+af860de70cc3f157ac34ca1d4bf557a057bff775 2.4.0
https://bitbucket.org/hpk42/pytest/commits/4a3891297f91/
Changeset: 4a3891297f91
User: hpk42
Date: 2013-10-01 12:37:11
Summary: release announcement, bump version numbers, some test adapatations because of random win32 test failures.
Affected #: 9 files
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf _pytest/pytester.py
--- a/_pytest/pytester.py
+++ b/_pytest/pytester.py
@@ -661,6 +661,12 @@
else:
raise ValueError("line %r not found in output" % line)
+ def get_lines_after(self, fnline):
+ for i, line in enumerate(self.lines):
+ if fnline == line or fnmatch(line, fnline):
+ return self.lines[i+1:]
+ raise ValueError("line %r not found in output" % fnline)
+
def fnmatch_lines(self, lines2):
def show(arg1, arg2):
py.builtin.print_(arg1, arg2, file=py.std.sys.stderr)
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/Makefile
--- a/doc/en/Makefile
+++ b/doc/en/Makefile
@@ -12,7 +12,7 @@
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-SITETARGET=dev
+SITETARGET=latest
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/announce/index.txt
--- a/doc/en/announce/index.txt
+++ b/doc/en/announce/index.txt
@@ -5,6 +5,7 @@
.. toctree::
:maxdepth: 2
+ release-2.4.0
release-2.3.5
release-2.3.4
release-2.3.3
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/announce/release-2.4.0.txt
--- /dev/null
+++ b/doc/en/announce/release-2.4.0.txt
@@ -0,0 +1,225 @@
+pytest-2.4.0: new fixture features/hooks and bug fixes
+===========================================================================
+
+The just released pytest-2.4.0 brings many improvements and numerous
+bug fixes while remaining plugin- and test-suite compatible apart
+from a few supposedly very minor incompatibilities. See below for
+a full list of details. A few feature highlights:
+
+- new yield-style fixtures `pytest.yield_fixture
+ <http://pytest.org/latest/yieldfixture.html>`_, allowing to use
+ existing with-style context managers in fixture functions.
+
+- improved pdb support: ``import pdb ; pdb.set_trace()`` now works
+ without requiring prior disabling of stdout/stderr capturing.
+ Also the ``--pdb`` options works now on collection and internal errors
+ and we introduced a new experimental hook for IDEs/plugins to
+ intercept debugging: ``pytest_exception_interact(node, call, report)``.
+
+- shorter monkeypatch variant to allow specifying an import path as
+ a target, for example: ``monkeypatch.setattr("requests.get", myfunc)``
+
+- better unittest/nose compatibility: all teardown methods are now only
+ called if the corresponding setup method succeeded.
+
+- integrate tab-completion on command line options if you
+ have `argcomplete <http://pypi.python.org/pypi/argcomplete>`_
+ configured.
+
+- allow boolean expression directly with skipif/xfail
+ if a "reason" is also specified.
+
+- a new hook ``pytest_load_initial_conftests`` allows plugins like
+ `pytest-django <http://pypi.python.org/pypi/pytest-django>`_ to
+ influence the environment before conftest files import ``django``.
+
+- reporting: color the last line red or green depending if
+ failures/errors occured or everything passed.
+
+The documentation has been updated to accomodate the changes,
+see `http://pytest.org <http://pytest.org>`_
+
+To install or upgrade pytest::
+
+ pip install -U pytest # or
+ easy_install -U pytest
+
+
+**Many thanks to all who helped, including Floris Bruynooghe,
+Brianna Laugher, Andreas Pelme, Anthon van der Neut, Anatoly Bubenkoff,
+Vladimir Keleshev, Mathieu Agopian, Ronny Pfannschmidt, Christian
+Theunert and many others.**
+
+may passing tests be with you,
+
+holger krekel
+
+Changes between 2.3.5 and 2.4
+-----------------------------------
+
+known incompatibilities:
+
+- if calling --genscript from python2.7 or above, you only get a
+ standalone script which works on python2.7 or above. Use Python2.6
+ to also get a python2.5 compatible version.
+
+- all xunit-style teardown methods (nose-style, pytest-style,
+ unittest-style) will not be called if the corresponding setup method failed,
+ see issue322 below.
+
+- the pytest_plugin_unregister hook wasn't ever properly called
+ and there is no known implementation of the hook - so it got removed.
+
+- pytest.fixture-decorated functions cannot be generators (i.e. use
+ yield) anymore. This change might be reversed in 2.4.1 if it causes
+ unforeseen real-life issues. However, you can always write and return
+ an inner function/generator and change the fixture consumer to iterate
+ over the returned generator. This change was done in lieu of the new
+ ``pytest.yield_fixture`` decorator, see below.
+
+new features:
+
+- experimentally introduce a new ``pytest.yield_fixture`` decorator
+ which accepts exactly the same parameters as pytest.fixture but
+ mandates a ``yield`` statement instead of a ``return statement`` from
+ fixture functions. This allows direct integration with "with-style"
+ context managers in fixture functions and generally avoids registering
+ of finalization callbacks in favour of treating the "after-yield" as
+ teardown code. Thanks Andreas Pelme, Vladimir Keleshev, Floris
+ Bruynooghe, Ronny Pfannschmidt and many others for discussions.
+
+- allow boolean expression directly with skipif/xfail
+ if a "reason" is also specified. Rework skipping documentation
+ to recommend "condition as booleans" because it prevents surprises
+ when importing markers between modules. Specifying conditions
+ as strings will remain fully supported.
+
+- reporting: color the last line red or green depending if
+ failures/errors occured or everything passed. thanks Christian
+ Theunert.
+
+- make "import pdb ; pdb.set_trace()" work natively wrt capturing (no
+ "-s" needed anymore), making ``pytest.set_trace()`` a mere shortcut.
+
+- fix issue181: --pdb now also works on collect errors (and
+ on internal errors) . This was implemented by a slight internal
+ refactoring and the introduction of a new hook
+ ``pytest_exception_interact`` hook (see next item).
+
+- fix issue341: introduce new experimental hook for IDEs/terminals to
+ intercept debugging: ``pytest_exception_interact(node, call, report)``.
+
+- new monkeypatch.setattr() variant to provide a shorter
+ invocation for patching out classes/functions from modules:
+
+ monkeypatch.setattr("requests.get", myfunc)
+
+ will replace the "get" function of the "requests" module with ``myfunc``.
+
+- fix issue322: tearDownClass is not run if setUpClass failed. Thanks
+ Mathieu Agopian for the initial fix. Also make all of pytest/nose
+ finalizer mimick the same generic behaviour: if a setupX exists and
+ fails, don't run teardownX. This internally introduces a new method
+ "node.addfinalizer()" helper which can only be called during the setup
+ phase of a node.
+
+- simplify pytest.mark.parametrize() signature: allow to pass a
+ CSV-separated string to specify argnames. For example:
+ ``pytest.mark.parametrize("input,expected", [(1,2), (2,3)])``
+ works as well as the previous:
+ ``pytest.mark.parametrize(("input", "expected"), ...)``.
+
+- add support for setUpModule/tearDownModule detection, thanks Brian Okken.
+
+- integrate tab-completion on options through use of "argcomplete".
+ Thanks Anthon van der Neut for the PR.
+
+- change option names to be hyphen-separated long options but keep the
+ old spelling backward compatible. py.test -h will only show the
+ hyphenated version, for example "--collect-only" but "--collectonly"
+ will remain valid as well (for backward-compat reasons). Many thanks to
+ Anthon van der Neut for the implementation and to Hynek Schlawack for
+ pushing us.
+
+- fix issue 308 - allow to mark/xfail/skip individual parameter sets
+ when parametrizing. Thanks Brianna Laugher.
+
+- call new experimental pytest_load_initial_conftests hook to allow
+ 3rd party plugins to do something before a conftest is loaded.
+
+Bug fixes:
+
+- fix issue358 - capturing options are now parsed more properly
+ by using a new parser.parse_known_args method.
+
+- pytest now uses argparse instead of optparse (thanks Anthon) which
+ means that "argparse" is added as a dependency if installing into python2.6
+ environments or below.
+
+- fix issue333: fix a case of bad unittest/pytest hook interaction.
+
+- PR27: correctly handle nose.SkipTest during collection. Thanks
+ Antonio Cuni, Ronny Pfannschmidt.
+
+- fix issue355: junitxml puts name="pytest" attribute to testsuite tag.
+
+- fix issue336: autouse fixture in plugins should work again.
+
+- fix issue279: improve object comparisons on assertion failure
+ for standard datatypes and recognise collections.abc. Thanks to
+ Brianna Laugher and Mathieu Agopian.
+
+- fix issue317: assertion rewriter support for the is_package method
+
+- fix issue335: document py.code.ExceptionInfo() object returned
+ from pytest.raises(), thanks Mathieu Agopian.
+
+- remove implicit distribute_setup support from setup.py.
+
+- fix issue305: ignore any problems when writing pyc files.
+
+- SO-17664702: call fixture finalizers even if the fixture function
+ partially failed (finalizers would not always be called before)
+
+- fix issue320 - fix class scope for fixtures when mixed with
+ module-level functions. Thanks Anatloy Bubenkoff.
+
+- you can specify "-q" or "-qq" to get different levels of "quieter"
+ reporting (thanks Katarzyna Jachim)
+
+- fix issue300 - Fix order of conftest loading when starting py.test
+ in a subdirectory.
+
+- fix issue323 - sorting of many module-scoped arg parametrizations
+
+- make sessionfinish hooks execute with the same cwd-context as at
+ session start (helps fix plugin behaviour which write output files
+ with relative path such as pytest-cov)
+
+- fix issue316 - properly reference collection hooks in docs
+
+- fix issue 306 - cleanup of -k/-m options to only match markers/test
+ names/keywords respectively. Thanks Wouter van Ackooy.
+
+- improved doctest counting for doctests in python modules --
+ files without any doctest items will not show up anymore
+ and doctest examples are counted as separate test items.
+ thanks Danilo Bellini.
+
+- fix issue245 by depending on the released py-1.4.14
+ which fixes py.io.dupfile to work with files with no
+ mode. Thanks Jason R. Coombs.
+
+- fix junitxml generation when test output contains control characters,
+ addressing issue267, thanks Jaap Broekhuizen
+
+- fix issue338: honor --tb style for setup/teardown errors as well. Thanks Maho.
+
+- fix issue307 - use yaml.safe_load in example, thanks Mark Eichin.
+
+- better parametrize error messages, thanks Brianna Laugher
+
+- pytest_terminal_summary(terminalreporter) hooks can now use
+ ".section(title)" and ".line(msg)" methods to print extra
+ information at the end of a test run.
+
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/conf.py
--- a/doc/en/conf.py
+++ b/doc/en/conf.py
@@ -17,7 +17,7 @@
#
# The full version, including alpha/beta/rc tags.
# The short X.Y version.
-version = release = "2.4.0.dev"
+version = release = "2.4.0"
import sys, os
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/faq.txt
--- a/doc/en/faq.txt
+++ b/doc/en/faq.txt
@@ -3,9 +3,10 @@
.. note::
- If you don't find an answer here, you may checkout
+ This FAQ is here only mostly for historic reasons. Checkout
`pytest Q&A at Stackoverflow <http://stackoverflow.com/search?q=pytest>`_
- or other :ref:`contact channels` to get help.
+ for many questions and answers related to pytest and/or use
+ :ref:`contact channels` to get help.
On naming, nosetests, licensing and magic
------------------------------------------------
@@ -94,12 +95,12 @@
is another tool named "pytest" we just decided to stick with
``py.test`` for now.
-Function arguments, parametrized tests and setup
+pytest fixtures, parametrized tests
-------------------------------------------------------
.. _funcargs: funcargs.html
-Is using funcarg- versus xUnit setup a style question?
+Is using pytest fixtures versus xUnit setup a style question?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
For simple applications and for people experienced with nose_ or
@@ -117,20 +118,6 @@
.. _`why pytest_pyfuncarg__ methods?`:
-Why the ``pytest_funcarg__*`` name for funcarg factories?
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-We like `Convention over Configuration`_ and didn't see much point
-in allowing a more flexible or abstract mechanism. Moreover,
-it is nice to be able to search for ``pytest_funcarg__MYARG`` in
-source code and safely find all factory functions for
-the ``MYARG`` function argument.
-
-.. note::
-
- With pytest-2.3 you can use the :ref:`@pytest.fixture` decorator
- to mark a function as a fixture function.
-
.. _`Convention over Configuration`: http://en.wikipedia.org/wiki/Convention_over_Configuration
Can I yield multiple values from a fixture function function?
@@ -139,16 +126,16 @@
There are two conceptual reasons why yielding from a factory function
is not possible:
+* If multiple factories yielded values there would
+ be no natural place to determine the combination
+ policy - in real-world examples some combinations
+ often should not run.
+
* Calling factories for obtaining test function arguments
is part of setting up and running a test. At that
point it is not possible to add new test calls to
the test collection anymore.
-* If multiple factories yielded values there would
- be no natural place to determine the combination
- policy - in real-world examples some combinations
- often should not run.
-
However, with pytest-2.3 you can use the :ref:`@pytest.fixture` decorator
and specify ``params`` so that all tests depending on the factory-created
resource will run multiple times with different parameters.
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf doc/en/fixture.txt
--- a/doc/en/fixture.txt
+++ b/doc/en/fixture.txt
@@ -34,6 +34,12 @@
prefer. You can also start out from existing :ref:`unittest.TestCase
style <unittest.TestCase>` or :ref:`nose based <nosestyle>` projects.
+.. note::
+
+ pytest-2.4 introduced an additional experimental
+ :ref:`yield fixture mechanism <yieldfixture>` for easier context manager
+ integration and more linear writing of teardown code.
+
.. _`funcargs`:
.. _`funcarg mechanism`:
.. _`fixture function`:
@@ -275,9 +281,6 @@
module itself does not need to change or know about these details
of fixture setup.
-Note that pytest-2.4 introduced an experimental alternative
-:ref:`yield fixture mechanism <yieldfixture>` for easier context manager
-integration and more linear writing of teardown code.
.. _`request-context`:
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf testing/acceptance_test.py
--- a/testing/acceptance_test.py
+++ b/testing/acceptance_test.py
@@ -504,7 +504,7 @@
class TestDurations:
source = """
import time
- frag = 0.02
+ frag = 0.002
def test_something():
pass
def test_2():
@@ -519,7 +519,7 @@
testdir.makepyfile(self.source)
result = testdir.runpytest("--durations=10")
assert result.ret == 0
- result.stdout.fnmatch_lines([
+ result.stdout.fnmatch_lines_random([
"*durations*",
"*call*test_3*",
"*call*test_2*",
@@ -530,12 +530,8 @@
testdir.makepyfile(self.source)
result = testdir.runpytest("--durations=2")
assert result.ret == 0
- result.stdout.fnmatch_lines([
- "*durations*",
- "*call*test_3*",
- "*call*test_2*",
- ])
- assert "test_1" not in result.stdout.str()
+ lines = result.stdout.get_lines_after("*slowest*durations*")
+ assert "4 passed" in lines[2]
def test_calls_showall(self, testdir):
testdir.makepyfile(self.source)
@@ -573,7 +569,7 @@
class TestDurationWithFixture:
source = """
import time
- frag = 0.01
+ frag = 0.001
def setup_function(func):
time.sleep(frag * 3)
def test_1():
diff -r 49b10f86e35114a851957723058328e2f45e2657 -r 4a3891297f9131f1e4944bfc68bb23d1a29c75cf testing/test_junitxml.py
--- a/testing/test_junitxml.py
+++ b/testing/test_junitxml.py
@@ -1,4 +1,4 @@
-
+import pytest
from xml.dom import minidom
import py, sys, os
@@ -427,16 +427,16 @@
def test_logxml_path_expansion(tmpdir, monkeypatch):
from _pytest.junitxml import LogXML
- home_tilde = os.path.normpath(os.path.expanduser('~/test.xml'))
+ home_tilde = py.path.local(os.path.expanduser('~')).join('test.xml')
- xml_tilde = LogXML('~/test.xml', None)
+ xml_tilde = LogXML('~%stest.xml' % tmpdir.sep, None)
assert xml_tilde.logfile == home_tilde
# this is here for when $HOME is not set correct
monkeypatch.setenv("HOME", tmpdir)
home_var = os.path.normpath(os.path.expandvars('$HOME/test.xml'))
- xml_var = LogXML('$HOME/test.xml', None)
+ xml_var = LogXML('$HOME%stest.xml' % tmpdir.sep, None)
assert xml_var.logfile == home_var
def test_logxml_changingdir(testdir):
Repository URL: https://bitbucket.org/hpk42/pytest/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the pytest-commit
mailing list