diff -r 9a3e60b74cc7 Lib/json/decoder.py --- a/Lib/json/decoder.py Fri Jan 31 16:07:32 2014 +0100 +++ b/Lib/json/decoder.py Fri Jan 31 16:04:01 2014 +0000 @@ -188,7 +188,7 @@ try: value, end = scan_once(s, end) except StopIteration as err: - raise ValueError(errmsg("Expecting value", s, err.value)) from None + raise ValueError(errmsg("No JSON object could be decoded, expecting value", s, err.value)) from None pairs_append((key, value)) try: nextchar = s[end] @@ -232,7 +232,7 @@ try: value, end = scan_once(s, end) except StopIteration as err: - raise ValueError(errmsg("Expecting value", s, err.value)) from None + raise ValueError(errmsg("No JSON object could be decoded, expecting value", s, err.value)) from None _append(value) nextchar = s[end:end + 1] if nextchar in _ws: @@ -358,5 +358,5 @@ try: obj, end = self.scan_once(s, idx) except StopIteration as err: - raise ValueError(errmsg("Expecting value", s, err.value)) from None + raise ValueError(errmsg("No JSON object could be decoded, expecting value", s, err.value)) from None return obj, end diff -r 9a3e60b74cc7 Lib/test/test_json/test_fail.py --- a/Lib/test/test_json/test_fail.py Fri Jan 31 16:07:32 2014 +0100 +++ b/Lib/test/test_json/test_fail.py Fri Jan 31 16:04:01 2014 +0000 @@ -103,21 +103,24 @@ def test_truncated_input(self): test_cases = [ - ('', 'Expecting value', 0), - ('[', 'Expecting value', 1), + ('', 'No JSON object could be decoded, expecting value', 0), + ('[', 'No JSON object could be decoded, expecting value', 1), ('[42', "Expecting ',' delimiter", 3), - ('[42,', 'Expecting value', 4), + ('[42,', 'No JSON object could be decoded, expecting value', 4), ('["', 'Unterminated string starting at', 1), ('["spam', 'Unterminated string starting at', 1), ('["spam"', "Expecting ',' delimiter", 7), - ('["spam",', 'Expecting value', 8), + ('["spam",', + 'No JSON object could be decoded, expecting value', 8), ('{', 'Expecting property name enclosed in double quotes', 1), ('{"', 'Unterminated string starting at', 1), ('{"spam', 'Unterminated string starting at', 1), ('{"spam"', "Expecting ':' delimiter", 7), - ('{"spam":', 'Expecting value', 8), + ('{"spam":', + 'No JSON object could be decoded, expecting value', 8), ('{"spam":42', "Expecting ',' delimiter", 10), - ('{"spam":42,', 'Expecting property name enclosed in double quotes', 11), + ('{"spam":42,', + 'Expecting property name enclosed in double quotes', 11), ] test_cases += [ ('"', 'Unterminated string starting at', 0), @@ -131,15 +134,17 @@ def test_unexpected_data(self): test_cases = [ - ('[,', 'Expecting value', 1), - ('{"spam":[}', 'Expecting value', 9), + ('[,', 'No JSON object could be decoded, expecting value', 1), + ('{"spam":[}', + 'No JSON object could be decoded, expecting value', 9), ('[42:', "Expecting ',' delimiter", 3), ('[42 "spam"', "Expecting ',' delimiter", 4), - ('[42,]', 'Expecting value', 4), + ('[42,]', 'No JSON object could be decoded, expecting value', 4), ('{"spam":[42}', "Expecting ',' delimiter", 11), ('["]', 'Unterminated string starting at', 1), ('["spam":', "Expecting ',' delimiter", 7), - ('["spam",]', 'Expecting value', 8), + ('["spam",]', + 'No JSON object could be decoded, expecting value', 8), ('{:', 'Expecting property name enclosed in double quotes', 1), ('{,', 'Expecting property name enclosed in double quotes', 1), ('{42', 'Expecting property name enclosed in double quotes', 1), @@ -147,11 +152,14 @@ ('{"spam",', "Expecting ':' delimiter", 7), ('{"spam"}', "Expecting ':' delimiter", 7), ('[{"spam"]', "Expecting ':' delimiter", 8), - ('{"spam":}', 'Expecting value', 8), - ('[{"spam":]', 'Expecting value', 9), + ('{"spam":}', + 'No JSON object could be decoded, expecting value', 8), + ('[{"spam":]', + 'No JSON object could be decoded, expecting value', 9), ('{"spam":42 "ham"', "Expecting ',' delimiter", 11), ('[{"spam":42]', "Expecting ',' delimiter", 11), - ('{"spam":42,}', 'Expecting property name enclosed in double quotes', 11), + ('{"spam":42,}', + 'Expecting property name enclosed in double quotes', 11), ] for data, msg, idx in test_cases: self.assertRaisesRegex(ValueError, @@ -186,7 +194,7 @@ ] for data, line, col, idx in test_cases: self.assertRaisesRegex(ValueError, - r'^Expecting value: line {0} column {1}' + r'^No JSON object could be decoded, expecting value: line {0} column {1}' r' \(char {2}\)$'.format(line, col, idx), self.loads, data)