ยปCore Development>Code coverage>Lib/test/json_tests/test_tool.py

Python code coverage for Lib/test/json_tests/test_tool.py

#countcontent
1n/aimport os
2n/aimport sys
3n/aimport textwrap
4n/aimport unittest
5n/aimport subprocess
6n/afrom test import support
7n/afrom test.script_helper import assert_python_ok
8n/a
9n/aclass TestTool(unittest.TestCase):
10n/a data = """
11n/a
12n/a [["blorpie"],[ "whoops" ] , [
13n/a ],\t"d-shtaeou",\r"d-nthiouh",
14n/a "i-vhbjkhnth", {"nifty":87}, {"morefield" :\tfalse,"field"
15n/a :"yes"} ]
16n/a """
17n/a
18n/a expect = textwrap.dedent("""\
19n/a [
20n/a [
21n/a "blorpie"
22n/a ],
23n/a [
24n/a "whoops"
25n/a ],
26n/a [],
27n/a "d-shtaeou",
28n/a "d-nthiouh",
29n/a "i-vhbjkhnth",
30n/a {
31n/a "nifty": 87
32n/a },
33n/a {
34n/a "field": "yes",
35n/a "morefield": false
36n/a }
37n/a ]
38n/a """)
39n/a
40n/a def test_stdin_stdout(self):
41n/a with subprocess.Popen(
42n/a (sys.executable, '-m', 'json.tool'),
43n/a stdin=subprocess.PIPE, stdout=subprocess.PIPE) as proc:
44n/a out, err = proc.communicate(self.data.encode())
45n/a self.assertEqual(out.splitlines(), self.expect.encode().splitlines())
46n/a self.assertEqual(err, None)
47n/a
48n/a def _create_infile(self):
49n/a infile = support.TESTFN
50n/a with open(infile, "w") as fp:
51n/a self.addCleanup(os.remove, infile)
52n/a fp.write(self.data)
53n/a return infile
54n/a
55n/a def test_infile_stdout(self):
56n/a infile = self._create_infile()
57n/a rc, out, err = assert_python_ok('-m', 'json.tool', infile)
58n/a self.assertEqual(out.splitlines(), self.expect.encode().splitlines())
59n/a self.assertEqual(err, b'')
60n/a
61n/a def test_infile_outfile(self):
62n/a infile = self._create_infile()
63n/a outfile = support.TESTFN + '.out'
64n/a rc, out, err = assert_python_ok('-m', 'json.tool', infile, outfile)
65n/a self.addCleanup(os.remove, outfile)
66n/a with open(outfile, "r") as fp:
67n/a self.assertEqual(fp.read(), self.expect)
68n/a self.assertEqual(out, b'')
69n/a self.assertEqual(err, b'')