4 new commits in pytest:
https://bitbucket.org/hpk42/pytest/commits/beb37acf4967/
Changeset: beb37acf4967
User: magopian
Date: 2013-08-01 11:12:02
Summary: fixes #335: document ExceptionInfo returned by pytest.raises
Affected #: 1 file
diff -r 2d92b2270aba23d130c8e75c4f145e1e45427deb -r
beb37acf49678f8a9c6c2dc3bb586df5f96dd173 doc/en/assert.txt
--- a/doc/en/assert.txt
+++ b/doc/en/assert.txt
@@ -78,6 +78,12 @@
# do checks related to excinfo.type, excinfo.value, excinfo.traceback
+``excinfo`` is a `py.code.ExceptionInfo`_ instance, which is a wrapper around
+the actual exception raised.
+
+.. _py.code.ExceptionInfo:
+ http://pylib.readthedocs.org/en/latest/code.html#py-code-exceptioninfo
+
If you want to write test code that works on Python 2.4 as well,
you may also use two other ways to test for an expected exception::
https://bitbucket.org/hpk42/pytest/commits/fb9780b2d817/
Changeset: fb9780b2d817
User: magopian
Date: 2013-08-01 11:12:59
Summary: Merged hpk42/pytest into default
Affected #: 2 files
diff -r beb37acf49678f8a9c6c2dc3bb586df5f96dd173 -r
fb9780b2d8170817a14786a207addb0b6259b873 ISSUES.txt
--- a/ISSUES.txt
+++ b/ISSUES.txt
@@ -1,10 +1,4 @@
-improve / add to dependency/test resource injection
--------------------------------------------------------------
-tags: wish feature docs
-
-write up better examples showing the connection between
-the two.
refine parametrize API
-------------------------------------------------------------
@@ -94,20 +88,6 @@
record which implementations of a hook succeeded and only call their
teardown.
-consider and document __init__ file usage in test directories
----------------------------------------------------------------
-tags: bug core
-
-Currently, a test module is imported with its fully qualified
-package path, determined by checking __init__ files upwards.
-This has the side effect that a source package at the root
-of the test dir could be imported as well. This is somewhat
-convenient but complicates the picture for running tests against
-different versions of a package. Also, implicit sys.path
-manipulations are problematic per-se. Maybe factorting out
-a pytest_addsyspath hook which can be disabled from the command line
-makes sense. In any case documentation/recommendations for
-certain scenarios makes sense.
relax requirement to have tests/testing contain an __init__
----------------------------------------------------------------
@@ -220,32 +200,10 @@
having py.test.config and ensuretemp coming from
a plugin rather than being there from the start.
-consider allowing funcargs for setup methods
---------------------------------------------------------------
-tags: experimental-wish
-
-Users have expressed the wish to have funcargs available to setup
-functions. Experiment with allowing funcargs there - it might
-also help to make the py.test.ensuretemp and config deprecation.
-For filling funcargs for setup methods, we could call funcarg
-factories with a request object that not have a cls/function
-attributes. However, how to handle parametrized test functions
-and funcargs?
-
-maybe introduce a setup method like:
-
- setup_invocation(self, request)
-
-which has full access to the test invocation through "request"
-through which you can get funcargvalues, use cached_setup etc.
-Therefore, the access to funcargs would be indirect but it
-could be consistently implemented. setup_invocation() would
-be a "glue" function for bringing together the xUnit and funcargs
-world.
consider pytest_addsyspath hook
-----------------------------------------
-tags:
+tags: wish
py.test could call a new pytest_addsyspath() in order to systematically
allow manipulation of sys.path and to inhibit it via --no-addsyspath
@@ -255,13 +213,6 @@
and pytest_configure.
-show plugin information in test header
-----------------------------------------------------------------
-tags: feature
-
-Now that external plugins are becoming more numerous
-it would be useful to have external plugins along with
-their versions displayed as a header line.
deprecate global py.test.config usage
----------------------------------------------------------------
diff -r beb37acf49678f8a9c6c2dc3bb586df5f96dd173 -r
fb9780b2d8170817a14786a207addb0b6259b873 testing/test_parseopt.py
--- a/testing/test_parseopt.py
+++ b/testing/test_parseopt.py
@@ -174,9 +174,9 @@
result.stdout.fnmatch_lines(["hint: hello world", "hint: from me too"])
@pytest.mark.skipif("sys.version_info < (2,5)")
-def test_argcomplete(testdir):
+def test_argcomplete(testdir, monkeypatch):
if not py.path.local.sysfind('bash'):
- pytest.skip("bash not available")
+ pytest.skip("bash not available")
import os
script = os.path.join(os.getcwd(), 'test_argcomplete')
with open(str(script), 'w') as fp:
@@ -185,13 +185,16 @@
# so we use bash
fp.write('COMP_WORDBREAKS="$COMP_WORDBREAKS" $(which py.test) '
'8>&1 9>&2')
- os.environ['_ARGCOMPLETE'] = "1"
- os.environ['_ARGCOMPLETE_IFS'] = "\x0b"
- os.environ['COMP_WORDBREAKS'] = ' \\t\\n"\\\'><=;|&(:'
+ # alternative would be exteneded Testdir.{run(),_run(),popen()} to be able
+ # to handle a keyword argument env that replaces os.environ in popen or
+ # extends the copy, advantage: could not forget to restore
+ monkeypatch.setenv('_ARGCOMPLETE', "1")
+ monkeypatch.setenv('_ARGCOMPLETE_IFS',"\x0b")
+ monkeypatch.setenv('COMP_WORDBREAKS', ' \\t\\n"\\\'><=;|&(:')
arg = '--fu'
- os.environ['COMP_LINE'] = "py.test " + arg
- os.environ['COMP_POINT'] = str(len(os.environ['COMP_LINE']))
+ monkeypatch.setenv('COMP_LINE', "py.test " + arg)
+ monkeypatch.setenv('COMP_POINT', str(len("py.test " + arg)))
result = testdir.run('bash', str(script), arg)
print dir(result), result.ret
if result.ret == 255:
@@ -202,7 +205,8 @@
os.mkdir('test_argcomplete.d')
arg = 'test_argc'
- os.environ['COMP_LINE'] = "py.test " + arg
- os.environ['COMP_POINT'] = str(len(os.environ['COMP_LINE']))
+ monkeypatch.setenv('COMP_LINE', "py.test " + arg)
+ monkeypatch.setenv('COMP_POINT', str(len('py.test ' + arg)))
result = testdir.run('bash', str(script), arg)
result.stdout.fnmatch_lines(["test_argcomplete", "test_argcomplete.d/"])
+ # restore environment
https://bitbucket.org/hpk42/pytest/commits/548650c26c6a/
Changeset: 548650c26c6a
User: magopian
Date: 2013-08-01 11:19:47
Summary: refs #335: clarify that the exception info returned by
pytest.raises is a py.code.ExceptionInfo()
Affected #: 1 file
diff -r beb37acf49678f8a9c6c2dc3bb586df5f96dd173 -r
548650c26c6a9cd76852d29a5c70c37fcb90075c _pytest/python.py
--- a/_pytest/python.py
+++ b/_pytest/python.py
@@ -844,6 +844,8 @@
""" assert that a code block/function call raises @ExpectedException
and raise a failure exception otherwise.
+ This helper produces a ``py.code.ExceptionInfo()`` object.
+
If using Python 2.5 or above, you may use this function as a
context manager::
https://bitbucket.org/hpk42/pytest/commits/82586cb1b93a/
Changeset: 82586cb1b93a
User: magopian
Date: 2013-08-01 11:20:30
Summary: merge
Affected #: 2 files
diff -r 548650c26c6a9cd76852d29a5c70c37fcb90075c -r
82586cb1b93aeb43f2582cbf1cdf615a708287b9 ISSUES.txt
--- a/ISSUES.txt
+++ b/ISSUES.txt
@@ -1,10 +1,4 @@
-improve / add to dependency/test resource injection
--------------------------------------------------------------
-tags: wish feature docs
-
-write up better examples showing the connection between
-the two.
refine parametrize API
-------------------------------------------------------------
@@ -94,20 +88,6 @@
record which implementations of a hook succeeded and only call their
teardown.
-consider and document __init__ file usage in test directories
----------------------------------------------------------------
-tags: bug core
-
-Currently, a test module is imported with its fully qualified
-package path, determined by checking __init__ files upwards.
-This has the side effect that a source package at the root
-of the test dir could be imported as well. This is somewhat
-convenient but complicates the picture for running tests against
-different versions of a package. Also, implicit sys.path
-manipulations are problematic per-se. Maybe factorting out
-a pytest_addsyspath hook which can be disabled from the command line
-makes sense. In any case documentation/recommendations for
-certain scenarios makes sense.
relax requirement to have tests/testing contain an __init__
----------------------------------------------------------------
@@ -220,32 +200,10 @@
having py.test.config and ensuretemp coming from
a plugin rather than being there from the start.
-consider allowing funcargs for setup methods
---------------------------------------------------------------
-tags: experimental-wish
-
-Users have expressed the wish to have funcargs available to setup
-functions. Experiment with allowing funcargs there - it might
-also help to make the py.test.ensuretemp and config deprecation.
-For filling funcargs for setup methods, we could call funcarg
-factories with a request object that not have a cls/function
-attributes. However, how to handle parametrized test functions
-and funcargs?
-
-maybe introduce a setup method like:
-
- setup_invocation(self, request)
-
-which has full access to the test invocation through "request"
-through which you can get funcargvalues, use cached_setup etc.
-Therefore, the access to funcargs would be indirect but it
-could be consistently implemented. setup_invocation() would
-be a "glue" function for bringing together the xUnit and funcargs
-world.
consider pytest_addsyspath hook
-----------------------------------------
-tags:
+tags: wish
py.test could call a new pytest_addsyspath() in order to systematically
allow manipulation of sys.path and to inhibit it via --no-addsyspath
@@ -255,13 +213,6 @@
and pytest_configure.
-show plugin information in test header
-----------------------------------------------------------------
-tags: feature
-
-Now that external plugins are becoming more numerous
-it would be useful to have external plugins along with
-their versions displayed as a header line.
deprecate global py.test.config usage
----------------------------------------------------------------
diff -r 548650c26c6a9cd76852d29a5c70c37fcb90075c -r
82586cb1b93aeb43f2582cbf1cdf615a708287b9 testing/test_parseopt.py
--- a/testing/test_parseopt.py
+++ b/testing/test_parseopt.py
@@ -174,9 +174,9 @@
result.stdout.fnmatch_lines(["hint: hello world", "hint: from me too"])
@pytest.mark.skipif("sys.version_info < (2,5)")
-def test_argcomplete(testdir):
+def test_argcomplete(testdir, monkeypatch):
if not py.path.local.sysfind('bash'):
- pytest.skip("bash not available")
+ pytest.skip("bash not available")
import os
script = os.path.join(os.getcwd(), 'test_argcomplete')
with open(str(script), 'w') as fp:
@@ -185,13 +185,16 @@
# so we use bash
fp.write('COMP_WORDBREAKS="$COMP_WORDBREAKS" $(which py.test) '
'8>&1 9>&2')
- os.environ['_ARGCOMPLETE'] = "1"
- os.environ['_ARGCOMPLETE_IFS'] = "\x0b"
- os.environ['COMP_WORDBREAKS'] = ' \\t\\n"\\\'><=;|&(:'
+ # alternative would be exteneded Testdir.{run(),_run(),popen()} to be able
+ # to handle a keyword argument env that replaces os.environ in popen or
+ # extends the copy, advantage: could not forget to restore
+ monkeypatch.setenv('_ARGCOMPLETE', "1")
+ monkeypatch.setenv('_ARGCOMPLETE_IFS',"\x0b")
+ monkeypatch.setenv('COMP_WORDBREAKS', ' \\t\\n"\\\'><=;|&(:')
arg = '--fu'
- os.environ['COMP_LINE'] = "py.test " + arg
- os.environ['COMP_POINT'] = str(len(os.environ['COMP_LINE']))
+ monkeypatch.setenv('COMP_LINE', "py.test " + arg)
+ monkeypatch.setenv('COMP_POINT', str(len("py.test " + arg)))
result = testdir.run('bash', str(script), arg)
print dir(result), result.ret
if result.ret == 255:
@@ -202,7 +205,8 @@
os.mkdir('test_argcomplete.d')
arg = 'test_argc'
- os.environ['COMP_LINE'] = "py.test " + arg
- os.environ['COMP_POINT'] = str(len(os.environ['COMP_LINE']))
+ monkeypatch.setenv('COMP_LINE', "py.test " + arg)
+ monkeypatch.setenv('COMP_POINT', str(len('py.test ' + arg)))
result = testdir.run('bash', str(script), arg)
result.stdout.fnmatch_lines(["test_argcomplete", "test_argcomplete.d/"])
+ # restore environment
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.
_______________________________________________
pytest-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pytest-commit