update ISSUES some more, introduce duration to RunResult and a failing dist-testing termination test.
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									a15afb5e48
								
							
						
					
					
						commit
						f02b84d528
					
				
							
								
								
									
										48
									
								
								ISSUES.txt
								
								
								
								
							
							
						
						
									
										48
									
								
								ISSUES.txt
								
								
								
								
							|  | @ -1,16 +1,16 @@ | ||||||
| 
 | 
 | ||||||
| introduce py.test.mark.nocollect | introduce py.test.mark.nocollect | ||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ||||||
| tags: feature | tags: feature 1.2 | ||||||
| 
 | 
 | ||||||
| for not considering a function for test collection at all.  | for not considering a function for test collection at all.  | ||||||
| maybe also introduce a py.test.mark.test to explicitely | maybe also introduce a py.test.mark.test to explicitely | ||||||
| mark a function to become a tested one.  Lookup  | mark a function to become a tested one.  Lookup JUnit  | ||||||
| 
 | ways of tagging tests.  | ||||||
| 
 | 
 | ||||||
| have imported module mismatch honour relative paths | have imported module mismatch honour relative paths | ||||||
| -------------------------------------------------------- | -------------------------------------------------------- | ||||||
| tags: bug | tags: bug 1.2 | ||||||
| 
 | 
 | ||||||
| With 1.1.1 py.test fails at least on windows if an import  | With 1.1.1 py.test fails at least on windows if an import  | ||||||
| is relative and compared against an absolute conftest.py  | is relative and compared against an absolute conftest.py  | ||||||
|  | @ -18,7 +18,7 @@ path. Normalize. | ||||||
| 
 | 
 | ||||||
| allow plugins/conftests to show extra header information | allow plugins/conftests to show extra header information | ||||||
| -------------------------------------------------------- | -------------------------------------------------------- | ||||||
| tags: feature | tags: feature 1.2 | ||||||
| 
 | 
 | ||||||
| The test-report header should optionally show information | The test-report header should optionally show information | ||||||
| about the under-test package and versions/locations of | about the under-test package and versions/locations of | ||||||
|  | @ -26,7 +26,7 @@ involved packages. | ||||||
| 
 | 
 | ||||||
| make node._checkcollectable more robust | make node._checkcollectable more robust | ||||||
| ------------------------------------------------- | ------------------------------------------------- | ||||||
| tags: bug 1.1.2 | tags: bug 1.2 | ||||||
| 
 | 
 | ||||||
