summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2011-04-13 01:09:18 (GMT)
committerR David Murray <rdmurray@bitdance.com>2011-04-13 01:09:18 (GMT)
commitd5315482e92d1f3c47460999a790df684bf8b09e (patch)
treed98dd2c8a709e6401a0c0a577ad9f9de191f73ed /Lib
parent62f8bcb0a46fc0d8747ba2ab7e8d7311d73f82f7 (diff)
parent3dd02d62c90a169a32fb38bed34249a6cf7e1638 (diff)
downloadcpython-d5315482e92d1f3c47460999a790df684bf8b09e.zip
cpython-d5315482e92d1f3c47460999a790df684bf8b09e.tar.gz
cpython-d5315482e92d1f3c47460999a790df684bf8b09e.tar.bz2
Merge #10019: Fix regression relative to 2.6: add newlines if indent=0
Patch by Amaury Forgeot d'Arc, updated by Sando Tosi.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/json/encoder.py2
-rw-r--r--Lib/test/json_tests/test_indent.py16
2 files changed, 17 insertions, 1 deletions
diff --git a/Lib/json/encoder.py b/Lib/json/encoder.py
index 7475f5a..4b214eb 100644
--- a/Lib/json/encoder.py
+++ b/Lib/json/encoder.py
@@ -233,7 +233,7 @@ class JSONEncoder(object):
if (_one_shot and c_make_encoder is not None
- and not self.indent):
+ and self.indent is None):
_iterencode = c_make_encoder(
markers, self.default, _encoder, self.indent,
self.key_separator, self.item_separator, self.sort_keys,
diff --git a/Lib/test/json_tests/test_indent.py b/Lib/test/json_tests/test_indent.py
index d8030aa..692a494 100644
--- a/Lib/test/json_tests/test_indent.py
+++ b/Lib/test/json_tests/test_indent.py
@@ -2,6 +2,7 @@ from unittest import TestCase
import json
import textwrap
+from io import StringIO
class TestIndent(TestCase):
def test_indent(self):
@@ -43,3 +44,18 @@ class TestIndent(TestCase):
self.assertEqual(h3, h)
self.assertEqual(d2, expect.expandtabs(2))
self.assertEqual(d3, expect)
+
+ def test_indent0(self):
+ h = {3: 1}
+ def check(indent, expected):
+ d1 = json.dumps(h, indent=indent)
+ self.assertEqual(d1, expected)
+
+ sio = StringIO()
+ json.dump(h, sio, indent=indent)
+ self.assertEqual(sio.getvalue(), expected)
+
+ # indent=0 should emit newlines
+ check(0, '{\n"3": 1\n}')
+ # indent=None is more compact
+ check(None, '{"3": 1}')