1
- use std:: process:: Command ;
2
-
3
1
fn main ( ) {
4
2
use std:: env;
5
3
let opt_level = env:: var ( "OPT_LEVEL" )
@@ -12,88 +10,11 @@ fn main() {
12
10
}
13
11
14
12
do_cc ( ) ;
15
- test_ctest_c ( ) ;
16
- test_ctest_cpp ( ) ;
17
- test_ctest_next ( ) ;
18
- }
19
-
20
- fn test_ctest_c ( ) {
21
- ctest:: TestGenerator :: new ( )
22
- . header ( "t1.h" )
23
- . include ( "src" )
24
- . fn_cname ( |a, b| b. unwrap_or ( a) . to_string ( ) )
25
- . type_name ( move |ty, is_struct, is_union| match ty {
26
- "T1Union" => ty. to_string ( ) ,
27
- "Transparent" => ty. to_string ( ) ,
28
- t if is_struct => format ! ( "struct {t}" ) ,
29
- t if is_union => format ! ( "union {t}" ) ,
30
- t => t. to_string ( ) ,
31
- } )
32
- . volatile_item ( t1_volatile)
33
- . array_arg ( t1_arrays)
34
- . skip_roundtrip ( |n| n == "Arr" )
35
- . skip_const ( |name| name == "T1S" )
36
- . generate ( "src/t1.rs" , "t1gen.rs" ) ;
37
-
38
- ctest:: TestGenerator :: new ( )
39
- . header ( "t2.h" )
40
- . include ( "src" )
41
- . skip_const ( |name| name == "T2S" )
42
- . type_name ( move |ty, is_struct, is_union| match ty {
43
- "T2Union" => ty. to_string ( ) ,
44
- t if is_struct => format ! ( "struct {t}" ) ,
45
- t if is_union => format ! ( "union {t}" ) ,
46
- t => t. to_string ( ) ,
47
- } )
48
- . skip_roundtrip ( |_| true )
49
- . generate ( "src/t2.rs" , "t2gen.rs" ) ;
50
- }
51
-
52
- fn test_ctest_cpp ( ) {
53
- println ! ( "cargo::rustc-check-cfg=cfg(has_cxx)" ) ;
54
- if !cfg ! ( unix) || Command :: new ( "c++" ) . arg ( "v" ) . output ( ) . is_ok ( ) {
55
- // A C compiler is always available, but these are only run if a C++ compiler is
56
- // also available.
57
- println ! ( "cargo::rustc-cfg=has_cxx" ) ;
58
-
59
- ctest:: TestGenerator :: new ( )
60
- . header ( "t1.h" )
61
- . language ( ctest:: Lang :: CXX )
62
- . include ( "src" )
63
- . fn_cname ( |a, b| b. unwrap_or ( a) . to_string ( ) )
64
- . type_name ( move |ty, is_struct, is_union| match ty {
65
- "T1Union" => ty. to_string ( ) ,
66
- "Transparent" => ty. to_string ( ) ,
67
- t if is_struct => format ! ( "struct {t}" ) ,
68
- t if is_union => format ! ( "union {t}" ) ,
69
- t => t. to_string ( ) ,
70
- } )
71
- . skip_const ( |name| name == "T1S" )
72
- . volatile_item ( t1_volatile)
73
- . array_arg ( t1_arrays)
74
- . skip_roundtrip ( |n| n == "Arr" )
75
- . generate ( "src/t1.rs" , "t1gen_cxx.rs" ) ;
76
-
77
- ctest:: TestGenerator :: new ( )
78
- . header ( "t2.h" )
79
- . language ( ctest:: Lang :: CXX )
80
- . include ( "src" )
81
- . skip_const ( |name| name == "T2S" )
82
- . type_name ( move |ty, is_struct, is_union| match ty {
83
- "T2Union" => ty. to_string ( ) ,
84
- t if is_struct => format ! ( "struct {t}" ) ,
85
- t if is_union => format ! ( "union {t}" ) ,
86
- t => t. to_string ( ) ,
87
- } )
88
- . skip_roundtrip ( |_| true )
89
- . generate ( "src/t2.rs" , "t2gen_cxx.rs" ) ;
90
- } else {
91
- println ! ( "cargo::warning=skipping C++ tests" ) ;
92
- }
13
+ test_ctest ( ) ;
93
14
}
94
15
95
- fn test_ctest_next ( ) {
96
- let mut t1gen = ctest_next :: TestGenerator :: new ( ) ;
16
+ fn test_ctest ( ) {
17
+ let mut t1gen = ctest :: TestGenerator :: new ( ) ;
97
18
t1gen
98
19
. header ( "t1.h" )
99
20
. include ( "src" )
@@ -112,17 +33,17 @@ fn test_ctest_next() {
112
33
// The parameter `a` of the functions `T1r`, `T1s`, `T1t`, `T1v` is an array.
113
34
. array_arg ( |f, p| matches ! ( f. ident( ) , "T1r" | "T1s" | "T1t" | "T1v" ) && p. ident ( ) == "a" )
114
35
. skip_roundtrip ( |n| n == "Arr" ) ;
115
- ctest_next :: generate_test ( & mut t1gen, "src/t1.rs" , "t1nextgen .rs" ) . unwrap ( ) ;
36
+ ctest :: generate_test ( & mut t1gen, "src/t1.rs" , "t1gen .rs" ) . unwrap ( ) ;
116
37
117
- let mut t2gen = ctest_next :: TestGenerator :: new ( ) ;
38
+ let mut t2gen = ctest :: TestGenerator :: new ( ) ;
118
39
t2gen
119
40
. header ( "t2.h" )
120
41
. include ( "src" )
121
42
// public C typedefs have to manually be specified because they are identical to normal
122
43
// structs on the Rust side.
123
44
. rename_union_ty ( |ty| ( ty == "T2Union" ) . then_some ( ty. to_string ( ) ) )
124
45
. skip_roundtrip ( |_| true ) ;
125
- ctest_next :: generate_test ( & mut t2gen, "src/t2.rs" , "t2nextgen .rs" ) . unwrap ( ) ;
46
+ ctest :: generate_test ( & mut t2gen, "src/t2.rs" , "t2gen .rs" ) . unwrap ( ) ;
126
47
}
127
48
128
49
fn do_cc ( ) {
@@ -140,20 +61,3 @@ fn do_cc() {
140
61
println ! ( "cargo:rerun-if-changed=src/t2.c" ) ;
141
62
println ! ( "cargo:rerun-if-changed=src/t2.h" ) ;
142
63
}
143
-
144
- fn t1_volatile ( i : ctest:: VolatileItemKind ) -> bool {
145
- use ctest:: VolatileItemKind :: * ;
146
- match i {
147
- StructField ( ref n, ref f) if n == "V" && f == "v" => true ,
148
- Static ( ref n) if n == "vol_ptr" => true ,
149
- FunctionArg ( ref n, 0 ) if n == "T1_vol0" => true ,
150
- FunctionArg ( ref n, 1 ) if n == "T1_vol2" => true ,
151
- FunctionRet ( ref n) if n == "T1_vol1" || n == "T1_vol2" => true ,
152
- Static ( ref n) if n == "T1_fn_ptr_vol" => true ,
153
- _ => false ,
154
- }
155
- }
156
-
157
- fn t1_arrays ( n : & str , i : usize ) -> bool {
158
- i == 0 && matches ! ( n, "T1r" | "T1s" | "T1t" | "T1v" )
159
- }
0 commit comments