use cargo::ops;
use cargo::core::{SourceId, GitReference};
-use cargo::util::{CliResult, Config, ToUrl};
+use cargo::util::{CargoError, CliResult, Config, ToUrl};
#[derive(Deserialize)]
pub struct Options {
};
let krates = options.arg_crate.iter().map(|s| &s[..]).collect::<Vec<_>>();
- let vers = options.flag_version.as_ref().or(options.flag_vers.as_ref()).map(|s| &s[..]);
+ let vers = match (&options.flag_vers, &options.flag_version) {
+ (&Some(_), &Some(_)) => return Err(CargoError::from("Invalid arguments.").into()),
+ (&Some(ref v), _) | (_, &Some(ref v)) => Some(v.as_ref()),
+ _ => None,
+ };
let root = options.flag_root.as_ref().map(|s| &s[..]);
if options.flag_list {
}
#[test]
-fn version_preferred() {
+fn not_both_vers_and_version() {
pkg("foo", "0.1.1");
pkg("foo", "0.1.2");
assert_that(cargo_process("install").arg("foo").arg("--version").arg("0.1.1").arg("--vers").arg("0.1.2"),
- execs().with_status(0).with_stderr_contains("\
- [DOWNLOADING] foo v0.1.1 (registry [..])
+ execs().with_status(101).with_stderr_contains("\
+error: Invalid arguments.
"));
}