Skip to content

Commit

Permalink
Don't panic when printing the precise source id
Browse files Browse the repository at this point in the history
Closes #2094
  • Loading branch information
alexcrichton committed Oct 31, 2015
1 parent 3367b9c commit 1ad6f78
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/cargo/core/source.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::cmp::Ordering;
use std::cmp::{self, Ordering};
use std::collections::hash_map::{HashMap, Values, IterMut};
use std::fmt::{self, Formatter};
use std::hash;
Expand Down Expand Up @@ -294,14 +294,12 @@ impl fmt::Display for SourceId {
ref precise, .. } => {
try!(write!(f, "{}{}", url, url_ref(reference)));

match *precise {
Some(ref s) => {
try!(write!(f, "#{}", &s[..8]));
}
None => {}
if let Some(ref s) = *precise {
let len = cmp::min(s.len(), 8);
try!(write!(f, "#{}", &s[..len]));
}
Ok(())
},
}
SourceIdInner { kind: Kind::Registry, ref url, .. } => {
write!(f, "registry {}", url)
}
Expand Down
11 changes: 11 additions & 0 deletions tests/test_cargo_compile_git_deps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,17 @@ test!(update_with_shared_deps {
.arg("-p").arg("dep1"),
execs().with_stdout(""));

// Don't do anything bad on a weird --precise argument
println!("bar bad precise update");
assert_that(p.cargo("update")
.arg("-p").arg("bar")
.arg("--precise").arg("0.1.2"),
execs().with_status(101).with_stderr("\
Unable to update [..]
To learn more, run the command again with --verbose.
"));

// Specifying a precise rev to the old rev shouldn't actually update
// anything because we already have the rev in the db.
println!("bar precise update");
Expand Down

0 comments on commit 1ad6f78

Please sign in to comment.