diff --git a/test/test_uri_parser.py b/test/test_uri_parser.py index 4fe5cb7a0f..3fdc0f9779 100644 --- a/test/test_uri_parser.py +++ b/test/test_uri_parser.py @@ -17,6 +17,7 @@ from __future__ import annotations import copy +import subprocess import sys import warnings from typing import Any @@ -695,5 +696,30 @@ def test_validate_uri_srv_structure(self): ) +class TestMainBlock(unittest.TestCase): + def test_valid_uri_prints_parsed_dict(self): + # Run uri_parser.py as a script; a valid URI is pretty-printed. + result = subprocess.run( + [sys.executable, "-m", "pymongo.uri_parser", "mongodb://localhost:27017/mydb"], + capture_output=True, + text=True, + timeout=15, + ) + self.assertEqual(0, result.returncode) + self.assertIn("localhost", result.stdout) + self.assertIn("mydb", result.stdout) + + def test_invalid_uri_prints_error(self): + # An invalid URI is caught and its message printed, still exiting 0. + result = subprocess.run( + [sys.executable, "-m", "pymongo.uri_parser", "not-a-valid-uri"], + capture_output=True, + text=True, + timeout=15, + ) + self.assertEqual(0, result.returncode) + self.assertIn("Invalid URI scheme", result.stdout) + + if __name__ == "__main__": unittest.main()