summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_syslog.py
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2022-11-29 22:58:20 (GMT)
committerGitHub <noreply@github.com>2022-11-29 22:58:20 (GMT)
commit8bb2303fd75c299d8fc85229889ac75e867c135c (patch)
tree554b8be7af106eb3cf6519ca06d563403ccf2a75 /Lib/test/test_syslog.py
parented391090cc8332406e6225d40877db6ff44a7104 (diff)
downloadcpython-8bb2303fd75c299d8fc85229889ac75e867c135c.zip
cpython-8bb2303fd75c299d8fc85229889ac75e867c135c.tar.gz
cpython-8bb2303fd75c299d8fc85229889ac75e867c135c.tar.bz2
gh-99127: Allow some features of syslog to the main interpreter only (gh-99128)
Diffstat (limited to 'Lib/test/test_syslog.py')
-rw-r--r--Lib/test/test_syslog.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/Lib/test/test_syslog.py b/Lib/test/test_syslog.py
index 2125ec5..54db80f 100644
--- a/Lib/test/test_syslog.py
+++ b/Lib/test/test_syslog.py
@@ -5,6 +5,7 @@ import sys
import threading
import time
import unittest
+from textwrap import dedent
# XXX(nnorwitz): This test sucks. I don't know of a platform independent way
# to verify that the messages were really logged.
@@ -78,6 +79,69 @@ class Test(unittest.TestCase):
finally:
sys.setswitchinterval(orig_si)
+ def test_subinterpreter_syslog(self):
+ # syslog.syslog() is not allowed in subinterpreters, but only if
+ # syslog.openlog() hasn't been called in the main interpreter yet.
+ with self.subTest('before openlog()'):
+ code = dedent('''
+ import syslog
+ caught_error = False
+ try:
+ syslog.syslog('foo')
+ except RuntimeError:
+ caught_error = True
+ assert(caught_error)
+ ''')
+ res = support.run_in_subinterp(code)
+ self.assertEqual(res, 0)
+
+ syslog.openlog()
+ try:
+ with self.subTest('after openlog()'):
+ code = dedent('''
+ import syslog
+ syslog.syslog('foo')
+ ''')
+ res = support.run_in_subinterp(code)
+ self.assertEqual(res, 0)
+ finally:
+ syslog.closelog()
+
+ def test_subinterpreter_openlog(self):
+ try:
+ code = dedent('''
+ import syslog
+ caught_error = False
+ try:
+ syslog.openlog()
+ except RuntimeError:
+ caught_error = True
+
+ assert(caught_error)
+ ''')
+ res = support.run_in_subinterp(code)
+ self.assertEqual(res, 0)
+ finally:
+ syslog.closelog()
+
+ def test_subinterpreter_closelog(self):
+ syslog.openlog('python')
+ try:
+ code = dedent('''
+ import syslog
+ caught_error = False
+ try:
+ syslog.closelog()
+ except RuntimeError:
+ caught_error = True
+
+ assert(caught_error)
+ ''')
+ res = support.run_in_subinterp(code)
+ self.assertEqual(res, 0)
+ finally:
+ syslog.closelog()
+
if __name__ == "__main__":
unittest.main()