@@ -466,6 +466,14 @@ fn partition_source(s: &str) -> (String, String) {
466466 ( before, after)
467467}
468468
469+ pub trait Tester {
470+ fn add_test ( & mut self , test : String , config : LangString , line : usize ) ;
471+ fn get_line ( & self ) -> usize {
472+ 0
473+ }
474+ fn register_header ( & mut self , _name : & str , _level : u32 ) { }
475+ }
476+
469477pub struct Collector {
470478 pub tests : Vec < testing:: TestDescAndFn > ,
471479
@@ -534,7 +542,31 @@ impl Collector {
534542 format ! ( "{} - {} (line {})" , filename, self . names. join( "::" ) , line)
535543 }
536544
537- pub fn add_test ( & mut self , test : String , config : LangString , line : usize ) {
545+ pub fn set_position ( & mut self , position : Span ) {
546+ self . position = position;
547+ }
548+
549+ fn get_filename ( & self ) -> FileName {
550+ if let Some ( ref source_map) = self . source_map {
551+ let filename = source_map. span_to_filename ( self . position ) ;
552+ if let FileName :: Real ( ref filename) = filename {
553+ if let Ok ( cur_dir) = env:: current_dir ( ) {
554+ if let Ok ( path) = filename. strip_prefix ( & cur_dir) {
555+ return path. to_owned ( ) . into ( ) ;
556+ }
557+ }
558+ }
559+ filename
560+ } else if let Some ( ref filename) = self . filename {
561+ filename. clone ( ) . into ( )
562+ } else {
563+ FileName :: Custom ( "input" . to_owned ( ) )
564+ }
565+ }
566+ }
567+
568+ impl Tester for Collector {
569+ fn add_test ( & mut self , test : String , config : LangString , line : usize ) {
538570 let filename = self . get_filename ( ) ;
539571 let name = self . generate_name ( line, & filename) ;
540572 let cfgs = self . cfgs . clone ( ) ;
@@ -588,7 +620,7 @@ impl Collector {
588620 } ) ;
589621 }
590622
591- pub fn get_line ( & self ) -> usize {
623+ fn get_line ( & self ) -> usize {
592624 if let Some ( ref source_map) = self . source_map {
593625 let line = self . position . lo ( ) . to_usize ( ) ;
594626 let line = source_map. lookup_char_pos ( BytePos ( line as u32 ) ) . line ;
@@ -598,29 +630,7 @@ impl Collector {
598630 }
599631 }
600632
601- pub fn set_position ( & mut self , position : Span ) {
602- self . position = position;
603- }
604-
605- fn get_filename ( & self ) -> FileName {
606- if let Some ( ref source_map) = self . source_map {
607- let filename = source_map. span_to_filename ( self . position ) ;
608- if let FileName :: Real ( ref filename) = filename {
609- if let Ok ( cur_dir) = env:: current_dir ( ) {
610- if let Ok ( path) = filename. strip_prefix ( & cur_dir) {
611- return path. to_owned ( ) . into ( ) ;
612- }
613- }
614- }
615- filename
616- } else if let Some ( ref filename) = self . filename {
617- filename. clone ( ) . into ( )
618- } else {
619- FileName :: Custom ( "input" . to_owned ( ) )
620- }
621- }
622-
623- pub fn register_header ( & mut self , name : & str , level : u32 ) {
633+ fn register_header ( & mut self , name : & str , level : u32 ) {
624634 if self . use_headers {
625635 // we use these headings as test names, so it's good if
626636 // they're valid identifiers.
0 commit comments