Skip to content

Commit

Permalink
Fix cargo install using a workspace target dir
Browse files Browse the repository at this point in the history
  • Loading branch information
alexcrichton committed Jul 5, 2018
1 parent 592b253 commit d1ef031
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/cargo/ops/cargo_install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,14 @@ fn install_one(
Some(Filesystem::new(config.cwd().join("target-install")))
};

let ws = Workspace::ephemeral(pkg, config, overidden_target_dir, false)?;
let ws = match overidden_target_dir {
Some(dir) => Workspace::ephemeral(pkg, config, Some(dir), false)?,
None => {
let mut ws = Workspace::new(pkg.manifest_path(), config)?;
ws.set_require_optional_deps(false);
ws
}
};
let pkg = ws.current()?;

if from_cwd {
Expand Down
44 changes: 44 additions & 0 deletions tests/testsuite/install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1641,3 +1641,47 @@ fn git_repo_replace() {
.contains(&format!("{}", new_rev))
);
}

#[test]
fn workspace_uses_workspace_target_dir() {
let p = project("foo")
.file(
"Cargo.toml",
r#"
[package]
name = "foo"
version = "0.1.0"
authors = []
[workspace]
[dependencies]
bar = { path = 'bar' }
"#,
)
.file("src/main.rs", "fn main() {}")
.file(
"bar/Cargo.toml",
r#"
[package]
name = "bar"
version = "0.1.0"
authors = []
"#,
)
.file("bar/src/main.rs", "fn main() {}")
.build();

assert_that(p.cargo("build").cwd(p.root().join("bar")).arg("--release"),
execs().with_status(0));
assert_that(
cargo_process("install").arg("--path").arg(p.root().join("bar")),
execs().with_status(0).with_stderr(
"[INSTALLING] [..]
[FINISHED] release [optimized] target(s) in [..]
[INSTALLING] [..]
warning: be sure to add `[..]` to your PATH to be able to run the installed binaries
",
),
);
}

0 comments on commit d1ef031

Please sign in to comment.