Skip to content

Commit 9e23811

Browse files
committed
collect all results and display them all at the end
1 parent d68cc17 commit 9e23811

2 files changed

Lines changed: 20 additions & 16 deletions

File tree

Lib/mimetypes.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -718,8 +718,6 @@ def _parse_args(args):
718718

719719
def _main(args=None):
720720
"""Run the mimetypes command-line interface and return a text to print."""
721-
import sys
722-
723721
args, help_text = _parse_args(args)
724722

725723
results = []
@@ -729,17 +727,21 @@ def _main(args=None):
729727
if guess:
730728
results.append(str(guess))
731729
else:
732-
sys.exit(f"error: unknown type {gtype}")
733-
return '\n'.join(results)
730+
results.append(f"error: unknown type {gtype}")
731+
return results
734732
else:
735733
for gtype in args.type:
736734
guess, encoding = guess_type(gtype, not args.lenient)
737735
if guess:
738736
results.append(f"type: {guess} encoding: {encoding}")
739737
else:
740-
sys.exit(f"error: media type unknown for {gtype}")
741-
return '\n'.join(results)
738+
results.append(f"error: media type unknown for {gtype}")
739+
return results
742740

743741

744742
if __name__ == '__main__':
745-
print(_main())
743+
import sys
744+
745+
results = _main()
746+
print("\n".join(results))
747+
sys.exit(any(result.startswith("error: ") for result in results))

Lib/test/test_mimetypes.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -471,19 +471,20 @@ def test_parse_args(self):
471471
self.assertEqual(args.type, ["foo.pic"])
472472

473473
def test_multiple_inputs(self):
474-
result = mimetypes._main(shlex.split("foo.pdf foo.png"))
474+
result = "\n".join(mimetypes._main(shlex.split("foo.pdf foo.png")))
475475
self.assertEqual(
476476
result,
477477
"type: application/pdf encoding: None\n"
478478
"type: image/png encoding: None"
479479
)
480480

481481
def test_multiple_inputs_error(self):
482-
with self.assertRaises(SystemExit) as err:
483-
mimetypes._main(shlex.split("foo.pdf foo.bar_ext"))
484-
485-
self.assertNotEqual(err.exception.code, 0)
486-
self.assertIn("error: media type unknown for foo.bar_ext", str(err.exception))
482+
result = "\n".join(mimetypes._main(shlex.split("foo.pdf foo.bar_ext")))
483+
self.assertEqual(
484+
result,
485+
"type: application/pdf encoding: None\n"
486+
"error: media type unknown for foo.bar_ext"
487+
)
487488

488489

489490
def test_invocation(self):
@@ -492,16 +493,17 @@ def test_invocation(self):
492493
("-e image/jpeg", ".jpg"),
493494
("-l foo.webp", "type: image/webp encoding: None"),
494495
]:
495-
self.assertEqual(mimetypes._main(shlex.split(command)), expected)
496+
result = "\n".join(mimetypes._main(shlex.split(command)))
497+
self.assertEqual(result, expected)
496498

497499
def test_invocation_error(self):
498500
for command, expected in [
499501
("-e image/jpg", "error: unknown type image/jpg"),
500502
("foo.bar_ext", "error: media type unknown for foo.bar_ext"),
501503
]:
502504
with self.subTest(command=command):
503-
with self.assertRaisesRegex(SystemExit, expected):
504-
mimetypes._main(shlex.split(command))
505+
result = "\n".join(mimetypes._main(shlex.split(command)))
506+
self.assertEqual(result, expected)
505507

506508

507509
if __name__ == "__main__":

0 commit comments

Comments
 (0)