11#![ allow( clippy:: exit) ]
22
3+ use crate :: testcase:: collect_test_dirs;
34use anyhow:: Result ;
5+ use runner:: Runner ;
46use std:: {
5- env,
7+ env, fs ,
68 process:: { self , Command } ,
79} ;
810use tester:: {
@@ -14,7 +16,7 @@ use tracing_subscriber::FmtSubscriber;
1416
1517mod differ;
1618mod runner;
17- use runner :: Runner ;
19+ mod testcase ;
1820
1921fn main ( ) -> Result < ( ) > {
2022 let subscriber = FmtSubscriber :: builder ( )
@@ -63,10 +65,19 @@ fn main() -> Result<()> {
6365 . expect ( "Failed to canonicalize tests directory" ) ;
6466 tracing:: debug!( "Using tests directory: {}" , base. display( ) ) ;
6567
66- let runner = Runner :: new ( base. clone ( ) ) ;
68+ let output_dir = std:: path:: Path :: new ( manifest_dir) . join ( "../tests/target/difftest" ) ;
69+ fs:: create_dir_all ( & output_dir) ?;
70+ let output_dir = output_dir
71+ . canonicalize ( )
72+ . expect ( "Failed to canonicalize tests directory" ) ;
73+ tracing:: debug!( "Using output directory: {}" , output_dir. display( ) ) ;
74+
75+ let runner = Runner {
76+ base_dir : base. clone ( ) ,
77+ output_dir,
78+ } ;
6779
68- let test_cases =
69- Runner :: collect_test_dirs ( & base) . expect ( "Failed to collect test case directories" ) ;
80+ let test_cases = collect_test_dirs ( & base) . expect ( "Failed to collect test case directories" ) ;
7081 if test_cases. is_empty ( ) {
7182 eprintln ! ( "No valid tests found in {}" , base. display( ) ) ;
7283 process:: exit ( 1 ) ;
@@ -92,25 +103,22 @@ fn main() -> Result<()> {
92103
93104 let tests: Vec < TestDescAndFn > = test_cases
94105 . into_iter ( )
95- . map ( |case| {
96- let test_name = Runner :: format_test_name ( & case, & base) ;
97- TestDescAndFn {
98- desc : TestDesc {
99- name : DynTestName ( test_name. clone ( ) ) ,
100- ignore : false ,
101- should_panic : ShouldPanic :: No ,
102- allow_fail : false ,
103- test_type : TestType :: IntegrationTest ,
104- } ,
105- testfn : TestFn :: DynTestFn ( Box :: new ( {
106- let runner = runner. clone ( ) ;
107- move || {
108- runner
109- . run_test_case ( & case)
110- . unwrap_or_else ( |e| panic ! ( "{}" , e) ) ;
111- }
112- } ) ) ,
113- }
106+ . map ( |case| TestDescAndFn {
107+ desc : TestDesc {
108+ name : DynTestName ( case. to_string ( ) ) ,
109+ ignore : false ,
110+ should_panic : ShouldPanic :: No ,
111+ allow_fail : false ,
112+ test_type : TestType :: IntegrationTest ,
113+ } ,
114+ testfn : TestFn :: DynTestFn ( Box :: new ( {
115+ let runner = runner. clone ( ) ;
116+ move || {
117+ runner
118+ . run_test_case ( & case)
119+ . unwrap_or_else ( |e| panic ! ( "{}" , e) ) ;
120+ }
121+ } ) ) ,
114122 } )
115123 . collect ( ) ;
116124
0 commit comments