@@ -431,6 +431,34 @@ def test_client_config_normalize_base_url_validates_and_normalizes():
431431 ClientConfig .normalize_base_url ("https://user:pass@example.local" )
432432
433433
434+ def test_client_config_normalize_base_url_wraps_unexpected_urlparse_errors (
435+ monkeypatch : pytest .MonkeyPatch ,
436+ ):
437+ def _raise_runtime_error (_value : str ):
438+ raise RuntimeError ("url parser exploded" )
439+
440+ monkeypatch .setattr (config_module , "urlparse" , _raise_runtime_error )
441+
442+ with pytest .raises (HyperbrowserError , match = "Failed to parse base_url" ) as exc_info :
443+ ClientConfig .normalize_base_url ("https://example.local" )
444+
445+ assert exc_info .value .original_error is not None
446+
447+
448+ def test_client_config_normalize_base_url_preserves_hyperbrowser_urlparse_errors (
449+ monkeypatch : pytest .MonkeyPatch ,
450+ ):
451+ def _raise_hyperbrowser_error (_value : str ):
452+ raise HyperbrowserError ("custom urlparse failure" )
453+
454+ monkeypatch .setattr (config_module , "urlparse" , _raise_hyperbrowser_error )
455+
456+ with pytest .raises (HyperbrowserError , match = "custom urlparse failure" ) as exc_info :
457+ ClientConfig .normalize_base_url ("https://example.local" )
458+
459+ assert exc_info .value .original_error is None
460+
461+
434462def test_client_config_normalize_base_url_preserves_invalid_port_original_error ():
435463 with pytest .raises (
436464 HyperbrowserError , match = "base_url must contain a valid port number"
0 commit comments