From: Eh2406 Date: Mon, 12 Mar 2018 21:36:02 +0000 (-0400) Subject: make sure cashing works whether there is an answer or not X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~46^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=61e78c10f12ae5d8c5192d3a83846bec88be130a;p=cargo.git make sure cashing works whether there is an answer or not --- diff --git a/tests/testsuite/resolve.rs b/tests/testsuite/resolve.rs index 8c96da9dd..86b7d86c5 100644 --- a/tests/testsuite/resolve.rs +++ b/tests/testsuite/resolve.rs @@ -470,13 +470,15 @@ fn resolving_with_constrained_sibling_backtrack_parent() { #[test] fn resolving_with_many_equivalent_backtracking() { - let mut reglist = vec![ - pkg!(("level0", "1.0.0")), - ]; + let mut reglist = Vec::new(); const DEPTH: usize = 200; const BRANCHING_FACTOR: usize = 100; + // Each level depends on the next but the last level does not exist. + // Without cashing we need to test every path to the last level O(BRANCHING_FACTOR ^ DEPTH) + // and this test will time out. With cashing we need to discover that none of these + // can be activated O(BRANCHING_FACTOR * DEPTH) for l in 0..DEPTH { let name = format!("level{}", l); let next = format!("level{}", l + 1); @@ -486,6 +488,18 @@ fn resolving_with_many_equivalent_backtracking() { } } + let reg = registry(reglist.clone()); + + let res = resolve(&pkg_id("root"), vec![ + dep_req("level0", "*"), + ], ®); + + assert!(res.is_err()); + + // It is easy to write code that quickly returns an error. + // 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 res = resolve(&pkg_id("root"), vec![