about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_lints/src/multiple_crate_versions.rs4
-rw-r--r--tests/ui-cargo/multiple_crate_versions/fail/Cargo.toml7
-rw-r--r--tests/ui-cargo/multiple_crate_versions/fail/src/main.rs3
-rw-r--r--tests/ui-cargo/multiple_crate_versions/fail/src/main.stderr6
-rw-r--r--tests/ui-cargo/multiple_crate_versions/pass/Cargo.toml7
-rw-r--r--tests/ui-cargo/multiple_crate_versions/pass/src/main.rs3
6 files changed, 29 insertions, 1 deletions
diff --git a/clippy_lints/src/multiple_crate_versions.rs b/clippy_lints/src/multiple_crate_versions.rs
index ed85d0315bd..c4decfc9401 100644
--- a/clippy_lints/src/multiple_crate_versions.rs
+++ b/clippy_lints/src/multiple_crate_versions.rs
@@ -54,7 +54,9 @@ impl LateLintPass<'_, '_> for MultipleCrateVersions {
             let group: Vec<cargo_metadata::Package> = group.collect();
 
             if group.len() > 1 {
-                let versions = group.into_iter().map(|p| p.version).join(", ");
+                let mut versions: Vec<_> = group.into_iter().map(|p| p.version).collect();
+                versions.sort();
+                let versions = versions.iter().join(", ");
 
                 span_lint(
                     cx,
diff --git a/tests/ui-cargo/multiple_crate_versions/fail/Cargo.toml b/tests/ui-cargo/multiple_crate_versions/fail/Cargo.toml
new file mode 100644
index 00000000000..05ffde839dc
--- /dev/null
+++ b/tests/ui-cargo/multiple_crate_versions/fail/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "multiple_crate_versions"
+version = "0.1.0"
+
+[dependencies]
+ctrlc = "=3.1.0"
+ansi_term = "=0.11.0"
diff --git a/tests/ui-cargo/multiple_crate_versions/fail/src/main.rs b/tests/ui-cargo/multiple_crate_versions/fail/src/main.rs
new file mode 100644
index 00000000000..4bc61dd6299
--- /dev/null
+++ b/tests/ui-cargo/multiple_crate_versions/fail/src/main.rs
@@ -0,0 +1,3 @@
+#![warn(clippy::multiple_crate_versions)]
+
+fn main() {}
diff --git a/tests/ui-cargo/multiple_crate_versions/fail/src/main.stderr b/tests/ui-cargo/multiple_crate_versions/fail/src/main.stderr
new file mode 100644
index 00000000000..4f668599be9
--- /dev/null
+++ b/tests/ui-cargo/multiple_crate_versions/fail/src/main.stderr
@@ -0,0 +1,6 @@
+error: multiple versions for dependency `winapi`: 0.2.8, 0.3.8
+   |
+   = note: `-D clippy::multiple-crate-versions` implied by `-D warnings`
+
+error: aborting due to previous error
+
diff --git a/tests/ui-cargo/multiple_crate_versions/pass/Cargo.toml b/tests/ui-cargo/multiple_crate_versions/pass/Cargo.toml
new file mode 100644
index 00000000000..cad32b9233f
--- /dev/null
+++ b/tests/ui-cargo/multiple_crate_versions/pass/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "cargo_common_metadata"
+version = "0.1.0"
+
+[dependencies]
+regex = "1.3.7"
+serde = "1.0.110"
diff --git a/tests/ui-cargo/multiple_crate_versions/pass/src/main.rs b/tests/ui-cargo/multiple_crate_versions/pass/src/main.rs
new file mode 100644
index 00000000000..4bc61dd6299
--- /dev/null
+++ b/tests/ui-cargo/multiple_crate_versions/pass/src/main.rs
@@ -0,0 +1,3 @@
+#![warn(clippy::multiple_crate_versions)]
+
+fn main() {}