1+ extern crate cargo;
12extern crate cargotest;
23extern crate hamcrest;
34
@@ -10,8 +11,8 @@ use std::str;
1011
1112use cargotest:: cargo_process;
1213use cargotest:: support:: paths:: { self , CargoPathExt } ;
13- use cargotest:: support:: { execs, project, ProjectBuilder } ;
14- use hamcrest:: { assert_that} ;
14+ use cargotest:: support:: { execs, project, ProjectBuilder , basic_bin_manifest } ;
15+ use hamcrest:: { assert_that, existing_file } ;
1516
1617#[ cfg_attr( windows, allow( dead_code) ) ]
1718enum FakeKind < ' a > {
@@ -81,11 +82,11 @@ fn list_command_looks_at_path() {
8182#[ cfg( unix) ]
8283#[ test]
8384fn list_command_resolves_symlinks ( ) {
84- use cargotest:: support:: cargo_dir ;
85+ use cargotest:: support:: cargo_exe ;
8586
8687 let proj = project ( "list-non-overlapping" ) ;
8788 let proj = fake_file ( proj, Path :: new ( "path-test" ) , "cargo-2" ,
88- FakeKind :: Symlink { target : & cargo_dir ( ) . join ( "cargo" ) } ) ;
89+ FakeKind :: Symlink { target : & cargo_exe ( ) } ) ;
8990 let mut pr = cargo_process ( ) ;
9091
9192 let mut path = path ( ) ;
@@ -161,6 +162,37 @@ fn override_cargo_home() {
161162 assert ! ( contents. contains( r#"authors = ["foo <bar>"]"# ) ) ;
162163}
163164
165+ #[ test]
166+ fn cargo_subcommand_env ( ) {
167+ use cargotest:: support:: cargo_exe;
168+
169+ let src = format ! ( r#"
170+ use std::env;
171+
172+ fn main() {{
173+ println!("{{}}", env::var("{}").unwrap());
174+ }}
175+ "# , cargo:: CARGO_ENV ) ;
176+
177+ let p = project ( "cargo-envtest" )
178+ . file ( "Cargo.toml" , & basic_bin_manifest ( "cargo-envtest" ) )
179+ . file ( "src/main.rs" , & src) ;
180+
181+ let target_dir = p. target_debug_dir ( ) ;
182+
183+ assert_that ( p. cargo_process ( "build" ) , execs ( ) . with_status ( 0 ) ) ;
184+ assert_that ( & p. bin ( "cargo-envtest" ) , existing_file ( ) ) ;
185+
186+ let mut pr = cargo_process ( ) ;
187+ let cargo = cargo_exe ( ) . canonicalize ( ) . unwrap ( ) ;
188+ let mut path = path ( ) ;
189+ path. push ( target_dir) ;
190+ let path = env:: join_paths ( path. iter ( ) ) . unwrap ( ) ;
191+
192+ assert_that ( pr. arg ( "envtest" ) . env ( "PATH" , & path) ,
193+ execs ( ) . with_status ( 0 ) . with_stdout ( cargo. to_str ( ) . unwrap ( ) ) ) ;
194+ }
195+
164196#[ test]
165197fn cargo_help ( ) {
166198 assert_that ( cargo_process ( ) ,
0 commit comments