Introduce pytest_enter_pdb hook
This commit is contained in:
		
							parent
							
								
									6aa5611ae5
								
							
						
					
					
						commit
						1408c9f077
					
				| 
						 | 
					@ -16,6 +16,8 @@ NEXT
 | 
				
			||||||
  CWD outside a test package pytest would get fixture discovery wrong.
 | 
					  CWD outside a test package pytest would get fixture discovery wrong.
 | 
				
			||||||
  Thanks to Wolfgang Schnerring for figuring out a reproducable example.
 | 
					  Thanks to Wolfgang Schnerring for figuring out a reproducable example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Introduce pytest_enter_pdb hook (needed e.g. by pytest_timeout to cancel the
 | 
				
			||||||
 | 
					  timeout when interactively entering pdb).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2.6.2
 | 
					2.6.2
 | 
				
			||||||
-----------
 | 
					-----------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -262,3 +262,5 @@ def pytest_exception_interact(node, call, report):
 | 
				
			||||||
    that is not an internal exception like "skip.Exception".
 | 
					    that is not an internal exception like "skip.Exception".
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def pytest_enter_pdb():
 | 
				
			||||||
 | 
					    """ called upon pdb.set_trace()"""
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,7 @@ class pytestPDB:
 | 
				
			||||||
            tw = py.io.TerminalWriter()
 | 
					            tw = py.io.TerminalWriter()
 | 
				
			||||||
            tw.line()
 | 
					            tw.line()
 | 
				
			||||||
            tw.sep(">", "PDB set_trace (IO-capturing turned off)")
 | 
					            tw.sep(">", "PDB set_trace (IO-capturing turned off)")
 | 
				
			||||||
 | 
					            self._pluginmanager.hook.pytest_enter_pdb()
 | 
				
			||||||
        pdb.Pdb().set_trace(frame)
 | 
					        pdb.Pdb().set_trace(frame)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,3 +267,21 @@ class TestPDB:
 | 
				
			||||||
            "*NameError*xxx*",
 | 
					            "*NameError*xxx*",
 | 
				
			||||||
            "*1 error*",
 | 
					            "*1 error*",
 | 
				
			||||||
        ])
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_enter_pdb_hook_is_called(self, testdir):
 | 
				
			||||||
 | 
					        testdir.makeconftest("""
 | 
				
			||||||
 | 
					            def pytest_enter_pdb():
 | 
				
			||||||
 | 
					                print 'enter_pdb_hook'
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        p1 = testdir.makepyfile("""
 | 
				
			||||||
 | 
					            import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            def test_foo():
 | 
				
			||||||
 | 
					                pytest.set_trace()
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        child = testdir.spawn_pytest(str(p1))
 | 
				
			||||||
 | 
					        child.expect("enter_pdb_hook")
 | 
				
			||||||
 | 
					        child.send('c\n')
 | 
				
			||||||
 | 
					        child.sendeof()
 | 
				
			||||||
 | 
					        if child.isalive():
 | 
				
			||||||
 | 
					            child.wait()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue