[svn r58300] adding option to specify namespace for ifraises execution.
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									13c7fb6709
								
							
						
					
					
						commit
						fa5c975c00
					
				|  | @ -49,19 +49,22 @@ def exit(msg): | ||||||
|     __tracebackhide__ = True |     __tracebackhide__ = True | ||||||
|     raise Exit(msg) |     raise Exit(msg) | ||||||
| 
 | 
 | ||||||
| def skip(msg="", ifraises=None): | def skip(msg="", ifraises=None, ns=None): | ||||||
|     """ (conditionally) skip this test/module/conftest.  |     """ (conditionally) skip this test/module/conftest.  | ||||||
|         |         | ||||||
|  |     msg: use this message when skipping.  | ||||||
|     ifraises:  |     ifraises:  | ||||||
|         if "exec ifraises in {'py': py}" raises an exception  |         if "exec ifraises in {'py': py}" raises an exception  | ||||||
|         skip this test.  |         skip this test.  | ||||||
|     msg: use this message when skipping.  |     ns: use this namespace when executing ifraises | ||||||
|     """ |     """ | ||||||
|     __tracebackhide__ = True |     __tracebackhide__ = True | ||||||
|     if ifraises is not None: |     if ifraises is not None: | ||||||
|         ifraises = py.code.Source(ifraises).compile() |         ifraises = py.code.Source(ifraises).compile() | ||||||
|  |         if ns is None: | ||||||
|  |             ns = {} | ||||||
|         try: |         try: | ||||||
|             exec ifraises in {'py': py} |             exec ifraises in ns | ||||||
|         except (KeyboardInterrupt, SystemExit): |         except (KeyboardInterrupt, SystemExit): | ||||||
|             raise |             raise | ||||||
|         except Exception, e: |         except Exception, e: | ||||||
|  |  | ||||||
|  | @ -387,10 +387,7 @@ class TestPyTest(AcceptBase): | ||||||
| 
 | 
 | ||||||
| class TestInteractive(AcceptBase): | class TestInteractive(AcceptBase): | ||||||
|     def getspawn(self): |     def getspawn(self): | ||||||
|         try: |         py.test.skip(ifraises="import pexpect", ns=globals()) | ||||||
|             import pexpect |  | ||||||
|         except ImportError: |  | ||||||
|             py.test.skip("cannot import pexpect") |  | ||||||
|         def spawn(cmd): |         def spawn(cmd): | ||||||
|             return pexpect.spawn(cmd, logfile=self.tmpdir.join("spawn.out").open("w")) |             return pexpect.spawn(cmd, logfile=self.tmpdir.join("spawn.out").open("w")) | ||||||
|         return spawn |         return spawn | ||||||
|  |  | ||||||
|  | @ -76,6 +76,11 @@ def test_skip_ifraises(): | ||||||
|     assert excinfo.traceback[-1].ishidden() |     assert excinfo.traceback[-1].ishidden() | ||||||
|     assert excinfo.value.msg.startswith("ImportError") |     assert excinfo.value.msg.startswith("ImportError") | ||||||
| 
 | 
 | ||||||
|  | def test_skip_ifraises_ns(): | ||||||
|  |     d = {} | ||||||
|  |     py.test.skip(ns=d, ifraises="import py") | ||||||
|  |     assert d['py'] == py | ||||||
|  | 
 | ||||||
| def test_skip_ifraises_syntaxerror(): | def test_skip_ifraises_syntaxerror(): | ||||||
|     try: |     try: | ||||||
|         excinfo = py.test.raises(SyntaxError, ''' |         excinfo = py.test.raises(SyntaxError, ''' | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue