[igt-dev] [PATCH i-g-t] runner: Fix graceful exit result parsing for dynamic subtests

Petri Latvala petri.latvala at intel.com
Mon Jan 25 13:55:14 UTC 2021


Commit 10c83dfa5ad2 ("runner: Introduce a way to stop testing without
marking tests incomplete") added graceful exiting by signaling the
runner with SIGHUP, marking the currently running test as 'notrun'
instead of 'incomplete'. The result handling didn't handle dynamic
subtests though, so the currently executing dynamic subtest was still
marked as 'incomplete'. Handle that now similarly as handling the
'abort' result.

Signed-off-by: Petri Latvala <petri.latvala at intel.com>
Cc: Arkadiusz Hiler <arek at hiler.eu>
---
 runner/resultgen.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/runner/resultgen.c b/runner/resultgen.c
index 8d0c6249..b74970a6 100644
--- a/runner/resultgen.c
+++ b/runner/resultgen.c
@@ -656,19 +656,24 @@ static void process_dynamic_subtest_output(const char *piglit_name,
 					     dynend);
 
 			/*
-			 * If a dynamic subsubtest is considered incomplete we
-			 * need to check parent's status first, to be sure that
-			 * the binary hasn't aborted (exit code). If it has
-			 * aborted then we have to attribute this status to our
-			 * subsubtest.
+			 * If a dynamic subsubtest is considered
+			 * incomplete we need to check parent's status
+			 * first, to be sure that the binary hasn't
+			 * aborted or stopped gracefully (exit
+			 * code). If it has aborted then we have to
+			 * attribute this status to our subsubtest.
 			 */
 			if (!strcmp(dynresulttext, "incomplete")) {
 				struct json_object *parent_subtest;
 
 				if (json_object_object_get_ex(tests, piglit_name, &parent_subtest) &&
-				    json_object_object_get_ex(parent_subtest, "result", &parent_subtest) &&
-				    !strcmp(json_object_get_string(parent_subtest), "abort"))
-					dynresulttext = "abort";
+				    json_object_object_get_ex(parent_subtest, "result", &parent_subtest)) {
+					const char *resulttext = json_object_get_string(parent_subtest);
+
+					if (!strcmp(resulttext, "abort") ||
+					    !strcmp(resulttext, "notrun"))
+						dynresulttext = resulttext;
+				}
 			}
 
 			set_result(current_dynamic_test, dynresulttext);
-- 
2.29.2



More information about the igt-dev mailing list