File 0002-Fix-mix-xref-order-across-OTP-versions-OTP-27-13430.patch of Package elixir

From c969a51ae766b4c65d2e52ee68b2ab748c2f1d49 Mon Sep 17 00:00:00 2001
From: Jean Klingler <sabiwara@gmail.com>
Date: Sat, 23 Mar 2024 10:51:41 +0900
Subject: [PATCH] Fix mix xref order across OTP versions (OTP 27) (#13430)

---
 lib/mix/lib/mix/tasks/xref.ex        | 4 +++-
 lib/mix/test/mix/tasks/xref_test.exs | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/mix/lib/mix/tasks/xref.ex b/lib/mix/lib/mix/tasks/xref.ex
index ae7b67260..d58cd5e23 100644
--- a/lib/mix/lib/mix/tasks/xref.ex
+++ b/lib/mix/lib/mix/tasks/xref.ex
@@ -1003,10 +1003,12 @@ defp with_digraph(references, callback) do
   end
 
   defp cycles(graph, opts) do
+    # Vertices order in cyclic_strong_components/1 return is arbitrary and changes between
+    # OTP versions, sorting is necessary to make the output stable across versions.
     cycles =
       graph
       |> :digraph_utils.cyclic_strong_components()
-      |> Enum.reduce([], &inner_cycles(graph, &1, &2))
+      |> Enum.reduce([], &inner_cycles(graph, Enum.sort(&1), &2))
       |> Enum.map(&{length(&1), &1})
 
     if min = opts[:min_cycle_size], do: Enum.filter(cycles, &(elem(&1, 0) > min)), else: cycles
diff --git a/lib/mix/test/mix/tasks/xref_test.exs b/lib/mix/test/mix/tasks/xref_test.exs
index aa1d2b1cc..3e3b4879c 100644
--- a/lib/mix/test/mix/tasks/xref_test.exs
+++ b/lib/mix/test/mix/tasks/xref_test.exs
@@ -445,9 +445,9 @@ test "cycles" do
 
       Cycle of length 3:
 
-          lib/b.ex
           lib/a.ex
           lib/b.ex
+          lib/a.ex
 
       """)
     end
@@ -1085,7 +1085,7 @@ defp assert_graph(opts \\ [], expected, params \\ []) do
                  ^first_line | ["Generated sample app" | result]
                ] = receive_until_no_messages([]) |> String.split("\n")
 
-        assert normalize_graph_output(result |> Enum.join("\n")) == expected
+        assert result |> Enum.join("\n") |> normalize_graph_output() == expected
       end)
     end
 
-- 
2.43.0

openSUSE Build Service is sponsored by