File tree Expand file tree Collapse file tree
hyperbrowser/client/managers Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -51,7 +51,18 @@ def serialize_model_dump_or_default(
5151 exclude_none : bool = True ,
5252 by_alias : bool = True ,
5353) -> Dict [str , Any ]:
54- model_obj = model if model is not None else default_factory ()
54+ if model is not None :
55+ model_obj = model
56+ else :
57+ try :
58+ model_obj = default_factory ()
59+ except HyperbrowserError :
60+ raise
61+ except Exception as exc :
62+ raise HyperbrowserError (
63+ error_message ,
64+ original_error = exc ,
65+ ) from exc
5566 return serialize_model_dump_to_dict (
5667 model_obj ,
5768 error_message = error_message ,
Original file line number Diff line number Diff line change @@ -137,3 +137,31 @@ def _default_factory():
137137 assert provided_model .calls == [(False , False )]
138138 assert default_model .calls == []
139139 assert default_factory_called is False
140+
141+
142+ def test_serialize_model_dump_or_default_wraps_default_factory_errors ():
143+ def _broken_default_factory ():
144+ raise RuntimeError ("default factory failed" )
145+
146+ with pytest .raises (HyperbrowserError , match = "serialize failure" ) as exc_info :
147+ serialize_model_dump_or_default (
148+ None ,
149+ default_factory = _broken_default_factory ,
150+ error_message = "serialize failure" ,
151+ )
152+
153+ assert isinstance (exc_info .value .original_error , RuntimeError )
154+
155+
156+ def test_serialize_model_dump_or_default_preserves_hyperbrowser_default_factory_errors ():
157+ def _broken_default_factory ():
158+ raise HyperbrowserError ("custom default failure" )
159+
160+ with pytest .raises (HyperbrowserError , match = "custom default failure" ) as exc_info :
161+ serialize_model_dump_or_default (
162+ None ,
163+ default_factory = _broken_default_factory ,
164+ error_message = "serialize failure" ,
165+ )
166+
167+ assert exc_info .value .original_error is None
You can’t perform that action at this time.
0 commit comments