summaryrefslogtreecommitdiffstats
path: root/test/pacman/tests/scriptlet-signal-reset.py
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2018-10-03 09:42:38 +0200
committerAndrew Gregory <andrew@archlinux.org>2018-11-19 02:25:18 +0100
commit2a7bdd3e3aabbf9fa3cc31379cadad909e6c1da3 (patch)
tree1dbf808e241d4793e99f11f467e05b8fdfa977dd /test/pacman/tests/scriptlet-signal-reset.py
parentb39a62f57551a2e23ceaa37b3fbc71a2273545e6 (diff)
downloadpacman-2a7bdd3e3aabbf9fa3cc31379cadad909e6c1da3.tar.gz
pacman-2a7bdd3e3aabbf9fa3cc31379cadad909e6c1da3.tar.xz
reset signal handlers before running scripts/hooks
Front-ends or libraries may set signals to be ignored, which gets inherited across fork and exec. This can cause scripts to malfunction if they expect the signal. To make matters worse, scripts written in bash can't reset signals that were ignored when bash was started. Fixes FS#56756 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org> (cherry picked from commit 9886566abb375043740167ce5066f1a186c71176)
Diffstat (limited to 'test/pacman/tests/scriptlet-signal-reset.py')
-rw-r--r--test/pacman/tests/scriptlet-signal-reset.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/pacman/tests/scriptlet-signal-reset.py b/test/pacman/tests/scriptlet-signal-reset.py
new file mode 100644
index 00000000..27246d12
--- /dev/null
+++ b/test/pacman/tests/scriptlet-signal-reset.py
@@ -0,0 +1,11 @@
+self.description = "Reset signals before running scriptlets/hooks"
+
+p1 = pmpkg("dummy")
+# check if SIGPIPE is ignored, it should be fatal, but GPGME ignores it
+p1.install['post_install'] = "kill -PIPE $$; echo fail > sigpipe_was_ignored"
+self.addpkg(p1)
+
+self.args = "-U %s" % p1.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!FILE_EXIST=sigpipe_was_ignored")