diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index ae80e0d4b..07e4938ef 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -307,6 +307,21 @@ fn walk_tree(pwd: &Path, if !current.pop() { break; } } + // Once we're done, also be sure to walk the home directory even if it's not + // in our history to be sure we pick up that standard location for + // information. + let home = try!(os::homedir().require(|| { + human("Cargo couldn't find your home directory. \ + This probably means that $HOME was not set.") + })); + if !home.is_ancestor_of(pwd) { + let config = home.join(".cargo/config"); + if config.exists() { + let file = try!(File::open(&config)); + try!(walk(file)); + } + } + Ok(()) } diff --git a/tests/support/registry.rs b/tests/support/registry.rs index 006934398..49f5ab2fe 100644 --- a/tests/support/registry.rs +++ b/tests/support/registry.rs @@ -18,7 +18,7 @@ pub fn dl_path() -> Path { paths::root().join("dl") } pub fn dl_url() -> Url { Url::from_file_path(&dl_path()).unwrap() } pub fn init() { - let config = paths::root().join(".cargo/config"); + let config = paths::home().join(".cargo/config"); fs::mkdir_recursive(&config.dir_path(), io::USER_DIR).assert(); File::create(&config).write_str(format!(r#" [registry]