let pkg = opts.get(0);
resolve.insert(pkg.get_name(), *pkg);
+
+ for dep in pkg.get_dependencies().iter() {
+ if !resolve.contains_key_equiv(&dep.get_name()) {
+ remaining.push(dep.clone());
+ }
+ }
}
}
use hamcrest::{
assert_that,
equal_to,
- of_len,
contains
};
resolve
};
+ macro_rules! pkg(
+ ($name:expr => $($deps:expr),+) => (
+ Package::new($name, &vec!($($deps),+).iter().map(|s| Dependency::new(*s)).collect())
+ );
+ ($name:expr) => (
+ Package::new($name, &vec!())
+ )
+ )
fn pkg(name: &str) -> Package {
Package::new(name, &Vec::<Dependency>::new())
#[test]
pub fn test_resolving_multiple_deps() {
- let reg = registry(vec!(pkg("foo"), pkg("bar"), pkg("baz")));
+ let reg = registry(vec!(pkg!("foo"), pkg!("bar"), pkg!("baz")));
let res = resolve(&vec!(dep("foo"), dep("baz")), ®).unwrap();
- assert_that(&res, of_len(2));
assert_that(&res, contains(vec!(pkg("foo"), pkg("baz"))).exactly());
}
#[test]
pub fn test_resolving_transitive_deps() {
+ let reg = registry(vec!(pkg!("foo"), pkg!("bar" => "foo")));
+ let res = resolve(&vec!(dep("bar")), ®).unwrap();
+
+ assert_that(&res, contains(vec!(pkg!("foo"), pkg!("bar" => "foo"))));
}
}