# HG changeset patch # User Oleg Oshmyan # Date 1293023027 -7200 # Node ID 593ad09cd69b761ee59024243987ac2317d7e435 # Parent 24f144e11b5e0b7d937a5e371d8d0553d76c91a0 Multiple exit code handling fixes call() on POSIX now always gets the exit code of the process. force_zero_exitcode now has no effect if the process got killed by a signal. diff -r 24f144e11b5e -r 593ad09cd69b testcases.py --- a/testcases.py Tue Dec 21 19:38:58 2010 +0200 +++ b/testcases.py Wed Dec 22 15:03:47 2010 +0200 @@ -206,6 +206,8 @@ except select_error: if sys.exc_info()[1].args[0] != EINTR: raise + else: + case.process.poll() else: time_end = clock() + case.maxtime try: @@ -220,6 +222,8 @@ except select_error: if sys.exc_info()[1].args[0] != EINTR: raise + else: + case.process.poll() del bury_child.case def call(*args, **kwargs): if 'preexec_fn' in kwargs: @@ -561,7 +565,7 @@ else: time_next_check = now + .15 time.sleep(.001) - if config.globalconf.force_zero_exitcode and case.process.returncode: + if config.globalconf.force_zero_exitcode and case.process.returncode or case.process.returncode < 0: raise NonZeroExitCode(case.process.returncode) callback() case.has_called_back = True @@ -613,7 +617,7 @@ else: time_next_check = now + .15 time.sleep(.001) - if config.globalconf.force_zero_exitcode and case.process.returncode: + if config.globalconf.force_zero_exitcode and case.process.returncode or case.process.returncode < 0: raise NonZeroExitCode(case.process.returncode) callback() case.has_called_back = True