@@ -82,7 +82,7 @@ pub trait TraceWriter {
8282 fn add_event ( & mut self , event : TraceLowLevelEvent ) ;
8383 fn append_events ( & mut self , events : & mut Vec < TraceLowLevelEvent > ) ;
8484
85- fn finish_writing_trace_metadata ( & self , path : & Path ) -> Result < ( ) , Box < dyn Error > > ;
85+ fn finish_writing_trace_metadata ( & self ) -> Result < ( ) , Box < dyn Error > > ;
8686 fn finish_writing_trace_events ( & self ) -> Result < ( ) , Box < dyn Error > > ;
8787 fn finish_writing_trace_paths ( & self , path : & Path ) -> Result < ( ) , Box < dyn Error > > ;
8888}
@@ -414,15 +414,19 @@ impl TraceWriter for NonStreamingTraceWriter {
414414 self . events . append ( events) ;
415415 }
416416
417- fn finish_writing_trace_metadata ( & self , path : & Path ) -> Result < ( ) , Box < dyn Error > > {
418- let trace_metadata = TraceMetadata {
419- program : self . program . clone ( ) ,
420- args : self . args . clone ( ) ,
421- workdir : self . workdir . clone ( ) ,
422- } ;
423- let json = serde_json:: to_string ( & trace_metadata) ?;
424- fs:: write ( path, json) ?;
425- Ok ( ( ) )
417+ fn finish_writing_trace_metadata ( & self ) -> Result < ( ) , Box < dyn Error > > {
418+ if let Some ( path) = & self . trace_metadata_path {
419+ let trace_metadata = TraceMetadata {
420+ program : self . program . clone ( ) ,
421+ args : self . args . clone ( ) ,
422+ workdir : self . workdir . clone ( ) ,
423+ } ;
424+ let json = serde_json:: to_string ( & trace_metadata) ?;
425+ fs:: write ( path, json) ?;
426+ Ok ( ( ) )
427+ } else {
428+ panic ! ( "finish_writing_trace_metadata() called without previous call to begin_writing_trace_metadata()" ) ;
429+ }
426430 }
427431
428432 fn finish_writing_trace_events ( & self ) -> Result < ( ) , Box < dyn Error > > {
0 commit comments