File 8241-Don-t-crash-when-test-summary-contains-more-values-t.patch of Package erlang

From ac02757d413f231994d63e06f8c444ab48c55dbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20W=C4=85sowski?= <michal@erlang.org>
Date: Mon, 16 Dec 2024 18:37:40 +0100
Subject: [PATCH] Don't crash when test summary contains more values than we
 want

---
 lib/common_test/src/ct_logs.erl | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl
index 71d821681b..045cdd37d8 100644
--- a/lib/common_test/src/ct_logs.erl
+++ b/lib/common_test/src/ct_logs.erl
@@ -77,6 +77,8 @@
 -define(abs(Name), filename:absname(Name)).
 
 -define(now, os:timestamp()).
+-define(expected_summary_size, 5).
+-define(minimum_summary_size, 3).
 
 -record(log_cache, {version,
 		    all_runs = [],
@@ -1889,12 +1891,8 @@ year() ->
 count_cases(Dir) ->
     SumFile = filename:join(Dir, ?run_summary),
     case read_summary(SumFile, [summary]) of
-	{ok, [{Succ,Fail,Skip}]} ->
-	    {Succ,Fail,Skip,undefined,undefined};
-	{ok, [{Succ,Fail,UserSkip,AutoSkip}]} ->
-		{Succ,Fail,UserSkip,AutoSkip,undefined};
 	{ok, [Summary]} ->
-	    Summary;
+	    get_expected_num_of_summary_values(Summary);
 	{error, _} ->
 	    LogFile = filename:join(Dir, ?suitelog_name),
 	    case file:read_file(LogFile) of
@@ -1933,6 +1931,16 @@ read_summary(Name, Keys) ->
 	    {error, Reason}
     end.
 
+get_expected_num_of_summary_values(Summary) when tuple_size(Summary) > ?expected_summary_size ->
+    List = tuple_to_list(Summary),
+    list_to_tuple(lists:sublist(List, ?expected_summary_size));
+get_expected_num_of_summary_values(Summary) when tuple_size(Summary) == ?expected_summary_size ->
+    Summary;
+get_expected_num_of_summary_values(Summary) when tuple_size(Summary) >= ?minimum_summary_size ->
+    List = tuple_to_list(Summary),
+    Pad = lists:duplicate(?expected_summary_size - length(List), undefined),
+    list_to_tuple(lists:append(List, Pad)).
+
 count_cases1("=failed" ++ Rest, {Success, _Fail, UserSkip, AutoSkip, ElapsedTime}) ->
     {NextLine, Count} = get_number(Rest),
     count_cases1(NextLine, {Success, Count, UserSkip, AutoSkip, ElapsedTime});
-- 
2.43.0

openSUSE Build Service is sponsored by