test that cashing works with constraints correctly
authorEh2406 <YeomanYaacov@gmail.com>
Tue, 13 Mar 2018 15:16:10 +0000 (11:16 -0400)
committerEh2406 <YeomanYaacov@gmail.com>
Tue, 13 Mar 2018 15:16:10 +0000 (11:16 -0400)
tests/testsuite/resolve.rs

index 86b7d86c551d1683e93d59a7b9f0c1a16d688b4b..b9889d5444dce90a3a487fdd0ecfdd9d2f9692e0 100644 (file)
@@ -500,7 +500,7 @@ fn resolving_with_many_equivalent_backtracking() {
     // Lets make sure we can find a good answer if it is there.
     reglist.push(pkg!(("level0", "1.0.0")));
 
-    let reg = registry(reglist);
+    let reg = registry(reglist.clone());
 
     let res = resolve(&pkg_id("root"), vec![
         dep_req("level0", "*"),
@@ -508,6 +508,42 @@ fn resolving_with_many_equivalent_backtracking() {
 
     assert_that(&res, contains(names(&[("root", "1.0.0"),
                                        ("level0", "1.0.0")])));
+
+    // Make sure we have not special case no candidates.
+    reglist.push(pkg!(("constrained", "1.1.0")));
+    reglist.push(pkg!(("constrained", "1.0.0")));
+    reglist.push(pkg!((format!("level{}", DEPTH).as_str(), "1.0.0") => [dep_req("constrained", "=1.0.0")]));
+
+    let reg = registry(reglist.clone());
+
+    let res = resolve(&pkg_id("root"), vec![
+        dep_req("level0", "*"),
+        dep_req("constrained", "*"),
+    ], &reg).unwrap();
+
+    assert_that(&res, contains(names(&[("root", "1.0.0"),
+                                       ("level0", "1.0.0"),
+                                       ("constrained", "1.1.0")])));
+
+    let reg = registry(reglist.clone());
+
+    let res = resolve(&pkg_id("root"), vec![
+        dep_req("level0", "1.0.1"),
+        dep_req("constrained", "*"),
+    ], &reg).unwrap();
+
+    assert_that(&res, contains(names(&[("root", "1.0.0"),
+                                       (format!("level{}", DEPTH).as_str(), "1.0.0"),
+                                       ("constrained", "1.0.0")])));
+
+    let reg = registry(reglist.clone());
+
+    let res = resolve(&pkg_id("root"), vec![
+        dep_req("level0", "1.0.1"),
+        dep_req("constrained", "1.1.0"),
+    ], &reg);
+
+    assert!(res.is_err());
 }
 
 #[test]