holger krekel avatar holger krekel committed 7a9183c

regen docs, prepare release 2.2.1

Comments (0)

Files changed (21)

-Changes between 2.2.0 and 2.2.1.dev
+Changes between 2.2.0 and 2.2.1
 ----------------------------------------
 
 - fix issue99 (in pytest and py) internallerrors with resultlog now

_pytest/__init__.py

 #
-__version__ = '2.2.1.dev5'
+__version__ = '2.2.1'

doc/announce/release-2.2.1.txt

+pytest-2.2.1: bug fixes, perfect teardowns
+===========================================================================
+
+pytest-2.2.1 is a minor backward-compatible release of the the py.test
+testing tool.   It contains bug fixes and little improvements, including
+documentation fixes.  For general information see here:
+
+     http://pytest.org/
+
+To install or upgrade pytest:
+
+    pip install -U pytest # or
+    easy_install -U pytest
+
+Special thanks for helping on this release to Ronny Pfannschmidt, Jurko
+Gospodnetic and Ralf Schmitt.
+
+best,
+holger krekel
+
+
+Changes between 2.2.0 and 2.2.1
+----------------------------------------
+
+- fix issue99 (in pytest and py) internallerrors with resultlog now
+  produce better output - fixed by normalizing pytest_internalerror 
+  input arguments.
+- fix issue97 / traceback issues (in pytest and py) improve traceback output
+  in conjunction with jinja2 and cython which hack tracebacks
+- fix issue93 (in pytest and pytest-xdist) avoid "delayed teardowns":
+  the final test in a test node will now run its teardown directly
+  instead of waiting for the end of the session. Thanks Dave Hunt for
+  the good reporting and feedback.  The pytest_runtest_protocol as well
+  as the pytest_runtest_teardown hooks now have "nextitem" available 
+  which will be None indicating the end of the test run.
+- fix collection crash due to unknown-source collected items, thanks
+  to Ralf Schmitt (fixed by depending on a more recent pylib)
 
     $ py.test test_assert1.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_assert1.py F
 
     $ py.test test_assert2.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_assert2.py F
 
     $ py.test --funcargs
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collected 0 items
     pytestconfig
         the pytest config object with access to command line opts.
 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     
     test_module.py .F
     
     test_module.py:9: AssertionError
     ----------------------------- Captured stdout ------------------------------
-    setting up <function test_func2 at 0x101353a28>
-    ==================== 1 failed, 1 passed in 0.02 seconds ====================
+    setting up <function test_func2 at 0x101314c80>
+    ==================== 1 failed, 1 passed in 0.03 seconds ====================
 
 Accessing captured output from a test function
 ---------------------------------------------------
 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     mymodule.py .
     
     ========================= 1 passed in 0.05 seconds =========================
