diff options
Diffstat (limited to 'tests/test_nsjail.py')
| -rw-r--r-- | tests/test_nsjail.py | 21 | 
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 = ( | 
