Merge pull request #2971 from chriskuehl/fix-signal-death

Fix exit code for commands terminated by signals
This commit is contained in:
Anthony Sottile 2023-08-21 21:30:11 -04:00 committed by GitHub
commit 0c3d605fa0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View file

@ -170,7 +170,8 @@ def xargs(
results = thread_map(run_cmd_partition, partitions) results = thread_map(run_cmd_partition, partitions)
for proc_retcode, proc_out, _ in results: for proc_retcode, proc_out, _ in results:
retcode = max(retcode, proc_retcode) if abs(proc_retcode) > abs(retcode):
retcode = proc_retcode
stdout += proc_out stdout += proc_out
return retcode, stdout return retcode, stdout

View file

@ -147,6 +147,15 @@ def test_xargs_retcode_normal():
assert ret == 5 assert ret == 5
@pytest.mark.xfail(sys.platform == 'win32', reason='posix only')
def test_xargs_retcode_killed_by_signal():
ret, _ = xargs.xargs(
parse_shebang.normalize_cmd(('bash', '-c', 'kill -9 $$', '--')),
('foo', 'bar'),
)
assert ret == -9
def test_xargs_concurrency(): def test_xargs_concurrency():
bash_cmd = parse_shebang.normalize_cmd(('bash', '-c')) bash_cmd = parse_shebang.normalize_cmd(('bash', '-c'))
print_pid = ('sleep 0.5 && echo $$',) print_pid = ('sleep 0.5 && echo $$',)