@@ -354,6 +354,55 @@ def record(self, val):
354354 assert attrs ["code.file.path" ] == "blah/path.py"
355355
356356
357+ def test_log_keeps_full_path_if_not_in_project_root (
358+ sentry_init , capture_envelopes , uninstall_integration , request
359+ ):
360+ uninstall_integration ("loguru" )
361+ request .addfinalizer (logger .remove )
362+
363+ sentry_init (
364+ _experiments = {"enable_logs" : True },
365+ project_root = "/custom/test" ,
366+ )
367+ envelopes = capture_envelopes ()
368+
369+ class FakeMessage :
370+ def __init__ (self , * args , ** kwargs ):
371+ pass
372+
373+ @property
374+ def record (self ):
375+ return {
376+ "elapsed" : MagicMock (),
377+ "exception" : None ,
378+ "file" : RecordFile (name = "app.py" , path = "/blah/path.py" ),
379+ "function" : "<module>" ,
380+ "level" : RecordLevel (name = "ERROR" , no = 20 , icon = "" ),
381+ "line" : 35 ,
382+ "message" : "some message" ,
383+ "module" : "app" ,
384+ "name" : "__main__" ,
385+ "process" : MagicMock (),
386+ "thread" : MagicMock (),
387+ "time" : MagicMock (),
388+ "extra" : MagicMock (),
389+ }
390+
391+ @record .setter
392+ def record (self , val ):
393+ pass
394+
395+ with patch ("loguru._handler.Message" , FakeMessage ):
396+ logger .error ("some message" )
397+
398+ sentry_sdk .get_client ().flush ()
399+
400+ logs = envelopes_to_logs (envelopes )
401+ assert len (logs ) == 1
402+ attrs = logs [0 ]["attributes" ]
403+ assert attrs ["code.file.path" ] == "/blah/path.py"
404+
405+
357406def test_logger_with_all_attributes (
358407 sentry_init , capture_envelopes , uninstall_integration , request
359408):
0 commit comments