diff mbox

[igt] lib: compute exitcode first

Message ID 1462269947-28245-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson May 3, 2016, 10:05 a.m. UTC
Before we print the exitcode to the debug/kmsg logs, we should inspect
what it's final value will be. For example, in the case of running
multiple subtests which all happen to be skipped, igt_exitcode is 0, but
the final exit code will be 77.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 lib/igt_core.c | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

Comments

Tvrtko Ursulin May 3, 2016, 10:22 a.m. UTC | #1
On 03/05/16 11:05, Chris Wilson wrote:
> Before we print the exitcode to the debug/kmsg logs, we should inspect
> what it's final value will be. For example, in the case of running
> multiple subtests which all happen to be skipped, igt_exitcode is 0, but
> the final exit code will be 77.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   lib/igt_core.c | 28 ++++++++++++++++------------
>   1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/lib/igt_core.c b/lib/igt_core.c
> index b0bc60c..8c4bbc4 100644
> --- a/lib/igt_core.c
> +++ b/lib/igt_core.c
> @@ -1258,10 +1258,22 @@ void igt_exit(void)
>   		exit(IGT_EXIT_INVALID);
>   	}
>
> -
>   	if (igt_only_list_subtests())
>   		exit(IGT_EXIT_SUCCESS);
>
> +	/* Calling this without calling one of the above is a failure */
> +	assert(!tests_with_subtests ||

test_with_subtests

With that fixed it seems to work,

Tested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko

> +	       skipped_one ||
> +	       succeeded_one ||
> +	       failed_one);
> +
> +	if (test_with_subtests && !failed_one) {
> +		if (succeeded_one)
> +			igt_exitcode = IGT_EXIT_SUCCESS;
> +		else
> +			igt_exitcode = IGT_EXIT_SKIP;
> +	}
> +
>   	kmsg(KMSG_INFO "%s: exiting, ret=%d\n", command_str, igt_exitcode);
>   	igt_debug("Exiting with status code %d\n", igt_exitcode);
>
> @@ -1288,19 +1300,11 @@ void igt_exit(void)
>   				result = "FAIL";
>   		}
>
> -		printf("%s (%.3fs)\n", result, time_elapsed(&subtest_time, &now));
> -		exit(igt_exitcode);
> +		printf("%s (%.3fs)\n",
> +		       result, time_elapsed(&subtest_time, &now));
>   	}
>
> -	/* Calling this without calling one of the above is a failure */
> -	assert(skipped_one || succeeded_one || failed_one);
> -
> -	if (failed_one)
> -		exit(igt_exitcode);
> -	else if (succeeded_one)
> -		exit(IGT_EXIT_SUCCESS);
> -	else
> -		exit(IGT_EXIT_SKIP);
> +	exit(igt_exitcode);
>   }
>
>   /* fork support code */
>
diff mbox

Patch

diff --git a/lib/igt_core.c b/lib/igt_core.c
index b0bc60c..8c4bbc4 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -1258,10 +1258,22 @@  void igt_exit(void)
 		exit(IGT_EXIT_INVALID);
 	}
 
-
 	if (igt_only_list_subtests())
 		exit(IGT_EXIT_SUCCESS);
 
+	/* Calling this without calling one of the above is a failure */
+	assert(!tests_with_subtests ||
+	       skipped_one ||
+	       succeeded_one ||
+	       failed_one);
+
+	if (test_with_subtests && !failed_one) {
+		if (succeeded_one)
+			igt_exitcode = IGT_EXIT_SUCCESS;
+		else
+			igt_exitcode = IGT_EXIT_SKIP;
+	}
+
 	kmsg(KMSG_INFO "%s: exiting, ret=%d\n", command_str, igt_exitcode);
 	igt_debug("Exiting with status code %d\n", igt_exitcode);
 
@@ -1288,19 +1300,11 @@  void igt_exit(void)
 				result = "FAIL";
 		}
 
-		printf("%s (%.3fs)\n", result, time_elapsed(&subtest_time, &now));
-		exit(igt_exitcode);
+		printf("%s (%.3fs)\n",
+		       result, time_elapsed(&subtest_time, &now));
 	}
 
-	/* Calling this without calling one of the above is a failure */
-	assert(skipped_one || succeeded_one || failed_one);
-
-	if (failed_one)
-		exit(igt_exitcode);
-	else if (succeeded_one)
-		exit(IGT_EXIT_SUCCESS);
-	else
-		exit(IGT_EXIT_SKIP);
+	exit(igt_exitcode);
 }
 
 /* fork support code */