@@ -8,19 +8,13 @@ use snapbox::data::Inline;
88const ALLOW_CLEAN : LazyLock < Inline > = LazyLock :: new ( || {
99 str![ [ r#"
1010[CHECKING] foo v0.0.1 ([ROOT]/foo)
11- [WARNING] unused variable: `x`
12- ...
13- [WARNING] `foo` (bin "foo") generated 1 warning
1411[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
1512
1613"# ] ]
1714} ) ;
1815
1916const ALLOW_CACHED : LazyLock < Inline > = LazyLock :: new ( || {
2017 str![ [ r#"
21- [WARNING] unused variable: `x`
22- ...
23- [WARNING] `foo` (bin "foo") generated 1 warning
2418[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
2519
2620"# ] ]
@@ -44,6 +38,7 @@ const DENY: LazyLock<Inline> = LazyLock::new(|| {
4438...
4539[WARNING] `foo` (bin "foo") generated 1 warning
4640[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
41+ [ERROR] warnings are denied by `build.warnings` configuration
4742
4843"# ] ]
4944} ) ;
@@ -68,33 +63,74 @@ fn make_project(main_src: &str) -> Project {
6863#[ cargo_test]
6964fn rustc_caching_allow_first ( ) {
7065 let p = make_project ( "let x = 3;" ) ;
71- p. cargo ( "check" ) . with_stderr_data ( ALLOW_CLEAN . clone ( ) ) . run ( ) ;
66+ p. cargo ( "check" )
67+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
68+ . arg ( "-Zwarnings" )
69+ . arg ( "--config" )
70+ . arg ( "build.warnings='allow'" )
71+ . with_stderr_data ( ALLOW_CLEAN . clone ( ) )
72+ . run ( ) ;
7273
73- p. cargo ( "check" ) . with_stderr_data ( DENY . clone ( ) ) . run ( ) ;
74+ p. cargo ( "check" )
75+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
76+ . arg ( "-Zwarnings" )
77+ . arg ( "--config" )
78+ . arg ( "build.warnings='deny'" )
79+ . with_stderr_data ( DENY . clone ( ) )
80+ . with_status ( 101 )
81+ . run ( ) ;
7482}
7583
7684#[ cargo_test]
7785fn rustc_caching_deny_first ( ) {
7886 let p = make_project ( "let x = 3;" ) ;
79- p. cargo ( "check" ) . with_stderr_data ( DENY . clone ( ) ) . run ( ) ;
87+ p. cargo ( "check" )
88+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
89+ . arg ( "-Zwarnings" )
90+ . arg ( "--config" )
91+ . arg ( "build.warnings='deny'" )
92+ . with_stderr_data ( DENY . clone ( ) )
93+ . with_status ( 101 )
94+ . run ( ) ;
8095
8196 p. cargo ( "check" )
97+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
98+ . arg ( "-Zwarnings" )
99+ . arg ( "--config" )
100+ . arg ( "build.warnings='allow'" )
82101 . with_stderr_data ( ALLOW_CACHED . clone ( ) )
83102 . run ( ) ;
84103}
85104
86105#[ cargo_test]
87106fn config ( ) {
88107 let p = make_project ( "let x = 3;" ) ;
89- p. cargo ( "check" ) . with_stderr_data ( DENY . clone ( ) ) . run ( ) ;
108+ p. cargo ( "check" )
109+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
110+ . arg ( "-Zwarnings" )
111+ . env ( "CARGO_BUILD_WARNINGS" , "deny" )
112+ . with_stderr_data ( DENY . clone ( ) )
113+ . with_status ( 101 )
114+ . run ( ) ;
90115
91- // CLI has precedence over env.
92- p. cargo ( "check" ) . with_stderr_data ( WARN . clone ( ) ) . run ( ) ;
116+ // CLI has precedence over env
117+ p. cargo ( "check" )
118+ . masquerade_as_nightly_cargo ( & [ "warnings" ] )
119+ . arg ( "-Zwarnings" )
120+ . arg ( "--config" )
121+ . arg ( "build.warnings='warn'" )
122+ . env ( "CARGO_BUILD_WARNINGS" , "deny" )
123+ . with_stderr_data ( WARN . clone ( ) )
124+ . run ( ) ;
93125}
94126
95127#[ cargo_test]
96128fn requires_nightly ( ) {
97129 // build.warnings has no effect without -Zwarnings.
98130 let p = make_project ( "let x = 3;" ) ;
99- p. cargo ( "check" ) . with_stderr_data ( WARN . clone ( ) ) . run ( ) ;
131+ p. cargo ( "check" )
132+ . arg ( "--config" )
133+ . arg ( "build.warnings='deny'" )
134+ . with_stderr_data ( WARN . clone ( ) )
135+ . run ( ) ;
100136}
0 commit comments