aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_nsjail.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_nsjail.py')
-rw-r--r--tests/test_nsjail.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/test_nsjail.py b/tests/test_nsjail.py
index 4d4676b..cab9344 100644
--- a/tests/test_nsjail.py
+++ b/tests/test_nsjail.py
@@ -100,6 +100,27 @@ class NsJailTests(unittest.TestCase):
self.assertEqual(result.stdout, "ValueError: embedded null byte")
self.assertEqual(result.stderr, None)
+ def test_print_bad_unicode_encode_error(self):
+ result = self.nsjail.python3("print(chr(56550))")
+ self.assertEqual(result.returncode, 1)
+ unicode_traceback = (
+ "Traceback (most recent call last):\n"
+ ' File "<string>", line 1, in <module>\n'
+ "UnicodeEncodeError: 'utf-8' codec can't encode character '\\udce6'"
+ " in position 0: surrogates not allowed\n"
+ )
+ self.assertEqual(result.stdout, unicode_traceback)
+ self.assertEqual(result.stderr, None)
+
+ def test_unicode_env_erase_escape_fails(self):
+ result = self.nsjail.python3(
+ "import os, sys\nos.unsetenv('PYTHONIOENCODING')\n"
+ "os.execl(sys.executable, 'python', '-c', 'print(chr(56550))')"
+ )
+ self.assertEqual(result.returncode, None)
+ self.assertEqual(result.stdout, "UnicodeDecodeError: invalid unicode in output pipe")
+ self.assertEqual(result.stderr, None)
+
@unittest.mock.patch("snekbox.nsjail.DEBUG", new=False)
def test_log_parser(self):
log_lines = (