Mercurial > public > mercurial-scm > hg-stable
view mercurial/testing/ps_util.py @ 53040:cdd7bf612c7b stable tip
bundle-spec: properly format boolean parameter (issue6960)
This was breaking automatic clone bundle generation. This changeset fixes it and
add a test to catch it in the future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 11 Mar 2025 02:29:42 +0100 |
parents | d4e30c15626d |
children |
line wrap: on
line source
# This python code can be imported into tests in order to terminate a process # with signal.SIGKILL on posix, or a roughly equivalent procedure on Windows. from __future__ import annotations import os import signal import subprocess import sys import tempfile from .. import ( encoding, pycompat, ) from ..utils import procutil def kill_nt(pid: int, exit_code: int): fd, pidfile = tempfile.mkstemp( prefix=b"sigkill-", dir=encoding.environ[b"HGTMP"], text=False ) try: os.write(fd, b'%d\n' % pid) finally: os.close(fd) env = dict(encoding.environ) env[b"DAEMON_EXITCODE"] = b"%d" % exit_code # Simulate the message written to stderr for this process on non-Windows # platforms, for test consistency. print("Killed!", file=sys.stderr) subprocess.run( [ encoding.environ[b"PYTHON"], b"%s/killdaemons.py" % encoding.environ[b'RUNTESTDIR_FORWARD_SLASH'], pidfile, ], env=procutil.tonativeenv(env), ) def kill(pid: int): """Kill the process with the given PID with SIGKILL or equivalent.""" if pycompat.iswindows: exit_code = 128 + 9 kill_nt(pid, exit_code) else: os.kill(pid, signal.SIGKILL)