test for the most common cargo resolver error
authorEh2406 <YeomanYaacov@gmail.com>
Wed, 7 Feb 2018 22:45:02 +0000 (17:45 -0500)
committerEh2406 <YeomanYaacov@gmail.com>
Thu, 8 Feb 2018 19:13:07 +0000 (14:13 -0500)
tests/build.rs

index 14237e4c9b14e8f82c40ba9d8d5f00e4ce72e5c1..75aa8a2745efa5789c493232fa689beefa0af2f7 100644 (file)
@@ -996,6 +996,43 @@ fn main(){
     );
 }
 
+#[test]
+fn incompatible_dependencies() {
+    Package::new("bad", "0.1.0").publish();
+    Package::new("bad", "1.0.0").publish();
+    Package::new("bad", "1.0.1").publish();
+    Package::new("bad", "1.0.2").publish();
+    Package::new("foo", "0.1.0").dep("bad", "0.1.0").publish();
+    Package::new("bar", "0.1.1").dep("bad", "=1.0.0").publish();
+    Package::new("bar", "0.1.0").dep("bad", "=1.0.0").publish();
+    Package::new("baz", "0.1.2").dep("bad", ">=1.0.1").publish();
+    Package::new("baz", "0.1.1").dep("bad", ">=1.0.1").publish();
+    Package::new("baz", "0.1.0").dep("bad", ">=1.0.1").publish();
+
+    let p = project("transitive_load_test")
+        .file("Cargo.toml", r#"
+            [project]
+            name = "incompatible_dependencies"
+            version = "0.0.1"
+
+            [dependencies]
+            foo = "0.1.0"
+            bar = "0.1.0"
+            baz = "0.1.0"
+        "#)
+        .file("src/main.rs", "fn main(){}")
+        .build();
+
+    assert_that(p.cargo("build"),
+        execs().with_status(101)
+            .with_stderr_contains("\
+error: failed to select a version for `bad` (required by `baz`):
+all possible versions conflict with previously selected versions of `bad`
+  version 0.1.0 in use by bad v0.1.0
+  version 1.0.0 in use by bad v1.0.0
+  possible versions to select: 1.0.2, 1.0.1"));
+}
+
 #[test]
 fn compile_offline_while_transitive_dep_not_cached() {
     let bar = Package::new("bar", "1.0.0");