From 9c31b4dabbdb0e5e0869df0b45f62ce75fddd09e Mon Sep 17 00:00:00 2001 From: Pradip Caulagi Date: Sun, 1 Jan 2017 11:49:23 +0900 Subject: [PATCH 1/9] Add the correct crate name (as in crates.io) to toml and notify user --- src/bin/add/args.rs | 12 +++++++----- src/bin/add/fetch.rs | 27 ++++++++++++++++----------- src/dependency.rs | 9 +++++++++ tests/cargo-add.rs | 18 ++++++++++++++++++ 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/src/bin/add/args.rs b/src/bin/add/args.rs index 297ba12b9d..cd96ceeff6 100644 --- a/src/bin/add/args.rs +++ b/src/bin/add/args.rs @@ -3,7 +3,7 @@ use semver; use std::error::Error; use cargo_edit::Dependency; use fetch::{get_crate_name_from_github, get_crate_name_from_gitlab, get_crate_name_from_path, - get_latest_version}; + get_latest_dependency}; macro_rules! toml_table { ($($key:expr => $value:expr),+) => { @@ -69,8 +69,7 @@ impl Args { let le_crate = if crate_name_has_version(arg_crate) { try!(parse_crate_name_with_version(arg_crate)) } else { - let v = try!(get_latest_version(&self.arg_crate)); - Dependency::new(arg_crate).set_version(&v) + try!(get_latest_dependency(arg_crate)) } .set_optional(self.flag_optional); @@ -96,10 +95,13 @@ impl Args { } else if let Some(ref path) = self.flag_path { dependency.set_path(path) } else { + let dep = try!(get_latest_dependency(&self.arg_crate)); let v = format!("{prefix}{version}", prefix = self.get_upgrade_prefix().unwrap_or(""), - version = try!(get_latest_version(&self.arg_crate))); - dependency.set_version(&v) + // if version is unavailable + // `get_latest_dependency` must have returned `Err(FetchVersionError::GetVersion)` + version = dep.version().unwrap_or_else(|| unreachable!())); + dep.set_version(&v) } } else { try!(parse_crate_name_from_uri(&self.arg_crate)) diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index c0ba9f104b..34251ca09d 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -4,35 +4,40 @@ use rustc_serialize::json; use rustc_serialize::json::{BuilderError, Json}; use curl::{ErrCode, http}; use curl::http::handle::{Method, Request}; -use cargo_edit::Manifest; +use cargo_edit::{Dependency, Manifest}; use regex::Regex; const REGISTRY_HOST: &'static str = "https://crates.io"; /// Query latest version from crates.io /// -/// The latest version will be returned as a string. This will fail, when +/// The latest version will be returned as a `Dependency`. This will fail, when /// /// - there is no Internet connection, /// - the response from crates.io is an error or in an incorrect format, /// - or when a crate with the given name does not exist on crates.io. -pub fn get_latest_version(crate_name: &str) -> Result { +pub fn get_latest_dependency(crate_name: &str) -> Result { if env::var("CARGO_IS_TEST").is_ok() { - // We are in a simulated reality. Nothing is real here. - // FIXME: Use actual test handling code. - return Ok("CURRENT_VERSION_TEST".into()); + return Ok(Dependency::new(crate_name).set_version("CURRENT_VERSION_TEST".into())); } let crate_data = try!(fetch_cratesio(&format!("/crates/{}", crate_name))); let crate_json = try!(Json::from_str(&crate_data)); - crate_json.as_object() - .and_then(|c| c.get("crate")) - .and_then(|c| c.as_object()) - .and_then(|c| c.get("max_version")) + let name = try!(crate_json.find_path(&["crate", "name"]) + .and_then(|n| n.as_string()) + .ok_or(FetchVersionError::CratesIo(CratesIoError::NotFound))); + + if name != crate_name { + println!("WARN: Added {} instead of {}", name, crate_name); + } + + let version = try!(crate_json.find_path(&["crate", "max_version"]) .and_then(|v| v.as_string()) .map(|v| v.to_owned()) - .ok_or(FetchVersionError::GetVersion) + .ok_or(FetchVersionError::GetVersion)); + + Ok(Dependency::new(name).set_version(&version)) } quick_error! { diff --git a/src/dependency.rs b/src/dependency.rs index bddfd62602..ed691f78b7 100644 --- a/src/dependency.rs +++ b/src/dependency.rs @@ -67,6 +67,15 @@ impl Dependency { self } + /// Get version of dependency + pub fn version(&self) -> Option<&str> { + if let DependencySource::Version(ref version) = self.source { + Some(&version) + } else { + None + } + } + /// Convert dependency to TOML /// /// Returns a tuple with the dependency's name and either the version as a String or the diff --git a/tests/cargo-add.rs b/tests/cargo-add.rs index fe2ea3e553..78d68cdbad 100644 --- a/tests/cargo-add.rs +++ b/tests/cargo-add.rs @@ -458,6 +458,24 @@ fn adds_dependency_with_custom_target() { } +#[test] +#[cfg(feature="test-external-apis")] +fn adds_dependency_normalized_name() { + let (_tmpdir, manifest) = clone_out_test("tests/fixtures/add/Cargo.toml.sample"); + + // dependency not present beforehand + let toml = get_toml(&manifest); + assert!(toml.lookup("dependencies.linked-hash-map").is_none()); + + assert_cli!("target/debug/cargo-add", &["add", "linked_hash_map", &format!("--manifest-path={}", manifest)] => Success, + "WARN: Added linked-hash-map instead of linked_hash_map").unwrap(); + + // dependency present afterwards + let toml = get_toml(&manifest); + assert!(toml.lookup("dependencies.linked-hash-map").is_some()); +} + + #[test] #[should_panic] fn fails_to_add_dependency_with_empty_target() { From 3e2a086e80f2c019e9bb6747b92c15f2de9461ae Mon Sep 17 00:00:00 2001 From: Sebastian Garrido Date: Mon, 2 Jan 2017 01:46:11 -0500 Subject: [PATCH 2/9] Fix bug to allow adding multiple crates at once --- src/bin/add/args.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/add/args.rs b/src/bin/add/args.rs index 297ba12b9d..c07508e755 100644 --- a/src/bin/add/args.rs +++ b/src/bin/add/args.rs @@ -69,7 +69,7 @@ impl Args { let le_crate = if crate_name_has_version(arg_crate) { try!(parse_crate_name_with_version(arg_crate)) } else { - let v = try!(get_latest_version(&self.arg_crate)); + let v = try!(get_latest_version(arg_crate)); Dependency::new(arg_crate).set_version(&v) } .set_optional(self.flag_optional); From 43fb6ff5b6ab1b8aa1d5ebc4c0bf48d39eb9a4be Mon Sep 17 00:00:00 2001 From: Sebastian Garrido Date: Mon, 2 Jan 2017 02:25:21 -0500 Subject: [PATCH 3/9] Improve fetch algorithm. Ignore yanked when no version is specified. Request only versions from server to save bandwith. --- src/bin/add/fetch.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index c0ba9f104b..fc50e4936b 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -23,13 +23,25 @@ pub fn get_latest_version(crate_name: &str) -> Result return Ok("CURRENT_VERSION_TEST".into()); } - let crate_data = try!(fetch_cratesio(&format!("/crates/{}", crate_name))); + let crate_data = try!(fetch_cratesio(&format!("/crates/{}/versions", crate_name))); let crate_json = try!(Json::from_str(&crate_data)); crate_json.as_object() - .and_then(|c| c.get("crate")) - .and_then(|c| c.as_object()) - .and_then(|c| c.get("max_version")) + .and_then(|c| c.get("versions")) + .and_then(|c| c.as_array()) + .and_then(|c| { + for version in c { + let version_object = version.as_object(); + let yanked = version_object + .and_then(|v| v.get("yanked")) + .and_then(|v| v.as_boolean()); + if let Some(false) = yanked { + return version_object; + } + } + return None; + }) + .and_then(|v| v.get("num")) .and_then(|v| v.as_string()) .map(|v| v.to_owned()) .ok_or(FetchVersionError::GetVersion) From b41dd6046aad7a5e1e445adb8fd4fa8c169f2fe8 Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 14:39:19 +0100 Subject: [PATCH 4/9] Fix some clippy stuff --- tests/cargo-add.rs | 2 +- tests/utils.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/cargo-add.rs b/tests/cargo-add.rs index fe2ea3e553..624b0b578b 100644 --- a/tests/cargo-add.rs +++ b/tests/cargo-add.rs @@ -446,7 +446,7 @@ fn adds_dependency_with_custom_target() { let toml = get_toml(&manifest); // Get package by hand because toml-rs does not currently handle escaping dots in lookup() let target = toml.lookup("target").expect("target dependency not added"); - if let &toml::Value::Table(ref table) = target { + if let toml::Value::Table(ref table) = *target { let win_target = table.get("x86_64/windows.json").expect("target spec not found"); let val = win_target.lookup("dependencies.my-package1") .expect("target dependency not added"); diff --git a/tests/utils.rs b/tests/utils.rs index d815e0d198..cc0c0efb22 100644 --- a/tests/utils.rs +++ b/tests/utils.rs @@ -8,7 +8,6 @@ use std::ffi::OsStr; /// Create temporary working directory with Cargo.toml mainifest pub fn clone_out_test(source: &str) -> (tempdir::TempDir, String) { let tmpdir = tempdir::TempDir::new("cargo-add-test") - .ok() .expect("failed to construct temporary directory"); fs::copy(source, tmpdir.path().join("Cargo.toml")) .unwrap_or_else(|err| panic!("could not copy test manifest: {}", err)); From 991892f72021c742f1437c2980591be019504634 Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 14:40:10 +0100 Subject: [PATCH 5/9] Move code to get latest unyanked version into fn cf. #100 --- src/bin/add/fetch.rs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index fc50e4936b..cc58a5a837 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -26,24 +26,24 @@ pub fn get_latest_version(crate_name: &str) -> Result let crate_data = try!(fetch_cratesio(&format!("/crates/{}/versions", crate_name))); let crate_json = try!(Json::from_str(&crate_data)); + read_latest_version(crate_json) +} + +/// Read latest version from JSON structure +/// +/// Assumes the version are sorted so that the first non-yanked version is the +/// latest, and thus the one we want. +fn read_latest_version(crate_json: Json) -> Result { crate_json.as_object() .and_then(|c| c.get("versions")) - .and_then(|c| c.as_array()) - .and_then(|c| { - for version in c { - let version_object = version.as_object(); - let yanked = version_object - .and_then(|v| v.get("yanked")) - .and_then(|v| v.as_boolean()); - if let Some(false) = yanked { - return version_object; - } - } - return None; - }) + .and_then(Json::as_array) + .and_then(|vs| vs.iter() + .filter_map(Json::as_object) + .find(|&v| !v.get("yanked").and_then(Json::as_boolean).unwrap_or(true)) + ) .and_then(|v| v.get("num")) - .and_then(|v| v.as_string()) - .map(|v| v.to_owned()) + .and_then(Json::as_string) + .map(str::to_owned) .ok_or(FetchVersionError::GetVersion) } From 05bf50356a84c531eadef69c2ace3e52257e2c6c Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 14:40:23 +0100 Subject: [PATCH 6/9] Add test for retrieving version from JSON cf. #100 --- src/bin/add/fetch.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index cc58a5a837..0520e67033 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -47,6 +47,46 @@ fn read_latest_version(crate_json: Json) -> Result { .ok_or(FetchVersionError::GetVersion) } +#[test] +fn get_latest_version_from_json_test() { + let json = Json::from_str(r#"{ + "versions": [ + { + "crate": "treexml", + "num": "0.3.1", + "yanked": true + }, + { + "crate": "treexml", + "num": "0.3.0", + "yanked": false + } + ] +}"#).unwrap(); + + assert_eq!(read_latest_version(json).unwrap(), "0.3.0"); +} + +#[test] +fn get_no_latest_version_from_json_when_all_are_yanked() { + let json = Json::from_str(r#"{ + "versions": [ + { + "crate": "treexml", + "num": "0.3.1", + "yanked": true + }, + { + "crate": "treexml", + "num": "0.3.0", + "yanked": true + } + ] +}"#).unwrap(); + + assert!(read_latest_version(json).is_err()); +} + quick_error! { #[derive(Debug)] pub enum FetchVersionError { From 5a0ffd562ed7405fc7d3f312bd1bf146d570730d Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 15:05:56 +0100 Subject: [PATCH 7/9] Make test output for cargo add's fetch better This way, we can actually differentiate between packages when adding more than one. This would've caught #92. --- src/bin/add/fetch.rs | 2 +- tests/cargo-add.rs | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index c0ba9f104b..951f99fcae 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -20,7 +20,7 @@ pub fn get_latest_version(crate_name: &str) -> Result if env::var("CARGO_IS_TEST").is_ok() { // We are in a simulated reality. Nothing is real here. // FIXME: Use actual test handling code. - return Ok("CURRENT_VERSION_TEST".into()); + return Ok(format!("{}--CURRENT_VERSION_TEST", crate_name)); } let crate_data = try!(fetch_cratesio(&format!("/crates/{}", crate_name))); diff --git a/tests/cargo-add.rs b/tests/cargo-add.rs index fe2ea3e553..58aa8ab4f4 100644 --- a/tests/cargo-add.rs +++ b/tests/cargo-add.rs @@ -20,7 +20,7 @@ fn adds_dependency() { // dependency present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dependencies.my-package").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package--CURRENT_VERSION_TEST"); } fn upgrade_test_helper(upgrade_method: &str, expected_prefix: &str) { @@ -38,7 +38,7 @@ fn upgrade_test_helper(upgrade_method: &str, expected_prefix: &str) { let toml = get_toml(&manifest); let val = toml.lookup("dependencies.my-package").unwrap(); - let expected_result = format!("{0}CURRENT_VERSION_TEST", expected_prefix); + let expected_result = format!("{0}my-package--CURRENT_VERSION_TEST", expected_prefix); assert_eq!(val.as_str().unwrap(), expected_result); } @@ -78,9 +78,9 @@ fn adds_multiple_dependencies() { // dependencies present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dependencies.my-package1").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("dependencies.my-package2").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package2--CURRENT_VERSION_TEST"); } #[test] @@ -98,9 +98,9 @@ fn adds_dev_build_dependency() { // dependency present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dev-dependencies.my-dev-package").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-dev-package--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-build-package--CURRENT_VERSION_TEST"); // cannot run with both --dev and --build at the same time let call = process::Command::new("target/debug/cargo-add") @@ -132,13 +132,13 @@ fn adds_multiple_dev_build_dependencies() { // dependencies present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dev-dependencies.my-dev-package1").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-dev-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("dev-dependencies.my-dev-package2").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-dev-package2--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package1").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-build-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package2").unwrap(); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-build-package2--CURRENT_VERSION_TEST"); } #[test] @@ -218,7 +218,7 @@ fn adds_multiple_dependencies_with_some_versions() { // dependencies present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dependencies.my-package1").expect("not added"); - assert_eq!(val.as_str().expect("not string"), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().expect("not string"), "my-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("dependencies.my-package2").expect("not added"); assert_eq!(val.as_str().expect("not string"), "0.2.3"); } @@ -413,7 +413,7 @@ fn adds_dependency_with_target_triple() { let val = toml.lookup("target.i686-unknown-linux-gnu.dependencies.my-package1") .expect("target dependency not added"); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package1--CURRENT_VERSION_TEST"); } #[test] @@ -432,7 +432,7 @@ fn adds_dependency_with_target_cfg() { let val = toml.lookup("target.'cfg(unix)'.dependencies.my-package1") .expect("target dependency not added"); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package1--CURRENT_VERSION_TEST"); } #[test] @@ -450,7 +450,7 @@ fn adds_dependency_with_custom_target() { let win_target = table.get("x86_64/windows.json").expect("target spec not found"); let val = win_target.lookup("dependencies.my-package1") .expect("target dependency not added"); - assert_eq!(val.as_str().unwrap(), "CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), "my-package1--CURRENT_VERSION_TEST"); } else { panic!("target is not a table"); } From d8888f9358508854f2a16ccde39c35814c213058 Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 15:50:41 +0100 Subject: [PATCH 8/9] Rustfmt --- src/bin/add/args.rs | 5 ++-- src/bin/add/fetch.rs | 69 +++++++++++++++++++++++--------------------- src/bin/add/main.rs | 2 +- src/bin/list/list.rs | 11 +++---- src/bin/list/main.rs | 2 +- src/bin/list/tree.rs | 17 ++++------- src/bin/rm/main.rs | 2 +- src/manifest.rs | 7 ++--- tests/cargo-add.rs | 26 ++++++++++------- tests/utils.rs | 2 +- 10 files changed, 71 insertions(+), 72 deletions(-) diff --git a/src/bin/add/args.rs b/src/bin/add/args.rs index cd96ceeff6..1e762bedc7 100644 --- a/src/bin/add/args.rs +++ b/src/bin/add/args.rs @@ -1,9 +1,10 @@ //! Handle `cargo add` arguments -use semver; -use std::error::Error; + use cargo_edit::Dependency; use fetch::{get_crate_name_from_github, get_crate_name_from_gitlab, get_crate_name_from_path, get_latest_dependency}; +use semver; +use std::error::Error; macro_rules! toml_table { ($($key:expr => $value:expr),+) => { diff --git a/src/bin/add/fetch.rs b/src/bin/add/fetch.rs index 56fe4e658c..2336d797e6 100644 --- a/src/bin/add/fetch.rs +++ b/src/bin/add/fetch.rs @@ -1,11 +1,12 @@ -use std::env; -use std::path::Path; -use rustc_serialize::json; -use rustc_serialize::json::{BuilderError, Json}; + +use cargo_edit::{Dependency, Manifest}; use curl::{ErrCode, http}; use curl::http::handle::{Method, Request}; -use cargo_edit::{Dependency, Manifest}; use regex::Regex; +use rustc_serialize::json; +use rustc_serialize::json::{BuilderError, Json}; +use std::env; +use std::path::Path; const REGISTRY_HOST: &'static str = "https://crates.io"; @@ -20,7 +21,8 @@ pub fn get_latest_dependency(crate_name: &str) -> Result Result join @@ -41,11 +42,7 @@ pub fn list_section(manifest: &Manifest, section: &str) -> Result Option { #[cfg(test)] mod tests { - use super::*; use dependency::Dependency; + use super::*; use toml; #[test] diff --git a/tests/cargo-add.rs b/tests/cargo-add.rs index 01d6094319..44c8e34511 100644 --- a/tests/cargo-add.rs +++ b/tests/cargo-add.rs @@ -61,7 +61,7 @@ fn adds_dependency_with_upgrade_all() { #[test] fn adds_dependency_with_upgrade_bad() { - upgrade_test_helper("an_invalid_string", ""); + upgrade_test_helper("an_invalid_string", ""); } #[test] @@ -98,9 +98,11 @@ fn adds_dev_build_dependency() { // dependency present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dev-dependencies.my-dev-package").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-dev-package--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-dev-package--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-build-package--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-build-package--CURRENT_VERSION_TEST"); // cannot run with both --dev and --build at the same time let call = process::Command::new("target/debug/cargo-add") @@ -132,13 +134,17 @@ fn adds_multiple_dev_build_dependencies() { // dependencies present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dev-dependencies.my-dev-package1").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-dev-package1--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-dev-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("dev-dependencies.my-dev-package2").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-dev-package2--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-dev-package2--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package1").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-build-package1--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-build-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("build-dependencies.my-build-package2").unwrap(); - assert_eq!(val.as_str().unwrap(), "my-build-package2--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().unwrap(), + "my-build-package2--CURRENT_VERSION_TEST"); } #[test] @@ -218,7 +224,8 @@ fn adds_multiple_dependencies_with_some_versions() { // dependencies present afterwards let toml = get_toml(&manifest); let val = toml.lookup("dependencies.my-package1").expect("not added"); - assert_eq!(val.as_str().expect("not string"), "my-package1--CURRENT_VERSION_TEST"); + assert_eq!(val.as_str().expect("not string"), + "my-package1--CURRENT_VERSION_TEST"); let val = toml.lookup("dependencies.my-package2").expect("not added"); assert_eq!(val.as_str().expect("not string"), "0.2.3"); } @@ -424,8 +431,7 @@ fn adds_dependency_with_target_cfg() { let toml = get_toml(&manifest); assert!(toml.lookup("target.i686-unknown-linux-gnu.dependencies.my-package1").is_none()); - execute_command(&["add", "--target", "cfg(unix)", "my-package1"], - &manifest); + execute_command(&["add", "--target", "cfg(unix)", "my-package1"], &manifest); // dependencies present afterwards let toml = get_toml(&manifest); diff --git a/tests/utils.rs b/tests/utils.rs index cc0c0efb22..2772eed4f9 100644 --- a/tests/utils.rs +++ b/tests/utils.rs @@ -2,8 +2,8 @@ extern crate tempdir; extern crate toml; use std::{fs, process}; -use std::io::prelude::*; use std::ffi::OsStr; +use std::io::prelude::*; /// Create temporary working directory with Cargo.toml mainifest pub fn clone_out_test(source: &str) -> (tempdir::TempDir, String) { From 93679c26a35aa42c576707a938812af0df12d736 Mon Sep 17 00:00:00 2001 From: Pascal Hertleif Date: Mon, 2 Jan 2017 15:50:47 +0100 Subject: [PATCH 9/9] Make clippy happy --- src/dependency.rs | 2 +- src/manifest.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dependency.rs b/src/dependency.rs index ed691f78b7..03d00b9b39 100644 --- a/src/dependency.rs +++ b/src/dependency.rs @@ -70,7 +70,7 @@ impl Dependency { /// Get version of dependency pub fn version(&self) -> Option<&str> { if let DependencySource::Version(ref version) = self.source { - Some(&version) + Some(version) } else { None } diff --git a/src/manifest.rs b/src/manifest.rs index b3361dbaff..3797687679 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -165,7 +165,7 @@ impl Manifest { dep: &Dependency) -> Result<(), ManifestError> { let (ref name, ref data) = dep.to_toml(); - let ref mut manifest = self.data; + let manifest = &mut self.data; let mut entry = manifest; for part in table { @@ -202,7 +202,7 @@ impl Manifest { /// ``` #[cfg_attr(feature = "dev", allow(toplevel_ref_arg))] pub fn remove_from_table(&mut self, table: &str, name: &str) -> Result<(), ManifestError> { - let ref mut manifest = self.data; + let manifest = &mut self.data; let entry = manifest.entry(String::from(table)); match entry {