| currently node._checkcollectable() can raise | currently node._checkcollectable() can raise | ||||||
| exceptions for all kinds of reasons ('conftest.py' loading | exceptions for all kinds of reasons ('conftest.py' loading | ||||||
|  | @ -36,35 +36,41 @@ a good error message. | ||||||
| 
 | 
 | ||||||
| call termination with small timeout | call termination with small timeout | ||||||
| ------------------------------------------------- | ------------------------------------------------- | ||||||
| tags: feature 1.1.2 | tags: feature 1.2 | ||||||
|  | test: testing/pytest/dist/test_dsession.py - test_terminate_on_hanging_node | ||||||
| 
 | 
 | ||||||
| Call gateway group termination with a small timeout if available.  | Call gateway group termination with a small timeout if available.  | ||||||
| Should make dist-testing less likely to leave lost processes. | Should make dist-testing less likely to leave lost processes. | ||||||
| 
 | 
 | ||||||
| make capfd skip if 'dup' is not available |  | ||||||
| ------------------------------------------------------- |  | ||||||
| 
 |  | ||||||
| tags: feature 1.1.2 |  | ||||||
| 
 |  | ||||||
| currently, using 'capfd' as a funcarg will fail because |  | ||||||
| it cannot call os.dup on setup.  Should cause a skip. |  | ||||||
| 
 |  | ||||||
| introduce multi-install, i.e. py.test3, py.test-pypy, py.test-jython |  | ||||||
| and maybe a commandline-"suffix" override?  |  | ||||||
| 
 |  | ||||||
| fix dist-testing: execnet needs to be rsynced over automatically | fix dist-testing: execnet needs to be rsynced over automatically | ||||||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ||||||
| 
 | 
 | ||||||
| tags: bug 1.1.2 | tags: bug 1.2 | ||||||
| bb: http://bitbucket.org/hpk42/py-trunk/issue/65/ | bb: http://bitbucket.org/hpk42/py-trunk/issue/65/ | ||||||
| 
 | 
 | ||||||
| execnet is not rsynced so fails if run in an ssh-situation.  | execnet is not rsynced so fails if run in an ssh-situation.  | ||||||
| write test and fix. | write test and fix. | ||||||
| 
 | 
 | ||||||
|  | dist-testing: fix session hook / setup calling | ||||||
|  | ----------------------------------------------------- | ||||||
|  | tags: bug 1.2 | ||||||
|  | 
 | ||||||
|  | Currently pytest_sessionstart and finish are called  | ||||||
|  | on the master node and not on the slaves.  Call | ||||||
|  | it on slaves and provide a session.nodeid which defaults | ||||||
|  | to None for the master and contains the gateway id  | ||||||
|  | for slaves.  | ||||||
|  | 
 | ||||||
|  | have --report=xfailed[-detail] report the actual tracebacks  | ||||||
|  | ------------------------------------------------------------------ | ||||||
|  | tags: feature | ||||||
|  | 
 | ||||||
|  | there is no way to induce py.test to display the full tracebacks | ||||||
|  | of the expected failure.  Introduce one. | ||||||
| 
 | 
 | ||||||
| relax requirement to have tests/testing contain an __init__ | relax requirement to have tests/testing contain an __init__ | ||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| tags: feature 1.1.2 | tags: feature 1.2 | ||||||
| bb: http://bitbucket.org/hpk42/py-trunk/issue/64 | bb: http://bitbucket.org/hpk42/py-trunk/issue/64 | ||||||
| 
 | 
 | ||||||
| A local test run of a "tests" directory may work  | A local test run of a "tests" directory may work  | ||||||
|  | @ -74,7 +80,7 @@ an error or make it work without the __init__.py | ||||||
| 
 | 
 | ||||||
| deprecate ensuretemp / introduce funcargs to setup method | deprecate ensuretemp / introduce funcargs to setup method | ||||||
| -------------------------------------------------------------- | -------------------------------------------------------------- | ||||||
| tags: wish 1.1.2 | tags: experimental-wish 1.2 | ||||||
| 
 | 
 | ||||||
| The remaining uses of py.test.ensuretemp within the py-test base | The remaining uses of py.test.ensuretemp within the py-test base | ||||||
| itself are for setup methods.  Also users have expressed the | itself are for setup methods.  Also users have expressed the | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ import py | ||||||
| import sys, os | import sys, os | ||||||
| import re | import re | ||||||
| import inspect | import inspect | ||||||
|  | import time | ||||||
| from py.impl.test.config import Config as pytestConfig | from py.impl.test.config import Config as pytestConfig | ||||||
| from py.plugin import hookspec | from py.plugin import hookspec | ||||||
| from py.builtin import print_ | from py.builtin import print_ | ||||||
|  | @ -24,12 +25,14 @@ def pytest_funcarg__testdir(request): | ||||||
| 
 | 
 | ||||||
| rex_outcome = re.compile("(\d+) (\w+)") | rex_outcome = re.compile("(\d+) (\w+)") | ||||||
| class RunResult: | class RunResult: | ||||||
|     def __init__(self, ret, outlines, errlines): |     def __init__(self, ret, outlines, errlines, duration): | ||||||
|         self.ret = ret |         self.ret = ret | ||||||
|         self.outlines = outlines |         self.outlines = outlines | ||||||
|         self.errlines = errlines |         self.errlines = errlines | ||||||
|         self.stdout = LineMatcher(outlines) |         self.stdout = LineMatcher(outlines) | ||||||
|         self.stderr = LineMatcher(errlines) |         self.stderr = LineMatcher(errlines) | ||||||
|  |         self.duration = duration | ||||||
|  | 
 | ||||||
|     def parseoutcomes(self): |     def parseoutcomes(self): | ||||||
|         for line in reversed(self.outlines): |         for line in reversed(self.outlines): | ||||||
|             if 'seconds' in line: |             if 'seconds' in line: | ||||||
|  | @ -284,6 +287,7 @@ class TmpTestdir: | ||||||
|         print_("running", cmdargs, "curdir=", py.path.local()) |         print_("running", cmdargs, "curdir=", py.path.local()) | ||||||
|         f1 = p1.open("w") |         f1 = p1.open("w") | ||||||
|         f2 = p2.open("w") |         f2 = p2.open("w") | ||||||
|  |         now = time.time() | ||||||
|         popen = self.popen(cmdargs, stdout=f1, stderr=f2,  |         popen = self.popen(cmdargs, stdout=f1, stderr=f2,  | ||||||
|             close_fds=(sys.platform != "win32")) |             close_fds=(sys.platform != "win32")) | ||||||
|         ret = popen.wait() |         ret = popen.wait() | ||||||
|  | @ -296,7 +300,7 @@ class TmpTestdir: | ||||||
|         if out: |         if out: | ||||||
|             for line in out:  |             for line in out:  | ||||||
|                 py.builtin.print_(line, file=sys.stdout) |                 py.builtin.print_(line, file=sys.stdout) | ||||||
|         return RunResult(ret, out, err) |         return RunResult(ret, out, err, time.time()-now) | ||||||
| 
 | 
 | ||||||
|     def runpybin(self, scriptname, *args): |     def runpybin(self, scriptname, *args): | ||||||
|         fullargs = self._getpybinargs(scriptname) + args |         fullargs = self._getpybinargs(scriptname) + args | ||||||
|  |  | ||||||
|  | @ -440,4 +440,19 @@ def test_teardownfails_one_function(testdir): | ||||||
|         "*1 passed*1 error*" |         "*1 passed*1 error*" | ||||||
|     ]) |     ]) | ||||||
| 
 | 
 | ||||||
|  | @py.test.mark.xfail  | ||||||
|  | def test_terminate_on_hangingnode(testdir): | ||||||
|  |     p = testdir.makeconftest(""" | ||||||
|  |         def pytest__teardown_final(session): | ||||||
|  |             if session.nodeid: # running on slave | ||||||
|  |                 import time | ||||||
|  |                 time.sleep(2) | ||||||
|  |     """) | ||||||
|  |     result = testdir.runpytest(p, '--dist=each', '--tx=popen') | ||||||
|  |     assert result.duration < 2.0  | ||||||
|  |     result.stdout.fnmatch_lines([ | ||||||
|  |         "*0 passed*", | ||||||
|  |     ]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue