1
1
#![ feature( test) ]
2
2
3
3
use compiletest_rs as compiletest;
4
- extern crate test ;
4
+ use libtest :: TestDescAndFn ;
5
5
6
6
use std:: env:: { set_var, var} ;
7
7
use std:: ffi:: OsStr ;
@@ -74,15 +74,12 @@ fn run_mode(mode: &str, dir: PathBuf) {
74
74
compiletest:: run_tests ( & cfg) ;
75
75
}
76
76
77
- fn run_ui_toml_tests ( config : & compiletest:: Config , mut tests : Vec < test:: TestDescAndFn > ) -> Result < bool , io:: Error > {
77
+ #[ warn( clippy:: identity_conversion) ]
78
+ fn run_ui_toml_tests ( config : & compiletest:: Config , mut tests : Vec < TestDescAndFn > ) -> Result < bool , io:: Error > {
78
79
let mut result = true ;
79
80
let opts = compiletest:: test_opts ( config) ;
80
81
for dir in fs:: read_dir ( & config. src_base ) ? {
81
- let dir = dir?;
82
- if !dir. file_type ( ) ?. is_dir ( ) {
83
- continue ;
84
- }
85
- let dir_path = dir. path ( ) ;
82
+ let dir_path = dir. unwrap ( ) . path ( ) ;
86
83
set_var ( "CARGO_MANIFEST_DIR" , & dir_path) ;
87
84
for file in fs:: read_dir ( & dir_path) ? {
88
85
let file = file?;
@@ -101,9 +98,25 @@ fn run_ui_toml_tests(config: &compiletest::Config, mut tests: Vec<test::TestDesc
101
98
let test_name = compiletest:: make_test_name ( & config, & paths) ;
102
99
let index = tests
103
100
. iter ( )
104
- . position ( |test| test. desc . name == test_name)
101
+ . position ( |test| test. desc . name . to_string ( ) == test_name. to_string ( ) )
105
102
. expect ( "The test should be in there" ) ;
106
- result &= test:: run_tests_console ( & opts, vec ! [ tests. swap_remove( index) ] ) ?;
103
+ let opts = libtest:: TestOpts {
104
+ list : opts. list ,
105
+ filter : opts. filter . clone ( ) ,
106
+ filter_exact : opts. filter_exact ,
107
+ exclude_should_panic : Default :: default ( ) ,
108
+ run_ignored : libtest:: RunIgnored :: No ,
109
+ run_tests : opts. run_tests ,
110
+ bench_benchmarks : opts. bench_benchmarks ,
111
+ logfile : opts. logfile . clone ( ) ,
112
+ nocapture : opts. nocapture ,
113
+ color : libtest:: ColorConfig :: AutoColor ,
114
+ format : libtest:: OutputFormat :: Pretty ,
115
+ test_threads : opts. test_threads ,
116
+ skip : opts. skip . clone ( ) ,
117
+ options : libtest:: Options :: new ( ) ,
118
+ } ;
119
+ result &= libtest:: run_tests_console ( & opts, vec ! [ tests. swap_remove( index) ] ) ?;
107
120
}
108
121
}
109
122
Ok ( result)
@@ -114,6 +127,22 @@ fn run_ui_toml() {
114
127
let config = config ( "ui" , path) ;
115
128
let tests = compiletest:: make_tests ( & config) ;
116
129
130
+ let tests = tests
131
+ . into_iter ( )
132
+ . map ( |test| {
133
+ libtest:: TestDescAndFn {
134
+ desc : libtest:: TestDesc {
135
+ name : libtest:: TestName :: DynTestName ( test. desc . name . to_string ( ) ) ,
136
+ ignore : test. desc . ignore ,
137
+ allow_fail : test. desc . allow_fail ,
138
+ should_panic : libtest:: ShouldPanic :: No ,
139
+ } ,
140
+ // oli obk giving up
141
+ testfn : unsafe { std:: mem:: transmute ( test. testfn ) } ,
142
+ }
143
+ } )
144
+ . collect ( ) ;
145
+
117
146
let res = run_ui_toml_tests ( & config, tests) ;
118
147
match res {
119
148
Ok ( true ) => { } ,
0 commit comments