summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_json/test_tool.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-11-06 18:01:44 (GMT)
committerGitHub <noreply@github.com>2021-11-06 18:01:44 (GMT)
commita932631890d148444e5f9b09f4b57305475d6386 (patch)
tree64028590f7c733b8b7cdf88b63fade28a5782e41 /Lib/test/test_json/test_tool.py
parent5017306c8732b3ceda878db13088f8c2cf0c5e71 (diff)
downloadcpython-a932631890d148444e5f9b09f4b57305475d6386.zip
cpython-a932631890d148444e5f9b09f4b57305475d6386.tar.gz
cpython-a932631890d148444e5f9b09f4b57305475d6386.tar.bz2
bpo-45644: Make json.tool read infile before writing to outfile (GH-29273) (GH-29446)
so that $ python -m json.tool foo.json foo.json doesn't result in an empty foo.json. Co-authored-by: Ɓukasz Langa <lukasz@langa.pl> (cherry picked from commit 815dad42d53fc40a6dc057e067f4a8a885c3b858) Co-authored-by: Chris Wesseling <chris.wesseling@protonmail.com>
Diffstat (limited to 'Lib/test/test_json/test_tool.py')
-rw-r--r--Lib/test/test_json/test_tool.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/test_json/test_tool.py b/Lib/test/test_json/test_tool.py
index fc2a7a4..d441bb1 100644
--- a/Lib/test/test_json/test_tool.py
+++ b/Lib/test/test_json/test_tool.py
@@ -130,6 +130,15 @@ class TestTool(unittest.TestCase):
self.assertEqual(out, b'')
self.assertEqual(err, b'')
+ def test_writing_in_place(self):
+ infile = self._create_infile()
+ rc, out, err = assert_python_ok('-m', 'json.tool', infile, infile)
+ with open(infile, "r", encoding="utf-8") as fp:
+ self.assertEqual(fp.read(), self.expect)
+ self.assertEqual(rc, 0)
+ self.assertEqual(out, b'')
+ self.assertEqual(err, b'')
+
def test_jsonlines(self):
args = sys.executable, '-m', 'json.tool', '--json-lines'
process = subprocess.run(args, input=self.jsonlines_raw, capture_output=True, text=True, check=True)