@@ -14,51 +14,55 @@ struct CheckCfg {
1414
1515enum Contains {
1616 Some { contains : & ' static [ & ' static str ] , doesnt_contain : & ' static [ & ' static str ] } ,
17- Only ( & ' static str ) ,
17+ Nothing ,
1818}
1919
2020fn main ( ) {
21- check ( CheckCfg { args : & [ ] , contains : Contains :: Only ( "any()=any()" ) } ) ;
21+ check ( CheckCfg { args : & [ ] , contains : Contains :: Nothing } ) ;
2222 check ( CheckCfg {
2323 args : & [ "--check-cfg=cfg()" ] ,
2424 contains : Contains :: Some {
25- contains : & [ "unix" , "miri" ] ,
26- doesnt_contain : & [ "any()" , " any()=any( )"] ,
25+ contains : & [ "cfg( unix, values(none())) " , "cfg( miri, values(none())) " ] ,
26+ doesnt_contain : & [ "cfg( any())" ] ,
2727 } ,
2828 } ) ;
2929 check ( CheckCfg {
3030 args : & [ "--check-cfg=cfg(any())" ] ,
3131 contains : Contains :: Some {
32- contains : & [ "any()" , "unix" , r#"target_feature="crt-static""# ] ,
32+ contains : & [ "cfg( any()) " , "cfg( unix, values(none()))" ] ,
3333 doesnt_contain : & [ "any()=any()" ] ,
3434 } ,
3535 } ) ;
3636 check ( CheckCfg {
3737 args : & [ "--check-cfg=cfg(feature)" ] ,
3838 contains : Contains :: Some {
39- contains : & [ "unix" , "miri" , "feature" ] ,
40- doesnt_contain : & [ "any()" , "any()=any()" , "feature=none()" , "feature=" ] ,
39+ contains : & [
40+ "cfg(unix, values(none()))" ,
41+ "cfg(miri, values(none()))" ,
42+ "cfg(feature, values(none()))" ,
43+ ] ,
44+ doesnt_contain : & [ "cfg(any())" , "cfg(feature)" ] ,
4145 } ,
4246 } ) ;
4347 check ( CheckCfg {
4448 args : & [ r#"--check-cfg=cfg(feature, values(none(), "", "test", "lol"))"# ] ,
4549 contains : Contains :: Some {
46- contains : & [ " feature" , "feature= \" \" ", "feature= \" test\" " , "feature= \" lol \" " ] ,
47- doesnt_contain : & [ "any()" , " any()=any( )", "feature= none()" , "feature= " ] ,
50+ contains : & [ r#"cfg( feature, values("", "lol ", "test", none()))"# ] ,
51+ doesnt_contain : & [ "cfg( any())" , "cfg( feature, values( none())) " , "cfg( feature) " ] ,
4852 } ,
4953 } ) ;
5054 check ( CheckCfg {
5155 args : & [ "--check-cfg=cfg(feature, values())" ] ,
5256 contains : Contains :: Some {
53- contains : & [ "feature= " ] ,
54- doesnt_contain : & [ "any()" , " any()=any( )", "feature= none()" , "feature" ] ,
57+ contains : & [ "cfg( feature, values()) " ] ,
58+ doesnt_contain : & [ "cfg( any())" , "cfg( feature, values( none())) " , "cfg( feature) " ] ,
5559 } ,
5660 } ) ;
5761 check ( CheckCfg {
5862 args : & [ "--check-cfg=cfg(feature, values())" , "--check-cfg=cfg(feature, values(none()))" ] ,
5963 contains : Contains :: Some {
60- contains : & [ "feature" ] ,
61- doesnt_contain : & [ "any()" , " any()=any( )", "feature=none()" , "feature= "] ,
64+ contains : & [ "cfg( feature, values(none())) " ] ,
65+ doesnt_contain : & [ "cfg( any())" , "cfg(feature, values()) " ] ,
6266 } ,
6367 } ) ;
6468 check ( CheckCfg {
@@ -67,8 +71,8 @@ fn main() {
6771 r#"--check-cfg=cfg(feature, values("tmp"))"# ,
6872 ] ,
6973 contains : Contains :: Some {
70- contains : & [ "unix" , "miri" , "feature= any()"] ,
71- doesnt_contain : & [ "any()" , " any()=any( )", " feature" , "feature=" , "feature= \" tmp\" " ] ,
74+ contains : & [ "cfg(feature, values( any()) )" ] ,
75+ doesnt_contain : & [ "cfg( any())" , r#"cfg( feature, values(" tmp"))"# ] ,
7276 } ,
7377 } ) ;
7478 check ( CheckCfg {
@@ -78,8 +82,12 @@ fn main() {
7882 r#"--check-cfg=cfg(feature, values("tmp"))"# ,
7983 ] ,
8084 contains : Contains :: Some {
81- contains : & [ "has_foo" , "has_bar" , "feature=\" tmp\" " ] ,
82- doesnt_contain : & [ "any()" , "any()=any()" , "feature" ] ,
85+ contains : & [
86+ "cfg(has_foo, values(none()))" ,
87+ "cfg(has_bar, values(none()))" ,
88+ r#"cfg(feature, values("tmp"))"# ,
89+ ] ,
90+ doesnt_contain : & [ "cfg(any())" , "cfg(feature)" ] ,
8391 } ,
8492 } ) ;
8593}
@@ -94,16 +102,15 @@ fn check(CheckCfg { args, contains }: CheckCfg) {
94102
95103 for l in stdout. lines ( ) {
96104 assert ! ( l == l. trim( ) ) ;
97- if let Some ( ( left, right) ) = l. split_once ( '=' ) {
98- if right != "any()" && right != "" {
99- assert ! ( right. starts_with( "\" " ) ) ;
100- assert ! ( right. ends_with( "\" " ) ) ;
101- }
102- assert ! ( !left. contains( "\" " ) ) ;
103- } else {
104- assert ! ( !l. contains( "\" " ) ) ;
105- }
106- assert ! ( found. insert( l. to_string( ) ) , "{}" , & l) ;
105+ assert ! ( l. starts_with( "cfg(" ) , "{l}" ) ;
106+ assert ! ( l. ends_with( ")" ) , "{l}" ) ;
107+ assert_eq ! (
108+ l. chars( ) . filter( |c| * c == '(' ) . count( ) ,
109+ l. chars( ) . filter( |c| * c == ')' ) . count( ) ,
110+ "{l}"
111+ ) ;
112+ assert ! ( l. chars( ) . filter( |c| * c == '"' ) . count( ) % 2 == 0 , "{l}" ) ;
113+ assert ! ( found. insert( l. to_string( ) ) , "{l}" ) ;
107114 }
108115
109116 match contains {
@@ -131,9 +138,8 @@ fn check(CheckCfg { args, contains }: CheckCfg) {
131138 ) ;
132139 }
133140 }
134- Contains :: Only ( only) => {
135- assert ! ( found. contains( & only. to_string( ) ) , "{:?} != {:?}" , & only, & found) ;
136- assert ! ( found. len( ) == 1 , "len: {}, instead of 1" , found. len( ) ) ;
141+ Contains :: Nothing => {
142+ assert ! ( found. len( ) == 0 , "len: {}, instead of 0" , found. len( ) ) ;
137143 }
138144 }
139145}
0 commit comments