this test is slow because it runs the same searches repeatedly
authorEh2406 <YeomanYaacov@gmail.com>
Thu, 22 Feb 2018 17:55:17 +0000 (12:55 -0500)
committerEh2406 <YeomanYaacov@gmail.com>
Mon, 12 Mar 2018 02:21:37 +0000 (22:21 -0400)
tests/testsuite/resolve.rs

index 735e216cbbc913992d1b165d9783a396149cf626..05e2491897190c99267644259331be4277ff7158 100644 (file)
@@ -468,6 +468,34 @@ fn resolving_with_constrained_sibling_backtrack_parent() {
                                        ("constrained", "1.0.0")])));
 }
 
+#[test]
+fn resolving_with_many_equivalent_backtracking() {
+    let mut reglist = vec![
+        pkg!(("level0", "1.0.0")),
+    ];
+
+    const DEPTH: usize = 10;
+    const BRANCHING_FACTOR: usize = 5;
+
+    for l in 0..DEPTH {
+        let name = format!("level{}", l);
+        let next = format!("level{}", l + 1);
+        for i in 1..BRANCHING_FACTOR {
+            let vsn = format!("1.0.{}", i);
+            reglist.push(pkg!((name.as_str(), vsn.as_str()) => [dep_req(next.as_str(), "*")]));
+        }
+    }
+
+    let reg = registry(reglist);
+
+    let res = resolve(&pkg_id("root"), vec![
+        dep_req("level0", "*"),
+    ], &reg).unwrap();
+
+    assert_that(&res, contains(names(&[("root", "1.0.0"),
+                                       ("level0", "1.0.0")])));
+}
+
 #[test]
 fn resolving_with_constrained_sibling_backtrack_activation() {
     // It makes sense to resolve most-constrained deps first, but