Kaydet (Commit) d8feba90 authored tarafından Ezio Melotti's avatar Ezio Melotti

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

üst 67473263
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'')
...@@ -25,12 +25,14 @@ def main(): ...@@ -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__':
......
...@@ -751,6 +751,7 @@ Harri Pasanen ...@@ -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
......
...@@ -521,6 +521,9 @@ Extension Modules ...@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment