@@ -200,35 +200,29 @@ fn empty() {
200200#[ test]
201201#[ cfg( feature = "backtrace" ) ]
202202fn has_backtrace_depending_on_env ( ) {
203- use std:: env;
203+ use std:: process:: Command ;
204+ use std:: path:: Path ;
204205
205- error_chain ! {
206- types { }
207- links { }
208- foreign_links { }
209- errors {
210- MyError
211- }
212- }
213-
214- let original_value = env:: var_os ( "RUST_BACKTRACE" ) ;
206+ let cmd_path = if cfg ! ( windows) {
207+ Path :: new ( "./target/debug/has_backtrace.exe" )
208+ } else {
209+ Path :: new ( "./target/debug/has_backtrace" )
210+ } ;
211+ let mut cmd = Command :: new ( cmd_path) ;
215212
216213 // missing RUST_BACKTRACE and RUST_BACKTRACE=0
217- env:: remove_var ( "RUST_BACKTRACE" ) ;
218- let err = Error :: from ( ErrorKind :: MyError ) ;
219- assert ! ( err. backtrace( ) . is_none( ) ) ;
220- env:: set_var ( "RUST_BACKTRACE" , "0" ) ;
221- let err = Error :: from ( ErrorKind :: MyError ) ;
222- assert ! ( err. backtrace( ) . is_none( ) ) ;
214+ cmd. env_remove ( "RUST_BACKTRACE" ) ;
215+ assert_eq ! ( cmd. status( ) . unwrap( ) . code( ) . unwrap( ) , 0 ) ;
216+
217+ cmd. env ( "RUST_BACKTRACE" , "0" ) ;
218+ assert_eq ! ( cmd. status( ) . unwrap( ) . code( ) . unwrap( ) , 0 ) ;
223219
224220 // RUST_BACKTRACE set to anything but 0
225- env:: set_var ( "RUST_BACKTRACE" , "yes" ) ;
226- let err = Error :: from ( ErrorKind :: MyError ) ;
227- assert ! ( err. backtrace( ) . is_some( ) ) ;
221+ cmd. env ( "RUST_BACKTRACE" , "yes" ) ;
222+ assert_eq ! ( cmd. status( ) . unwrap( ) . code( ) . unwrap( ) , 1 ) ;
228223
229- if let Some ( var) = original_value {
230- env:: set_var ( "RUST_BACKTRACE" , var) ;
231- }
224+ cmd. env ( "RUST_BACKTRACE" , "1" ) ;
225+ assert_eq ! ( cmd. status( ) . unwrap( ) . code( ) . unwrap( ) , 1 ) ;
232226}
233227
234228#[ test]
0 commit comments