1
1
#![ cfg( feature = "ini" ) ]
2
2
3
- use std:: path:: PathBuf ;
4
-
5
3
use chrono:: { DateTime , TimeZone , Utc } ;
6
4
use serde_derive:: Deserialize ;
7
5
@@ -26,7 +24,22 @@ fn test_file() {
26
24
}
27
25
28
26
let c = Config :: builder ( )
29
- . add_source ( File :: new ( "tests/Settings" , FileFormat :: Ini ) )
27
+ . add_source ( File :: from_str (
28
+ r#"
29
+ debug = true
30
+ production = false
31
+ FOO = FOO should be overridden
32
+ bar = I am bar
33
+ [place]
34
+ name = Torre di Pisa
35
+ longitude = 43.7224985
36
+ latitude = 10.3970522
37
+ favorite = false
38
+ reviews = 3866
39
+ rating = 4.5
40
+ "# ,
41
+ FileFormat :: Ini ,
42
+ ) )
30
43
. build ( )
31
44
. unwrap ( ) ;
32
45
let s: Settings = c. try_deserialize ( ) . unwrap ( ) ;
@@ -49,18 +62,19 @@ fn test_file() {
49
62
#[ test]
50
63
fn test_error_parse ( ) {
51
64
let res = Config :: builder ( )
52
- . add_source ( File :: new ( "tests/Settings-invalid" , FileFormat :: Ini ) )
65
+ . add_source ( File :: from_str (
66
+ r#"
67
+ ok : true,
68
+ error
69
+ "# ,
70
+ FileFormat :: Ini ,
71
+ ) )
53
72
. build ( ) ;
54
73
55
- let path: PathBuf = [ "tests" , "Settings-invalid.ini" ] . iter ( ) . collect ( ) ;
56
-
57
74
assert ! ( res. is_err( ) ) ;
58
75
assert_eq ! (
59
76
res. unwrap_err( ) . to_string( ) ,
60
- format!(
61
- r#"3:1 expecting "[Some('='), Some(':')]" but found EOF. in {}"# ,
62
- path. display( )
63
- )
77
+ format!( r#"4:1 expecting "[Some('='), Some(':')]" but found EOF."# , )
64
78
) ;
65
79
}
66
80
@@ -81,7 +95,22 @@ fn test_override_uppercase_value_for_struct() {
81
95
std:: env:: set_var ( "APP_FOO" , "I HAVE BEEN OVERRIDDEN_WITH_UPPER_CASE" ) ;
82
96
83
97
let cfg = Config :: builder ( )
84
- . add_source ( File :: new ( "tests/Settings" , FileFormat :: Ini ) )
98
+ . add_source ( File :: from_str (
99
+ r#"
100
+ debug = true
101
+ production = false
102
+ FOO = FOO should be overridden
103
+ bar = I am bar
104
+ [place]
105
+ name = Torre di Pisa
106
+ longitude = 43.7224985
107
+ latitude = 10.3970522
108
+ favorite = false
109
+ reviews = 3866
110
+ rating = 4.5
111
+ "# ,
112
+ FileFormat :: Ini ,
113
+ ) )
85
114
. add_source ( config:: Environment :: with_prefix ( "APP" ) . separator ( "_" ) )
86
115
. build ( )
87
116
. unwrap ( ) ;
@@ -121,7 +150,22 @@ fn test_override_lowercase_value_for_struct() {
121
150
std:: env:: set_var ( "config_foo" , "I have been overridden_with_lower_case" ) ;
122
151
123
152
let cfg = Config :: builder ( )
124
- . add_source ( File :: new ( "tests/Settings" , FileFormat :: Ini ) )
153
+ . add_source ( File :: from_str (
154
+ r#"
155
+ debug = true
156
+ production = false
157
+ FOO = FOO should be overridden
158
+ bar = I am bar
159
+ [place]
160
+ name = Torre di Pisa
161
+ longitude = 43.7224985
162
+ latitude = 10.3970522
163
+ favorite = false
164
+ reviews = 3866
165
+ rating = 4.5
166
+ "# ,
167
+ FileFormat :: Ini ,
168
+ ) )
125
169
. add_source ( config:: Environment :: with_prefix ( "config" ) . separator ( "_" ) )
126
170
. build ( )
127
171
. unwrap ( ) ;
@@ -144,7 +188,12 @@ fn test_override_uppercase_value_for_enums() {
144
188
std:: env:: set_var ( "APPS_BAR" , "I HAVE BEEN OVERRIDDEN_WITH_UPPER_CASE" ) ;
145
189
146
190
let cfg = Config :: builder ( )
147
- . add_source ( File :: new ( "tests/Settings-enum-test" , FileFormat :: Ini ) )
191
+ . add_source ( File :: from_str (
192
+ r#"
193
+ bar = "bar is a lowercase param"
194
+ "# ,
195
+ FileFormat :: Ini ,
196
+ ) )
148
197
. add_source ( config:: Environment :: with_prefix ( "APPS" ) . separator ( "_" ) )
149
198
. build ( )
150
199
. unwrap ( ) ;
@@ -166,7 +215,12 @@ fn test_override_lowercase_value_for_enums() {
166
215
std:: env:: set_var ( "test_bar" , "I have been overridden_with_lower_case" ) ;
167
216
168
217
let cfg = Config :: builder ( )
169
- . add_source ( File :: new ( "tests/Settings-enum-test" , FileFormat :: Ini ) )
218
+ . add_source ( File :: from_str (
219
+ r#"
220
+ bar = "bar is a lowercase param"
221
+ "# ,
222
+ FileFormat :: Ini ,
223
+ ) )
170
224
. add_source ( config:: Environment :: with_prefix ( "test" ) . separator ( "_" ) )
171
225
. build ( )
172
226
. unwrap ( ) ;
0 commit comments