@@ -4,6 +4,7 @@ extern crate hamcrest;
4
4
use std:: env;
5
5
use std:: path:: MAIN_SEPARATOR as SEP ;
6
6
7
+ use cargotest:: is_nightly;
7
8
use cargotest:: support:: { project, execs} ;
8
9
use hamcrest:: assert_that;
9
10
@@ -42,6 +43,85 @@ url = p.url(),
42
43
) ) ) ;
43
44
}
44
45
46
+ #[ test]
47
+ fn opt_level_override_0 ( ) {
48
+ let mut p = project ( "foo" ) ;
49
+ p = p
50
+ . file ( "Cargo.toml" , r#"
51
+ [package]
52
+
53
+ name = "test"
54
+ version = "0.0.0"
55
+ authors = []
56
+
57
+ [profile.dev]
58
+ opt-level = 0
59
+ "# )
60
+ . file ( "src/lib.rs" , "" ) ;
61
+ assert_that ( p. cargo_process ( "build" ) . arg ( "-v" ) ,
62
+ execs ( ) . with_status ( 0 ) . with_stderr ( & format ! ( "\
63
+ [COMPILING] test v0.0.0 ({url})
64
+ [RUNNING] `rustc src{sep}lib.rs --crate-name test --crate-type lib \
65
+ -g \
66
+ -C metadata=[..] \
67
+ --out-dir [..] \
68
+ --emit=dep-info,link \
69
+ -L dependency={dir}{sep}target{sep}debug{sep}deps`
70
+ [FINISHED] [..] target(s) in [..]
71
+ " , sep = SEP ,
72
+ dir = p. root( ) . display( ) ,
73
+ url = p. url( )
74
+ ) ) ) ;
75
+ }
76
+
77
+ fn check_opt_level_override ( profile_level : & str , rustc_level : & str ) {
78
+ let mut p = project ( "foo" ) ;
79
+ p = p
80
+ . file ( "Cargo.toml" , & format ! ( r#"
81
+ [package]
82
+
83
+ name = "test"
84
+ version = "0.0.0"
85
+ authors = []
86
+
87
+ [profile.dev]
88
+ opt-level = {level}
89
+ "# , level = profile_level) )
90
+ . file ( "src/lib.rs" , "" ) ;
91
+ assert_that ( p. cargo_process ( "build" ) . arg ( "-v" ) ,
92
+ execs ( ) . with_status ( 0 ) . with_stderr ( & format ! ( "\
93
+ [COMPILING] test v0.0.0 ({url})
94
+ [RUNNING] `rustc src{sep}lib.rs --crate-name test --crate-type lib \
95
+ -C opt-level={level} \
96
+ -g \
97
+ -C debug-assertions=on \
98
+ -C metadata=[..] \
99
+ --out-dir [..] \
100
+ --emit=dep-info,link \
101
+ -L dependency={dir}{sep}target{sep}debug{sep}deps`
102
+ [FINISHED] [..] target(s) in [..]
103
+ " , sep = SEP ,
104
+ dir = p. root( ) . display( ) ,
105
+ url = p. url( ) ,
106
+ level = rustc_level
107
+ ) ) ) ;
108
+ }
109
+
110
+ #[ test]
111
+ fn opt_level_overrides ( ) {
112
+ if !is_nightly ( ) { return }
113
+
114
+ for & ( profile_level, rustc_level) in & [
115
+ ( "1" , "1" ) ,
116
+ ( "2" , "2" ) ,
117
+ ( "3" , "3" ) ,
118
+ ( "\" s\" " , "s" ) ,
119
+ ( "\" z\" " , "z" ) ,
120
+ ] {
121
+ check_opt_level_override ( profile_level, rustc_level)
122
+ }
123
+ }
124
+
45
125
#[ test]
46
126
fn top_level_overrides_deps ( ) {
47
127
let mut p = project ( "foo" ) ;
0 commit comments