New submission from Fred L. Drake, Jr. <fdr...@acm.org>:

The json decoder doesn't pass tests when the C optimizations in the _json 
module aren't available.  The actual test failures appear fairly superficial, 
but aren't the limit of the problems.

Empty objects are converted to empty lists instead of empty dictionaries when 
_json isn't available; test attached.

Issue 5723 notes that the pure-Python implementation isn't tested; fixing that 
might have avoided these problems.

Test failures from Python 2.6.5:

======================================================================
ERROR: test_c_encode_basestring_ascii 
(json.tests.test_encode_basestring_ascii.TestEncodeBaseStringAscii)
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_encode_basestring_ascii.py", 
line 29, in test_c_encode_basestring_ascii
    self._test_encode_basestring_ascii(json.encoder.c_encode_basestring_ascii)
  File 
"/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_encode_basestring_ascii.py", 
line 32, in _test_encode_basestring_ascii
    fname = encode_basestring_ascii.__name__
AttributeError: 'NoneType' object has no attribute '__name__'

======================================================================
ERROR: test_c_scanstring (json.tests.test_scanstring.TestScanString)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_scanstring.py", line 
13, in test_c_scanstring
    self._test_scanstring(json.decoder.c_scanstring)
  File "/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_scanstring.py", line 
17, in _test_scanstring
    scanstring('"z\\ud834\\udd20x"', 1, None, True),
TypeError: 'NoneType' object is not callable

======================================================================
FAIL: test_encode_basestring_ascii (json.tests.test_speedups.TestSpeedups)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_speedups.py", line 
13, in test_encode_basestring_ascii
    self.assertEquals(encoder.encode_basestring_ascii.__module__, "_json")
AssertionError: 'json.encoder' != '_json'

======================================================================
FAIL: test_scanstring (json.tests.test_speedups.TestSpeedups)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.6.5/Lib/json/tests/test_speedups.py", line 9, 
in test_scanstring
    self.assertEquals(decoder.scanstring.__module__, "_json")
AssertionError: 'json.decoder' != '_json'


Test failures from 2.7:

======================================================================
ERROR: test_c_scanstring (json.tests.test_scanstring.TestScanString)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.7/Lib/json/tests/test_scanstring.py", line 
13, in test_c_scanstring
    self._test_scanstring(json.decoder.c_scanstring)
  File "/home/fdrake/src/Python-2.7/Lib/json/tests/test_scanstring.py", line 
17, in _test_scanstring
    scanstring('"z\\ud834\\udd20x"', 1, None, True),
TypeError: 'NoneType' object is not callable

======================================================================
FAIL: test_encode_basestring_ascii (json.tests.test_speedups.TestSpeedups)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.7/Lib/json/tests/test_speedups.py", line 12, 
in test_encode_basestring_ascii
    self.assertEquals(encoder.encode_basestring_ascii.__module__, "_json")
AssertionError: 'json.encoder' != '_json'

======================================================================
FAIL: test_scanstring (json.tests.test_speedups.TestSpeedups)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/fdrake/src/Python-2.7/Lib/json/tests/test_speedups.py", line 8, 
in test_scanstring
    self.assertEquals(decoder.scanstring.__module__, "_json")
AssertionError: 'json.decoder' != '_json'

----------
components: Library (Lib)
files: test-empty-json-object.diff
keywords: patch
messages: 110099
nosy: fdrake
priority: normal
severity: normal
status: open
title: json.load failure when C optimizations aren't built
type: behavior
versions: Python 2.6, Python 2.7
Added file: http://bugs.python.org/file17966/test-empty-json-object.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue9233>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to