Commit 37dbb4c7 authored by David Gow's avatar David Gow Committed by Shuah Khan
Browse files

kunit: Don't crash if no parameters are generated



It's possible that a parameterised test could end up with zero
parameters. At the moment, the test function will nevertheless be called
with NULL as the parameter. Instead, don't try to run the test code, and
just mark the test as SKIPped.

Reported-by: default avatarDaniel Latypov <dlatypov@google.com>
Signed-off-by: default avatarDavid Gow <davidgow@google.com>
Reviewed-by: default avatarDaniel Latypov <dlatypov@google.com>
Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent e56e4828
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -504,16 +504,18 @@ int kunit_run_tests(struct kunit_suite *suite)
		struct kunit_result_stats param_stats = { 0 };
		test_case->status = KUNIT_SKIPPED;

		if (test_case->generate_params) {
		if (!test_case->generate_params) {
			/* Non-parameterised test. */
			kunit_run_case_catch_errors(suite, test_case, &test);
			kunit_update_stats(&param_stats, test.status);
		} else {
			/* Get initial param. */
			param_desc[0] = '\0';
			test.param_value = test_case->generate_params(NULL, param_desc);
		}

		do {
			while (test.param_value) {
				kunit_run_case_catch_errors(suite, test_case, &test);

			if (test_case->generate_params) {
				if (param_desc[0] == '\0') {
					snprintf(param_desc, sizeof(param_desc),
						 "param-%d", test.param_index);
@@ -530,11 +532,11 @@ int kunit_run_tests(struct kunit_suite *suite)
				param_desc[0] = '\0';
				test.param_value = test_case->generate_params(test.param_value, param_desc);
				test.param_index++;
			}

				kunit_update_stats(&param_stats, test.status);
			}
		}

		} while (test.param_value);

		kunit_print_test_stats(&test, param_stats);