+    [?1034h

doc/example/markers.txt

 You can then restrict a test run to only run tests marked with ``webtest``::
 
     $ py.test -v -m webtest
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
     collecting ... collected 2 items
     
     test_server.py:3: test_send_http PASSED
     
-    ===================== 1 tests deselected by "-m 'webtest'" =====================
-    ==================== 1 passed, 1 deselected in 0.01 seconds ====================
+    =================== 1 tests deselected by "-m 'webtest'" ===================
+    ================== 1 passed, 1 deselected in 0.01 seconds ==================
 
 Or the inverse, running all tests except the webtest ones::
     
     $ py.test -v -m "not webtest"
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
     collecting ... collected 2 items
     
     test_server.py:6: test_something_quick PASSED
     
-    =================== 1 tests deselected by "-m 'not webtest'" ===================
-    ==================== 1 passed, 1 deselected in 0.02 seconds ====================
+    ================= 1 tests deselected by "-m 'not webtest'" =================
+    ================== 1 passed, 1 deselected in 0.01 seconds ==================
 
 Registering markers
 -------------------------------------
 the given argument::
 
     $ py.test -k send_http  # running with the above defined examples
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 4 items
     
     test_server.py .
     
-    ===================== 3 tests deselected by '-ksend_http' ======================
-    ==================== 1 passed, 3 deselected in 0.02 seconds ====================
+    =================== 3 tests deselected by '-ksend_http' ====================
+    ================== 1 passed, 3 deselected in 0.02 seconds ==================
 
 And you can also run all tests except the ones that match the keyword::
 
     $ py.test -k-send_http
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 4 items
     
     test_mark_classlevel.py ..
     test_server.py .
     
-    ===================== 1 tests deselected by '-k-send_http' =====================
-    ==================== 3 passed, 1 deselected in 0.03 seconds ====================
+    =================== 1 tests deselected by '-k-send_http' ===================
+    ================== 3 passed, 1 deselected in 0.03 seconds ==================
 
 Or to only select the class::
 
     $ py.test -kTestClass
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 4 items
     
     test_mark_classlevel.py ..
     
-    ===================== 2 tests deselected by '-kTestClass' ======================
-    ==================== 2 passed, 2 deselected in 0.02 seconds ====================
+    =================== 2 tests deselected by '-kTestClass' ====================
+    ================== 2 passed, 2 deselected in 0.02 seconds ==================
 
 .. _`adding a custom marker from a plugin`:
 
 the test needs::
 
     $ py.test -E stage2
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_someenv.py s
     
-    ========================== 1 skipped in 0.02 seconds ===========================
+    ======================== 1 skipped in 0.02 seconds =========================
   
 and here is one that specifies exactly the environment needed::
 
     $ py.test -E stage1
-    ============================= test session starts ==============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    =========================== test session starts ============================
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_someenv.py .
     
-    =========================== 1 passed in 0.02 seconds ===========================
+    ========================= 1 passed in 0.01 seconds =========================
 
 The ``--markers`` option always gives you a list of available markers::
 

doc/example/mysetup.txt

 
     $ py.test test_sample.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_sample.py F
     ================================= FAILURES =================================
     _______________________________ test_answer ________________________________
     
-    mysetup = <conftest.MySetup instance at 0x1012b2bd8>
+    mysetup = <conftest.MySetup instance at 0x10131c098>
     
         def test_answer(mysetup):
             app = mysetup.myapp()
 
     $ py.test test_ssh.py -rs
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_ssh.py s
     ========================= short test summary info ==========================
-    SKIP [1] /Users/hpk/tmp/doc-exec-625/conftest.py:22: specify ssh host with --ssh
+    SKIP [1] /Users/hpk/tmp/doc-exec-44/conftest.py:22: specify ssh host with --ssh
     
     ======================== 1 skipped in 0.02 seconds =========================
 

doc/example/nonpython.txt

 
     nonpython $ py.test test_simple.yml
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     
     test_simple.yml .F
     usecase execution failed
        spec failed: 'some': 'other'
        no further details known at this point.
-    ==================== 1 failed, 1 passed in 0.10 seconds ====================
+    ==================== 1 failed, 1 passed in 0.09 seconds ====================
 
 You get one dot for the passing ``sub1: sub1`` check and one failure.
 Obviously in the above ``conftest.py`` you'll want to implement a more
 
     nonpython $ py.test -v
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
     collecting ... collected 2 items
     
     test_simple.yml:1: usecase: ok PASSED
 
     nonpython $ py.test --collectonly
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     <YamlFile 'test_simple.yml'>
       <YamlItem 'ok'>

doc/example/parametrize.txt

 
     $ py.test test_scenarios.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     
     test_scenarios.py ..
 
     $ py.test --collectonly test_scenarios.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     <Module 'test_scenarios.py'>
       <Class 'TestSampleWithScenarios'>
 
     $ py.test test_backends.py --collectonly
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     <Module 'test_backends.py'>
       <Function 'test_db_initialized[d1]'>
     ================================= FAILURES =================================
     _________________________ test_db_initialized[d2] __________________________
     
-    db = <conftest.DB2 instance at 0x10150ab90>
+    db = <conftest.DB2 instance at 0x10131c6c8>
     
         def test_db_initialized(db):
             # a dummy test
     ================================= FAILURES =================================
     ________________________ TestClass.test_equals[1-2] ________________________
     
-    self = <test_parametrize.TestClass instance at 0x101509638>, a = 1, b = 2
+    self = <test_parametrize.TestClass instance at 0x101320200>, a = 1, b = 2
     
         def test_equals(self, a, b):
     >       assert a == b
    ========================= short test summary info ==========================
    SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.8' not found
    SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.4' not found
-   27 passed, 48 skipped in 3.03 seconds
+   27 passed, 48 skipped in 3.01 seconds

doc/example/pythoncollection.txt

 
     $ py.test --collectonly
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     <Module 'check_myapp.py'>
       <Class 'CheckMyApp'>
           <Function 'check_simple'>
           <Function 'check_complex'>
     
-    =============================  in 0.02 seconds =============================
+    =============================  in 0.01 seconds =============================
 
 Interpreting cmdline arguments as Python packages
 -----------------------------------------------------
 
     . $ py.test --collectonly pythoncollection.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 3 items
     <Module 'pythoncollection.py'>
       <Function 'test_function'>

doc/example/reportingdemo.txt

 
     assertion $ py.test failure_demo.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 39 items
     
     failure_demo.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     failure_demo.py:15: AssertionError
     _________________________ TestFailing.test_simple __________________________
     
-    self = <failure_demo.TestFailing object at 0x1013552d0>
+    self = <failure_demo.TestFailing object at 0x101356250>
     
         def test_simple(self):
             def f():
         
     >       assert f() == g()
     E       assert 42 == 43
-    E        +  where 42 = <function f at 0x101514f50>()
-    E        +  and   43 = <function g at 0x101516050>()
+    E        +  where 42 = <function f at 0x101328848>()
+    E        +  and   43 = <function g at 0x1013288c0>()
     
     failure_demo.py:28: AssertionError
     ____________________ TestFailing.test_simple_multiline _____________________
     
-    self = <failure_demo.TestFailing object at 0x101355950>
+    self = <failure_demo.TestFailing object at 0x101356810>
     
         def test_simple_multiline(self):
             otherfunc_multi(
     failure_demo.py:11: AssertionError
     ___________________________ TestFailing.test_not ___________________________
     
-    self = <failure_demo.TestFailing object at 0x101355ad0>
+    self = <failure_demo.TestFailing object at 0x101356a10>
     
         def test_not(self):
             def f():
                 return 42
     >       assert not f()
     E       assert not 42
-    E        +  where 42 = <function f at 0x101514f50>()
+    E        +  where 42 = <function f at 0x101328758>()
     
     failure_demo.py:38: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_text _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x1013559d0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101356c50>
     
         def test_eq_text(self):
     >       assert 'spam' == 'eggs'
     failure_demo.py:42: AssertionError
     _____________ TestSpecialisedExplanations.test_eq_similar_text _____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x101350dd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x1013542d0>
     
         def test_eq_similar_text(self):
     >       assert 'foo 1 bar' == 'foo 2 bar'
     failure_demo.py:45: AssertionError
     ____________ TestSpecialisedExplanations.test_eq_multiline_text ____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x101350d10>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101354590>
     
         def test_eq_multiline_text(self):
     >       assert 'foo\nspam\nbar' == 'foo\neggs\nbar'
     failure_demo.py:48: AssertionError
     ______________ TestSpecialisedExplanations.test_eq_long_text _______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x101350cd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101354710>
     
         def test_eq_long_text(self):
             a = '1'*100 + 'a' + '2'*100
     failure_demo.py:53: AssertionError
     _________ TestSpecialisedExplanations.test_eq_long_text_multiline __________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x101350f50>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x1013529d0>
     
         def test_eq_long_text_multiline(self):
             a = '1\n'*100 + 'a' + '2\n'*100
     failure_demo.py:58: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_list _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f350>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101352750>
     
         def test_eq_list(self):
     >       assert [0, 1, 2] == [0, 1, 3]
     failure_demo.py:61: AssertionError
     ______________ TestSpecialisedExplanations.test_eq_list_long _______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134fc10>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101352ad0>
     
         def test_eq_list_long(self):
             a = [0]*100 + [1] + [3]*100
     failure_demo.py:66: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_dict _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f2d0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101352b90>
     
         def test_eq_dict(self):
     >       assert {'a': 0, 'b': 1} == {'a': 0, 'b': 2}
     failure_demo.py:69: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_set __________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f110>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101352fd0>
     
         def test_eq_set(self):
     >       assert set([0, 10, 11, 12]) == set([0, 20, 21])
     failure_demo.py:72: AssertionError
     _____________ TestSpecialisedExplanations.test_eq_longer_list ______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f510>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101352b50>
     
         def test_eq_longer_list(self):
     >       assert [1,2] == [1,2,3]
     failure_demo.py:75: AssertionError
     _________________ TestSpecialisedExplanations.test_in_list _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f6d0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x1013522d0>
     
         def test_in_list(self):
     >       assert 1 in [0, 2, 3, 4, 5]
     failure_demo.py:78: AssertionError
     __________ TestSpecialisedExplanations.test_not_in_text_multiline __________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10152c490>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101351390>
     
         def test_not_in_text_multiline(self):
             text = 'some multiline\ntext\nwhich\nincludes foo\nand a\ntail'
     failure_demo.py:82: AssertionError
     ___________ TestSpecialisedExplanations.test_not_in_text_single ____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10152cfd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101351410>
     
         def test_not_in_text_single(self):
             text = 'single foo line'
     failure_demo.py:86: AssertionError
     _________ TestSpecialisedExplanations.test_not_in_text_single_long _________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10152c090>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101351510>
     
         def test_not_in_text_single_long(self):
             text = 'head ' * 50 + 'foo ' + 'tail ' * 20
     failure_demo.py:90: AssertionError
     ______ TestSpecialisedExplanations.test_not_in_text_single_long_term _______
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x10152cb90>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x101351a10>
     
         def test_not_in_text_single_long_term(self):
             text = 'head ' * 50 + 'f'*70 + 'tail ' * 20
             i = Foo()
     >       assert i.b == 2
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x10152c350>.b
+    E        +  where 1 = <failure_demo.Foo object at 0x101351b50>.b
     
     failure_demo.py:101: AssertionError
     _________________________ test_attribute_instance __________________________
                 b = 1
     >       assert Foo().b == 2
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x10134fe90>.b
-    E        +    where <failure_demo.Foo object at 0x10134fe90> = <class 'failure_demo.Foo'>()
+    E        +  where 1 = <failure_demo.Foo object at 0x101351810>.b
+    E        +    where <failure_demo.Foo object at 0x101351810> = <class 'failure_demo.Foo'>()
     
     failure_demo.py:107: AssertionError
     __________________________ test_attribute_failure __________________________
     failure_demo.py:116: 
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
     
-    self = <failure_demo.Foo object at 0x10152c610>
+    self = <failure_demo.Foo object at 0x101351c50>
     
         def _get_b(self):
     >       raise Exception('Failed to get attrib')
                 b = 2
     >       assert Foo().b == Bar().b
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x10152c950>.b
-    E        +    where <failure_demo.Foo object at 0x10152c950> = <class 'failure_demo.Foo'>()
-    E        +  and   2 = <failure_demo.Bar object at 0x10152c250>.b
-    E        +    where <failure_demo.Bar object at 0x10152c250> = <class 'failure_demo.Bar'>()
+    E        +  where 1 = <failure_demo.Foo object at 0x101351f10>.b
+    E        +    where <failure_demo.Foo object at 0x101351f10> = <class 'failure_demo.Foo'>()
+    E        +  and   2 = <failure_demo.Bar object at 0x1013519d0>.b
+    E        +    where <failure_demo.Bar object at 0x1013519d0> = <class 'failure_demo.Bar'>()
     
     failure_demo.py:124: AssertionError
     __________________________ TestRaises.test_raises __________________________
     
-    self = <failure_demo.TestRaises instance at 0x1015219e0>
+    self = <failure_demo.TestRaises instance at 0x101373710>
     
         def test_raises(self):
             s = 'qwe'
     >   int(s)
     E   ValueError: invalid literal for int() with base 10: 'qwe'
     
-    <0-codegen /Users/hpk/p/pytest/_pytest/python.py:957>:1: ValueError
+    <0-codegen /Users/hpk/p/pytest/_pytest/python.py:958>:1: ValueError
     ______________________ TestRaises.test_raises_doesnt _______________________
     
-    self = <failure_demo.TestRaises instance at 0x1013794d0>
+    self = <failure_demo.TestRaises instance at 0x101334f38>
     
         def test_raises_doesnt(self):
     >       raises(IOError, "int('3')")
     failure_demo.py:136: Failed
     __________________________ TestRaises.test_raise ___________________________
     
-    self = <failure_demo.TestRaises instance at 0x10151f6c8>
+    self = <failure_demo.TestRaises instance at 0x10136d950>
     
         def test_raise(self):
     >       raise ValueError("demo error")
     failure_demo.py:139: ValueError
     ________________________ TestRaises.test_tupleerror ________________________
     
-    self = <failure_demo.TestRaises instance at 0x1013733f8>
+    self = <failure_demo.TestRaises instance at 0x101367758>
     
         def test_tupleerror(self):
     >       a,b = [1]
     failure_demo.py:142: ValueError
     ______ TestRaises.test_reinterpret_fails_with_print_for_the_fun_of_it ______
     
-    self = <failure_demo.TestRaises instance at 0x10136e170>
+    self = <failure_demo.TestRaises instance at 0x10136a4d0>
     
         def test_reinterpret_fails_with_print_for_the_fun_of_it(self):
             l = [1,2,3]
     l is [1, 2, 3]
     ________________________ TestRaises.test_some_error ________________________
     
-    self = <failure_demo.TestRaises instance at 0x10136ef38>
+    self = <failure_demo.TestRaises instance at 0x1013692d8>
     
         def test_some_error(self):
     >       if namenotexi:
     <2-codegen 'abc-123' /Users/hpk/p/pytest/doc/example/assertion/failure_demo.py:162>:2: AssertionError
     ____________________ TestMoreErrors.test_complex_error _____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x101520638>
+    self = <failure_demo.TestMoreErrors instance at 0x1013730e0>
     
         def test_complex_error(self):
             def f():
     failure_demo.py:5: AssertionError
     ___________________ TestMoreErrors.test_z1_unpack_error ____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x10136bcb0>
+    self = <failure_demo.TestMoreErrors instance at 0x101368290>
     
         def test_z1_unpack_error(self):
             l = []
     failure_demo.py:179: ValueError
     ____________________ TestMoreErrors.test_z2_type_error _____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x10136a440>
+    self = <failure_demo.TestMoreErrors instance at 0x1013610e0>
     
         def test_z2_type_error(self):
             l = 3
     failure_demo.py:183: TypeError
     ______________________ TestMoreErrors.test_startswith ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x101368290>
+    self = <failure_demo.TestMoreErrors instance at 0x101361ea8>
     
         def test_startswith(self):
             s = "123"
             g = "456"
     >       assert s.startswith(g)
-    E       assert <built-in method startswith of str object at 0x101354030>('456')
-    E        +  where <built-in method startswith of str object at 0x101354030> = '123'.startswith
+    E       assert <built-in method startswith of str object at 0x101357a58>('456')
+    E        +  where <built-in method startswith of str object at 0x101357a58> = '123'.startswith
     
     failure_demo.py:188: AssertionError
     __________________ TestMoreErrors.test_startswith_nested ___________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x101368f38>
+    self = <failure_demo.TestMoreErrors instance at 0x101368128>
     
         def test_startswith_nested(self):
             def f():
             def g():
                 return "456"
     >       assert f().startswith(g())
-    E       assert <built-in method startswith of str object at 0x101354030>('456')
-    E        +  where <built-in method startswith of str object at 0x101354030> = '123'.startswith
-    E        +    where '123' = <function f at 0x10136c578>()
-    E        +  and   '456' = <function g at 0x10136c5f0>()
+    E       assert <built-in method startswith of str object at 0x101357a58>('456')
+    E        +  where <built-in method startswith of str object at 0x101357a58> = '123'.startswith
+    E        +    where '123' = <function f at 0x101339938>()
+    E        +  and   '456' = <function g at 0x101339cf8>()
     
     failure_demo.py:195: AssertionError
     _____________________ TestMoreErrors.test_global_func ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x10136aef0>
+    self = <failure_demo.TestMoreErrors instance at 0x101336758>
     
         def test_global_func(self):
     >       assert isinstance(globf(42), float)
     failure_demo.py:198: AssertionError
     _______________________ TestMoreErrors.test_instance _______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x10151c440>
+    self = <failure_demo.TestMoreErrors instance at 0x1013678c0>
     
         def test_instance(self):
             self.x = 6*7
     >       assert self.x != 42
     E       assert 42 != 42
-    E        +  where 42 = <failure_demo.TestMoreErrors instance at 0x10151c440>.x
+    E        +  where 42 = <failure_demo.TestMoreErrors instance at 0x1013678c0>.x
     
     failure_demo.py:202: AssertionError
     _______________________ TestMoreErrors.test_compare ________________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x101373a70>
+    self = <failure_demo.TestMoreErrors instance at 0x101366a28>
     
         def test_compare(self):
     >       assert globf(10) < 5
     failure_demo.py:205: AssertionError
     _____________________ TestMoreErrors.test_try_finally ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x101363c68>
+    self = <failure_demo.TestMoreErrors instance at 0x1013628c0>
     
         def test_try_finally(self):
             x = 1

doc/example/simple.txt

 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     gw0 I
     gw0 [0]
     
     scheduling tests via LoadScheduling
     
-    =============================  in 0.71 seconds =============================
+    =============================  in 0.54 seconds =============================
 
 .. _`excontrolskip`:
 
 
     $ py.test -rs    # "-rs" means report details on the little 's'
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     
     test_module.py .s
     ========================= short test summary info ==========================
-    SKIP [1] /Users/hpk/tmp/doc-exec-630/conftest.py:9: need --runslow option to run
+    SKIP [1] /Users/hpk/tmp/doc-exec-49/conftest.py:9: need --runslow option to run
     
     =================== 1 passed, 1 skipped in 0.02 seconds ====================
 
 
     $ py.test --runslow
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 2 items
     
     test_module.py ..
     
-    ========================= 2 passed in 0.62 seconds =========================
+    ========================= 2 passed in 0.02 seconds =========================
 
 Writing well integrated assertion helpers
 --------------------------------------------------
 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     project deps: mylib-1.1
     collecting ... collected 0 items
     
 
     $ py.test -v
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
     info1: did you know that ...
     did you?
     collecting ... collected 0 items
 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 0 items
     
     =============================  in 0.00 seconds =============================
 
     $ py.test --durations=3
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 3 items
     
     test_some_are_slow.py ...
 
     $ py.test test_simplefactory.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_simplefactory.py F
     E       assert 42 == 17
     
     test_simplefactory.py:5: AssertionError
-    ========================= 1 failed in 0.03 seconds =========================
+    ========================= 1 failed in 0.02 seconds =========================
 
 This means that indeed the test function was called with a ``myfuncarg``
 argument value of ``42`` and the assert fails.  Here is how py.test
 
     $ py.test test_example.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 10 items
     
     test_example.py .........F
 
     $ py.test --collectonly test_example.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 10 items
     <Module 'test_example.py'>
       <Function 'test_func[0]'>
 
     $ py.test -v -k 7 test_example.py  # or -k test_func[7]
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
     collecting ... collected 10 items
     
     test_example.py:5: test_func[7] PASSED

doc/getting-started.txt

 To check your installation has installed the correct version::
 
     $ py.test --version
-    This is py.test version 2.2.0, imported from /Users/hpk/p/pytest/pytest.pyc
+    This is py.test version 2.2.1, imported from /Users/hpk/p/pytest/pytest.pyc
     setuptools registered plugins:
-      pytest-xdist-1.7.dev1 at /Users/hpk/p/pytest-xdist/xdist/plugin.pyc
+      pytest-xdist-1.8.dev2 at /Users/hpk/p/pytest-xdist/xdist/plugin.pyc
 
 If you get an error checkout :ref:`installation issues`.
 
 
     $ py.test
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_sample.py F
     E        +  where 4 = func(3)
     
     test_sample.py:5: AssertionError
-    ========================= 1 failed in 0.04 seconds =========================
+    ========================= 1 failed in 0.02 seconds =========================
 
 py.test found the ``test_answer`` function by following :ref:`standard test discovery rules <test discovery>`, basically detecting the ``test_`` prefixes.  We got a failure report because our little ``func(3)`` call did not return ``5``.
 
     ================================= FAILURES =================================
     ____________________________ TestClass.test_two ____________________________
     
-    self = <test_class.TestClass instance at 0x10150a170>
+    self = <test_class.TestClass instance at 0x10131a560>
     
         def test_two(self):
             x = "hello"
     ================================= FAILURES =================================
     _____________________________ test_needsfiles ______________________________
     
-    tmpdir = local('/Users/hpk/tmp/pytest-1595/test_needsfiles0')
+    tmpdir = local('/Users/hpk/tmp/pytest-679/test_needsfiles0')
     
         def test_needsfiles(tmpdir):
             print tmpdir
     
     test_tmpdir.py:3: AssertionError
     ----------------------------- Captured stdout ------------------------------
-    /Users/hpk/tmp/pytest-1595/test_needsfiles0
-    1 failed in 0.15 seconds
+    /Users/hpk/tmp/pytest-679/test_needsfiles0
+    1 failed in 0.16 seconds
 
 Before the test runs, a unique-per-test-invocation temporary directory
 was created.  More info at :ref:`tmpdir handling`.

doc/monkeypatch.txt

 .. background check:
    $ py.test
    =========================== test session starts ============================
-   platform darwin -- Python 2.7.1 -- pytest-2.2.0
+   platform darwin -- Python 2.7.1 -- pytest-2.2.1
    collecting ... collected 0 items
    
-   =============================  in 0.20 seconds =============================
+   =============================  in 0.00 seconds =============================
 
 Method reference of the monkeypatch function argument
 -----------------------------------------------------
 
     example $ py.test -rx xfail_demo.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 6 items
     
     xfail_demo.py xxxxxx
 
     $ py.test test_tmpdir.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_tmpdir.py F
     ================================= FAILURES =================================
     _____________________________ test_create_file _____________________________
     
-    tmpdir = local('/Users/hpk/tmp/pytest-1596/test_create_file0')
+    tmpdir = local('/Users/hpk/tmp/pytest-680/test_create_file0')
     
         def test_create_file(tmpdir):
             p = tmpdir.mkdir("sub").join("hello.txt")
     E       assert 0
     
     test_tmpdir.py:7: AssertionError
-    ========================= 1 failed in 0.20 seconds =========================
+    ========================= 1 failed in 0.17 seconds =========================
 
 .. _`base temporary directory`:
 
 
     $ py.test test_unittest.py
     =========================== test session starts ============================
-    platform darwin -- Python 2.7.1 -- pytest-2.2.0
+    platform darwin -- Python 2.7.1 -- pytest-2.2.1
     collecting ... collected 1 items
     
     test_unittest.py F
     test_unittest.py:8: AssertionError
     ----------------------------- Captured stdout ------------------------------
     hello
-    ========================= 1 failed in 0.23 seconds =========================
+    ========================= 1 failed in 0.04 seconds =========================
 
 .. _`unittest.py style`: http://docs.python.org/library/unittest.html
 
         name='pytest',
         description='py.test: simple powerful testing with Python',
         long_description = long_description,
-        version='2.2.1.dev5',
+        version='2.2.1',
         url='http://pytest.org',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
         author_email='holger at merlinux.eu',
         entry_points= make_entry_points(),
         # the following should be enabled for release
-        install_requires=['py>=1.4.6.dev6'],
+        install_requires=['py>=1.4.6'],
         classifiers=['Development Status :: 6 - Mature',
                      'Intended Audience :: Developers',
                      'License :: OSI Approved :: MIT License',
     return {'console_scripts': l}
 
 if __name__ == '__main__':
-    main()
+    main()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.