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"
|
FIREFOX = "/usr/bin/firefox"
|
||||||
GETCERT = "/usr/bin/getcert"
|
GETCERT = "/usr/bin/getcert"
|
||||||
GPG2 = "/usr/bin/gpg2"
|
GPG2 = "/usr/bin/gpg2"
|
||||||
|
GPG_CONF = "/usr/bin/gpgconf"
|
||||||
GPG_CONNECT_AGENT = "/usr/bin/gpg-connect-agent"
|
GPG_CONNECT_AGENT = "/usr/bin/gpg-connect-agent"
|
||||||
GPG_AGENT = "/usr/bin/gpg-agent"
|
GPG_AGENT = "/usr/bin/gpg-agent"
|
||||||
IPA_GETCERT = "/usr/bin/ipa-getcert"
|
IPA_GETCERT = "/usr/bin/ipa-getcert"
|
||||||
|
@ -50,8 +50,8 @@ def gpgkey(request, tempdir):
|
|||||||
f.write("verbose\n")
|
f.write("verbose\n")
|
||||||
f.write("allow-preset-passphrase\n")
|
f.write("allow-preset-passphrase\n")
|
||||||
|
|
||||||
# run agent in background
|
# daemonize agent (detach from the console and run in the background)
|
||||||
agent = subprocess.Popen(
|
subprocess.Popen(
|
||||||
[paths.GPG_AGENT, '--batch', '--daemon'],
|
[paths.GPG_AGENT, '--batch', '--daemon'],
|
||||||
env=env, stdout=devnull, stderr=devnull
|
env=env, stdout=devnull, stderr=devnull
|
||||||
)
|
)
|
||||||
@ -61,8 +61,11 @@ def gpgkey(request, tempdir):
|
|||||||
os.environ['GNUPGHOME'] = orig_gnupghome
|
os.environ['GNUPGHOME'] = orig_gnupghome
|
||||||
else:
|
else:
|
||||||
os.environ.pop('GNUPGHOME', None)
|
os.environ.pop('GNUPGHOME', None)
|
||||||
agent.kill()
|
subprocess.run(
|
||||||
agent.wait()
|
[paths.GPG_CONF, '--kill', 'all'],
|
||||||
|
check=True,
|
||||||
|
env=env,
|
||||||
|
)
|
||||||
|
|
||||||
request.addfinalizer(fin)
|
request.addfinalizer(fin)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user