mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
ipatests: Properly kill gpg-agent
There is a race condition exposed in 'test_gpg_asymmetric'. The teardown of 'tempdir' fixture and gpg-agent being called from the teardown of 'gpgkey' fixture could simultaneously remove the gnugpg's socket files. This results in an error like: ``` ================= ERRORS =================== _ ERROR at teardown of test_gpg_asymmetric __ ... > os.unlink(entry.name, dir_fd=topfd) E FileNotFoundError: [Errno 2] No such file or directory: 'S.gpg-agent.extra' /usr/lib64/python3.7/shutil.py:450: FileNotFoundError ``` The problem is that the agent is not terminated properly. Instead, gpgconf could be used to kill daemonized gpg-agent. Related: https://pagure.io/freeipa/issue/7989 Signed-off-by: Stanislav Levin <slev@altlinux.org> Reviewed-By: Christian Heimes <cheimes@redhat.com>
This commit is contained in:
parent
43a97082bb
commit
19462788f1
@ -172,6 +172,7 @@ class BasePathNamespace:
|
||||
FIREFOX = "/usr/bin/firefox"
|
||||
GETCERT = "/usr/bin/getcert"
|
||||
GPG2 = "/usr/bin/gpg2"
|
||||
GPG_CONF = "/usr/bin/gpgconf"
|
||||
GPG_CONNECT_AGENT = "/usr/bin/gpg-connect-agent"
|
||||
GPG_AGENT = "/usr/bin/gpg-agent"
|
||||
IPA_GETCERT = "/usr/bin/ipa-getcert"
|
||||
|
@ -50,8 +50,8 @@ def gpgkey(request, tempdir):
|
||||
f.write("verbose\n")
|
||||
f.write("allow-preset-passphrase\n")
|
||||
|
||||
# run agent in background
|
||||
agent = subprocess.Popen(
|
||||
# daemonize agent (detach from the console and run in the background)
|
||||
subprocess.Popen(
|
||||
[paths.GPG_AGENT, '--batch', '--daemon'],
|
||||
env=env, stdout=devnull, stderr=devnull
|
||||
)
|
||||
@ -61,8 +61,11 @@ def gpgkey(request, tempdir):
|
||||
os.environ['GNUPGHOME'] = orig_gnupghome
|
||||
else:
|
||||
os.environ.pop('GNUPGHOME', None)
|
||||
agent.kill()
|
||||
agent.wait()
|
||||
subprocess.run(
|
||||
[paths.GPG_CONF, '--kill', 'all'],
|
||||
check=True,
|
||||
env=env,
|
||||
)
|
||||
|
||||
request.addfinalizer(fin)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user