From 709d2ee1063cc7f57377689607ac38d4bda94f24 Mon Sep 17 00:00:00 2001 From: fhgffy <102001626+fhgffy@users.noreply.github.com> Date: Sun, 11 Oct 2026 04:20:06 +0800 Subject: [PATCH] Fix CLI pointer file whitespace preservation --- bin/jsonpointer | 3 ++- tests.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bin/jsonpointer b/bin/jsonpointer index 422eb7e..31ac315 100755 --- a/bin/jsonpointer +++ b/bin/jsonpointer @@ -55,7 +55,8 @@ def parse_pointer(args): if args.pointer is not None: ptr = args.pointer else: - ptr = args.pointer_file.read().strip() + # 2026-10-11: Trim file line endings without changing member names. + ptr = args.pointer_file.read().rstrip("\r\n") elif args.POINTER is not None: ptr = args.POINTER diff --git a/tests.py b/tests.py index a330ab4..bf054ed 100755 --- a/tests.py +++ b/tests.py @@ -514,6 +514,17 @@ def test_pointer_file(self): self.assertEqual(proc.returncode, 0, proc.stderr) self.assertEqual(proc.stdout, self.A_OUT + self.B_OUT) + # 2026-10-11: A pointer file's trailing spaces are part of its member name. + def test_pointer_file_preserves_member_whitespace(self): + self._write('space.json', '{"a ": "expected", "a": "wrong"}') + for newline in ('', '\n', '\r\n'): + with self.subTest(newline=newline): + with open(os.path.join(self.dir, 'space.txt'), 'w', newline='') as f: + f.write('/a ' + newline) + proc = self._run('-f', 'space.txt', 'space.json') + self.assertEqual(proc.returncode, 0, proc.stderr) + self.assertEqual(proc.stdout, '"expected"\n') + def test_pointer_file_single_file(self): proc = self._run('-f', 'ptr.txt', 'a.json') self.assertEqual(proc.returncode, 0, proc.stderr)