source: python/trunk/Lib/json/tests/test_tool.py

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

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