diff options
| author | Ezio Melotti <ezio.melotti@gmail.com> | 2013-10-21 02:10:55 +0300 | 
|---|---|---|
| committer | Ezio Melotti <ezio.melotti@gmail.com> | 2013-10-21 02:10:55 +0300 | 
| commit | 566a2be95c3aba65302d3d5b8108b27f810e1eaf (patch) | |
| tree | e093ba0634bea66fa1561c13c88eccccc0aae299 /Lib/test/test_json/test_decode.py | |
| parent | a0e768ccc250dbe6ffab812b7964538013ae36c4 (diff) | |
| download | cpython-git-566a2be95c3aba65302d3d5b8108b27f810e1eaf.tar.gz | |
#18958: Improve error message for json.load(s) while passing a string that starts with a UTF-8 BOM.
Diffstat (limited to 'Lib/test/test_json/test_decode.py')
| -rw-r--r-- | Lib/test/test_json/test_decode.py | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_json/test_decode.py b/Lib/test/test_json/test_decode.py index 05d07b7219..35c02de88c 100644 --- a/Lib/test/test_json/test_decode.py +++ b/Lib/test/test_json/test_decode.py @@ -77,5 +77,19 @@ class TestDecode:          with self.assertRaisesRegex(TypeError, msg):              self.json.load(BytesIO(b'[1,2,3]')) +    def test_string_with_utf8_bom(self): +        # see #18958 +        bom_json = "[1,2,3]".encode('utf-8-sig').decode('utf-8') +        with self.assertRaises(ValueError) as cm: +            self.loads(bom_json) +        self.assertIn('BOM', str(cm.exception)) +        with self.assertRaises(ValueError) as cm: +            self.json.load(StringIO(bom_json)) +        self.assertIn('BOM', str(cm.exception)) +        # make sure that the BOM is not detected in the middle of a string +        bom_in_str = '"{}"'.format(''.encode('utf-8-sig').decode('utf-8')) +        self.assertEqual(self.loads(bom_in_str), '\ufeff') +        self.assertEqual(self.json.load(StringIO(bom_in_str)), '\ufeff') +  class TestPyDecode(TestDecode, PyTest): pass  class TestCDecode(TestDecode, CTest): pass  | 
