1
1
#![ allow( clippy:: exit) ]
2
2
3
+ use crate :: testcase:: collect_test_dirs;
3
4
use anyhow:: Result ;
5
+ use runner:: Runner ;
4
6
use std:: {
5
- env,
7
+ env, fs ,
6
8
process:: { self , Command } ,
7
9
} ;
8
10
use tester:: {
@@ -14,7 +16,7 @@ use tracing_subscriber::FmtSubscriber;
14
16
15
17
mod differ;
16
18
mod runner;
17
- use runner :: Runner ;
19
+ mod testcase ;
18
20
19
21
fn main ( ) -> Result < ( ) > {
20
22
let subscriber = FmtSubscriber :: builder ( )
@@ -63,10 +65,19 @@ fn main() -> Result<()> {
63
65
. expect ( "Failed to canonicalize tests directory" ) ;
64
66
tracing:: debug!( "Using tests directory: {}" , base. display( ) ) ;
65
67
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
+ } ;
67
79
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" ) ;
70
81
if test_cases. is_empty ( ) {
71
82
eprintln ! ( "No valid tests found in {}" , base. display( ) ) ;
72
83
process:: exit ( 1 ) ;
@@ -92,25 +103,22 @@ fn main() -> Result<()> {
92
103
93
104
let tests: Vec < TestDescAndFn > = test_cases
94
105
. 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
+ } ) ) ,
114
122
} )
115
123
. collect ( ) ;
116
124
0 commit comments