#16549: Add tests for json.tools. Initial patch by Berker Peksag and Serhiy Storchaka.

This commit is contained in:
Ezio Melotti 2012-11-29 02:14:52 +02:00
parent 67473263a3
commit d8feba904c
4 changed files with 81 additions and 6 deletions

View File

@ -0,0 +1,69 @@
import os
import sys
import textwrap
import unittest
import subprocess
from test import test_support
from test.script_helper import assert_python_ok
class TestTool(unittest.TestCase):
data = """
[["blorpie"],[ "whoops" ] , [
],\t"d-shtaeou",\r"d-nthiouh",
"i-vhbjkhnth", {"nifty":87}, {"morefield" :\tfalse,"field"
:"yes"} ]
"""
expect = textwrap.dedent("""\
[
[
"blorpie"
],
[
"whoops"
],
[],
"d-shtaeou",
"d-nthiouh",
"i-vhbjkhnth",
{
"nifty": 87
},
{
"field": "yes",
"morefield": false
}
]
""")
def test_stdin_stdout(self):
proc = subprocess.Popen(
(sys.executable, '-m', 'json.tool'),
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = proc.communicate(self.data.encode())
self.assertEqual(out, self.expect.encode())
self.assertEqual(err, None)
def _create_infile(self):
infile = test_support.TESTFN
with open(infile, "w") as fp:
self.addCleanup(os.remove, infile)
fp.write(self.data)
return infile
def test_infile_stdout(self):
infile = self._create_infile()
rc, out, err = assert_python_ok('-m', 'json.tool', infile)
self.assertEqual(out, self.expect.encode())
self.assertEqual(err, b'')
def test_infile_outfile(self):
infile = self._create_infile()
outfile = test_support.TESTFN + '.out'
rc, out, err = assert_python_ok('-m', 'json.tool', infile, outfile)
self.addCleanup(os.remove, outfile)
with open(outfile, "r") as fp:
self.assertEqual(fp.read(), self.expect)
self.assertEqual(out, b'')
self.assertEqual(err, b'')

View File

@ -25,12 +25,14 @@ def main():
outfile = open(sys.argv[2], 'wb') outfile = open(sys.argv[2], 'wb')
else: else:
raise SystemExit(sys.argv[0] + " [infile [outfile]]") raise SystemExit(sys.argv[0] + " [infile [outfile]]")
try: with infile:
obj = json.load(infile) try:
except ValueError, e: obj = json.load(infile)
raise SystemExit(e) except ValueError, e:
json.dump(obj, outfile, sort_keys=True, indent=4) raise SystemExit(e)
outfile.write('\n') with outfile:
json.dump(obj, outfile, sort_keys=True, indent=4)
outfile.write('\n')
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -751,6 +751,7 @@ Harri Pasanen
Randy Pausch Randy Pausch
Samuele Pedroni Samuele Pedroni
Marcel van der Peijl Marcel van der Peijl
Berker Peksag
Steven Pemberton Steven Pemberton
Bo Peng Bo Peng
Santiago Peresón Santiago Peresón

View File

@ -521,6 +521,9 @@ Extension Modules
Tests Tests
----- -----
- Issue #16549: Add tests for json.tools. Initial patch by Berker Peksag
and Serhiy Storchaka.
- Issue #16559: Add more tests for the json module, including some from the - Issue #16559: Add more tests for the json module, including some from the
official test suite at json.org. Patch by Serhiy Storchaka. official test suite at json.org. Patch by Serhiy Storchaka.