diff --git a/Lib/json/tests/test_tool.py b/Lib/json/tests/test_tool.py
new file mode 100644
index 0000000..679ae83
--- /dev/null
+++ b/Lib/json/tests/test_tool.py
@@ -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'')
diff --git a/Lib/json/tool.py b/Lib/json/tool.py
index b2c786d..9ec3440 100644
--- a/Lib/json/tool.py
+++ b/Lib/json/tool.py
@@ -25,12 +25,14 @@
         outfile = open(sys.argv[2], 'wb')
     else:
         raise SystemExit(sys.argv[0] + " [infile [outfile]]")
-    try:
-        obj = json.load(infile)
-    except ValueError, e:
-        raise SystemExit(e)
-    json.dump(obj, outfile, sort_keys=True, indent=4)
-    outfile.write('\n')
+    with infile:
+        try:
+            obj = json.load(infile)
+        except ValueError, e:
+            raise SystemExit(e)
+    with outfile:
+        json.dump(obj, outfile, sort_keys=True, indent=4)
+        outfile.write('\n')
 
 
 if __name__ == '__main__':
diff --git a/Misc/ACKS b/Misc/ACKS
index 462145a..0531b34 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -751,6 +751,7 @@
 Randy Pausch
 Samuele Pedroni
 Marcel van der Peijl
+Berker Peksag
 Steven Pemberton
 Bo Peng
 Santiago Peresón
diff --git a/Misc/NEWS b/Misc/NEWS
index abe5f51..7af9a68 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -521,6 +521,9 @@
 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
   official test suite at json.org.  Patch by Serhiy Storchaka.
 
