| 6 | from simplejson.compat import text_type, b |
| 7 | |
| 8 | class TestErrors(TestCase): |
| 9 | def test_string_keys_error(self): |
| 10 | data = [{'a': 'A', 'b': (2, 4), 'c': 3.0, ('d',): 'D tuple'}] |
| 11 | try: |
| 12 | json.dumps(data) |
| 13 | except TypeError: |
| 14 | err = sys.exc_info()[1] |
| 15 | else: |
| 16 | self.fail('Expected TypeError') |
| 17 | self.assertEqual(str(err), |
| 18 | 'keys must be str, int, float, bool or None, not tuple') |
| 19 | |
| 20 | def test_not_serializable(self): |
| 21 | try: |
| 22 | json.dumps(json) |
| 23 | except TypeError: |
| 24 | err = sys.exc_info()[1] |
| 25 | else: |
| 26 | self.fail('Expected TypeError') |
| 27 | self.assertEqual(str(err), |
| 28 | 'Object of type module is not JSON serializable') |
| 29 | |
| 30 | def test_decode_error(self): |
| 31 | err = None |
| 32 | try: |
| 33 | json.loads('{}\na\nb') |
| 34 | except json.JSONDecodeError: |
| 35 | err = sys.exc_info()[1] |
| 36 | else: |
| 37 | self.fail('Expected JSONDecodeError') |
| 38 | self.assertEqual(err.lineno, 2) |
| 39 | self.assertEqual(err.colno, 1) |
| 40 | self.assertEqual(err.endlineno, 3) |
| 41 | self.assertEqual(err.endcolno, 2) |
| 42 | |
| 43 | def test_scan_error(self): |
| 44 | err = None |
| 45 | for t in (text_type, b): |
| 46 | try: |
| 47 | json.loads(t('{"asdf": "')) |
| 48 | except json.JSONDecodeError: |
| 49 | err = sys.exc_info()[1] |
| 50 | else: |
| 51 | self.fail('Expected JSONDecodeError') |
| 52 | self.assertEqual(err.lineno, 1) |
| 53 | self.assertEqual(err.colno, 10) |
| 54 | |
| 55 | def test_error_is_pickable(self): |
| 56 | err = None |
| 57 | try: |
| 58 | json.loads('{}\na\nb') |
| 59 | except json.JSONDecodeError: |
| 60 | err = sys.exc_info()[1] |
| 61 | else: |
| 62 | self.fail('Expected JSONDecodeError') |
| 63 | s = pickle.dumps(err) |
| 64 | e = pickle.loads(s) |
| 65 |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…