1
1
//! Tests for `include` config field.
2
2
3
- use super :: config:: {
4
- assert_error, assert_match, read_output, write_config, write_config_at, ConfigBuilder ,
5
- } ;
6
- use cargo_test_support:: { no_such_file_err_msg, paths} ;
3
+ use super :: config:: { assert_error, write_config, write_config_at, ConfigBuilder } ;
4
+ use cargo_test_support:: { no_such_file_err_msg, paths, project} ;
7
5
use std:: fs;
8
6
9
7
#[ cargo_test]
10
8
fn gated ( ) {
11
9
// Requires -Z flag.
12
10
write_config ( "include='other'" ) ;
11
+ write_config_at (
12
+ ".cargo/other" ,
13
+ "
14
+ othervalue = 1
15
+ " ,
16
+ ) ;
13
17
let config = ConfigBuilder :: new ( ) . build ( ) ;
14
- let output = read_output ( config) ;
15
- let expected = "\
16
- warning: config `include` in `[..]/.cargo/config` ignored, \
17
- the -Zconfig-include command-line flag is required
18
- " ;
19
- assert_match ( expected, & output) ;
18
+ assert_eq ! ( config. get:: <Option <i32 >>( "othervalue" ) . unwrap( ) , None ) ;
19
+ let config = ConfigBuilder :: new ( ) . unstable_flag ( "config-include" ) . build ( ) ;
20
+ assert_eq ! ( config. get:: <i32 >( "othervalue" ) . unwrap( ) , 1 ) ;
20
21
}
21
22
22
23
#[ cargo_test]
@@ -43,6 +44,45 @@ fn simple() {
43
44
assert_eq ! ( config. get:: <i32 >( "key3" ) . unwrap( ) , 4 ) ;
44
45
}
45
46
47
+ #[ cargo_test]
48
+ fn works_with_cli ( ) {
49
+ write_config_at (
50
+ ".cargo/config.toml" ,
51
+ "
52
+ include = 'other.toml'
53
+ [build]
54
+ rustflags = ['-W', 'unused']
55
+ " ,
56
+ ) ;
57
+ write_config_at (
58
+ ".cargo/other.toml" ,
59
+ "
60
+ [build]
61
+ rustflags = ['-W', 'unsafe-code']
62
+ " ,
63
+ ) ;
64
+ let p = project ( ) . file ( "src/lib.rs" , "" ) . build ( ) ;
65
+ p. cargo ( "build -v" )
66
+ . with_stderr (
67
+ "\
68
+ [COMPILING] foo v0.0.1 [..]
69
+ [RUNNING] `rustc [..]-W unused`
70
+ [FINISHED] [..]
71
+ " ,
72
+ )
73
+ . run ( ) ;
74
+ p. cargo ( "build -v -Z config-include" )
75
+ . masquerade_as_nightly_cargo ( )
76
+ . with_stderr (
77
+ "\
78
+ [COMPILING] foo v0.0.1 [..]
79
+ [RUNNING] `rustc [..]-W unsafe-code -W unused`
80
+ [FINISHED] [..]
81
+ " ,
82
+ )
83
+ . run ( ) ;
84
+ }
85
+
46
86
#[ cargo_test]
47
87
fn left_to_right ( ) {
48
88
// How it merges multiple includes.
@@ -77,9 +117,11 @@ fn left_to_right() {
77
117
fn missing_file ( ) {
78
118
// Error when there's a missing file.
79
119
write_config ( "include='missing'" ) ;
80
- let config = ConfigBuilder :: new ( ) . unstable_flag ( "config-include" ) . build ( ) ;
120
+ let config = ConfigBuilder :: new ( )
121
+ . unstable_flag ( "config-include" )
122
+ . build_err ( ) ;
81
123
assert_error (
82
- config. get :: < i32 > ( "whatever" ) . unwrap_err ( ) ,
124
+ config. unwrap_err ( ) ,
83
125
& format ! (
84
126
"\
85
127
could not load Cargo configuration
@@ -103,9 +145,11 @@ fn cycle() {
103
145
write_config_at ( ".cargo/config" , "include='one'" ) ;
104
146
write_config_at ( ".cargo/one" , "include='two'" ) ;
105
147
write_config_at ( ".cargo/two" , "include='config'" ) ;
106
- let config = ConfigBuilder :: new ( ) . unstable_flag ( "config-include" ) . build ( ) ;
148
+ let config = ConfigBuilder :: new ( )
149
+ . unstable_flag ( "config-include" )
150
+ . build_err ( ) ;
107
151
assert_error (
108
- config. get :: < i32 > ( "whatever" ) . unwrap_err ( ) ,
152
+ config. unwrap_err ( ) ,
109
153
"\
110
154
could not load Cargo configuration
111
155
@@ -147,9 +191,11 @@ fn cli_include() {
147
191
fn bad_format ( ) {
148
192
// Not a valid format.
149
193
write_config ( "include = 1" ) ;
150
- let config = ConfigBuilder :: new ( ) . unstable_flag ( "config-include" ) . build ( ) ;
194
+ let config = ConfigBuilder :: new ( )
195
+ . unstable_flag ( "config-include" )
196
+ . build_err ( ) ;
151
197
assert_error (
152
- config. get :: < i32 > ( "whatever" ) . unwrap_err ( ) ,
198
+ config. unwrap_err ( ) ,
153
199
"\
154
200
could not load Cargo configuration
155
201
0 commit comments