Commit c3bba690 authored by Alan Maguire's avatar Alan Maguire Committed by Shuah Khan
Browse files

kunit: subtests should be indented 4 spaces according to TAP

Introduce KUNIT_SUBTEST_INDENT macro which corresponds to 4-space
indentation and KUNIT_SUBSUBTEST_INDENT macro which corresponds to
8-space indentation in line with TAP spec (e.g. see "Subtests"
section of https://node-tap.org/tap-protocol/

).

Use these macros in place of one or two tabs in strings to clarify
why we are indenting.

Suggested-by: default avatarFrank Rowand <frowand.list@gmail.com>
Signed-off-by: default avatarAlan Maguire <alan.maguire@oracle.com>
Reviewed-by: default avatarFrank Rowand <frank.rowand@sony.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent eda8e324
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -84,6 +84,14 @@ struct kunit;
/* Size of log associated with test. */
#define KUNIT_LOG_SIZE	512

/*
 * TAP specifies subtest stream indentation of 4 spaces, 8 spaces for a
 * sub-subtest.  See the "Subtests" section in
 * https://node-tap.org/tap-protocol/
 */
#define KUNIT_SUBTEST_INDENT		"    "
#define KUNIT_SUBSUBTEST_INDENT		"        "

/**
 * struct kunit_case - represents an individual test case.
 *
@@ -395,7 +403,8 @@ void kunit_log_append(char *log, const char *fmt, ...);
	} while (0)

#define kunit_printk(lvl, test, fmt, ...)				\
	kunit_log(lvl, test, "\t# %s: " fmt, (test)->name, ##__VA_ARGS__)
	kunit_log(lvl, test, KUNIT_SUBTEST_INDENT "# %s: " fmt,		\
		  (test)->name,	##__VA_ARGS__)

/**
 * kunit_info() - Prints an INFO level message associated with @test.
+40 −39
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
 * Author: Brendan Higgins <brendanhiggins@google.com>
 */
#include <kunit/assert.h>
#include <kunit/test.h>

#include "string-stream.h"

@@ -53,11 +54,11 @@ void kunit_unary_assert_format(const struct kunit_assert *assert,
	kunit_base_assert_format(assert, stream);
	if (unary_assert->expected_true)
		string_stream_add(stream,
				 "\tExpected %s to be true, but is false\n",
				  KUNIT_SUBTEST_INDENT "Expected %s to be true, but is false\n",
				  unary_assert->condition);
	else
		string_stream_add(stream,
				 "\tExpected %s to be false, but is true\n",
				  KUNIT_SUBTEST_INDENT "Expected %s to be false, but is true\n",
				  unary_assert->condition);
	kunit_assert_print_msg(assert, stream);
}
@@ -72,11 +73,11 @@ void kunit_ptr_not_err_assert_format(const struct kunit_assert *assert,
	kunit_base_assert_format(assert, stream);
	if (!ptr_assert->value) {
		string_stream_add(stream,
				 "\tExpected %s is not null, but is\n",
				  KUNIT_SUBTEST_INDENT "Expected %s is not null, but is\n",
				  ptr_assert->text);
	} else if (IS_ERR(ptr_assert->value)) {
		string_stream_add(stream,
				 "\tExpected %s is not error, but is: %ld\n",
				  KUNIT_SUBTEST_INDENT "Expected %s is not error, but is: %ld\n",
				  ptr_assert->text,
				  PTR_ERR(ptr_assert->value));
	}
@@ -92,14 +93,14 @@ void kunit_binary_assert_format(const struct kunit_assert *assert,

	kunit_base_assert_format(assert, stream);
	string_stream_add(stream,
			 "\tExpected %s %s %s, but\n",
			  KUNIT_SUBTEST_INDENT "Expected %s %s %s, but\n",
			  binary_assert->left_text,
			  binary_assert->operation,
			  binary_assert->right_text);
	string_stream_add(stream, "\t\t%s == %lld\n",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld\n",
			  binary_assert->left_text,
			  binary_assert->left_value);
	string_stream_add(stream, "\t\t%s == %lld",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld",
			  binary_assert->right_text,
			  binary_assert->right_value);
	kunit_assert_print_msg(assert, stream);
@@ -114,14 +115,14 @@ void kunit_binary_ptr_assert_format(const struct kunit_assert *assert,

	kunit_base_assert_format(assert, stream);
	string_stream_add(stream,
			 "\tExpected %s %s %s, but\n",
			  KUNIT_SUBTEST_INDENT "Expected %s %s %s, but\n",
			  binary_assert->left_text,
			  binary_assert->operation,
			  binary_assert->right_text);
	string_stream_add(stream, "\t\t%s == %px\n",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %px\n",
			  binary_assert->left_text,
			  binary_assert->left_value);
	string_stream_add(stream, "\t\t%s == %px",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %px",
			  binary_assert->right_text,
			  binary_assert->right_value);
	kunit_assert_print_msg(assert, stream);
@@ -136,14 +137,14 @@ void kunit_binary_str_assert_format(const struct kunit_assert *assert,

	kunit_base_assert_format(assert, stream);
	string_stream_add(stream,
			 "\tExpected %s %s %s, but\n",
			  KUNIT_SUBTEST_INDENT "Expected %s %s %s, but\n",
			  binary_assert->left_text,
			  binary_assert->operation,
			  binary_assert->right_text);
	string_stream_add(stream, "\t\t%s == %s\n",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %s\n",
			  binary_assert->left_text,
			  binary_assert->left_value);
	string_stream_add(stream, "\t\t%s == %s",
	string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %s",
			  binary_assert->right_text,
			  binary_assert->right_value);
	kunit_assert_print_msg(assert, stream);
+4 −3
Original line number Diff line number Diff line
@@ -69,8 +69,9 @@ EXPORT_SYMBOL_GPL(kunit_suite_num_test_cases);
static void kunit_print_subtest_start(struct kunit_suite *suite)
{
	kunit_print_tap_version();
	kunit_log(KERN_INFO, suite, "\t# Subtest: %s", suite->name);
	kunit_log(KERN_INFO, suite, "\t1..%zd",
	kunit_log(KERN_INFO, suite, KUNIT_SUBTEST_INDENT "# Subtest: %s",
		  suite->name);
	kunit_log(KERN_INFO, suite, KUNIT_SUBTEST_INDENT "1..%zd",
		  kunit_suite_num_test_cases(suite));
}

@@ -96,7 +97,7 @@ static void kunit_print_ok_not_ok(void *test_or_suite,
			kunit_status_to_string(is_ok),
			test_number, description);
	else
		kunit_log(KERN_INFO, test, "\t%s %zd - %s",
		kunit_log(KERN_INFO, test, KUNIT_SUBTEST_INDENT "%s %zd - %s",
			  kunit_status_to_string(is_ok),
			  test_number, description);
}
+5 −5
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ def print_log(log):
	for m in log:
		print_with_timestamp(m)

TAP_ENTRIES = re.compile(r'^(TAP|\t?ok|\t?not ok|\t?[0-9]+\.\.[0-9]+|\t?#).*$')
TAP_ENTRIES = re.compile(r'^(TAP|[\s]*ok|[\s]*not ok|[\s]*[0-9]+\.\.[0-9]+|[\s]*#).*$')

def consume_non_diagnositic(lines: List[str]) -> None:
	while lines and not TAP_ENTRIES.match(lines[0]):
@@ -107,7 +107,7 @@ def save_non_diagnositic(lines: List[str], test_case: TestCase) -> None:

OkNotOkResult = namedtuple('OkNotOkResult', ['is_ok','description', 'text'])

OK_NOT_OK_SUBTEST = re.compile(r'^\t(ok|not ok) [0-9]+ - (.*)$')
OK_NOT_OK_SUBTEST = re.compile(r'^[\s]+(ok|not ok) [0-9]+ - (.*)$')

OK_NOT_OK_MODULE = re.compile(r'^(ok|not ok) [0-9]+ - (.*)$')

@@ -134,7 +134,7 @@ def parse_ok_not_ok_test_case(lines: List[str], test_case: TestCase) -> bool:
	else:
		return False

SUBTEST_DIAGNOSTIC = re.compile(r'^\t# .*?: (.*)$')
SUBTEST_DIAGNOSTIC = re.compile(r'^[\s]+# .*?: (.*)$')
DIAGNOSTIC_CRASH_MESSAGE = 'kunit test case crashed!'

def parse_diagnostic(lines: List[str], test_case: TestCase) -> bool:
@@ -161,7 +161,7 @@ def parse_test_case(lines: List[str]) -> TestCase:
	else:
		return None

SUBTEST_HEADER = re.compile(r'^\t# Subtest: (.*)$')
SUBTEST_HEADER = re.compile(r'^[\s]+# Subtest: (.*)$')

def parse_subtest_header(lines: List[str]) -> str:
	consume_non_diagnositic(lines)
@@ -174,7 +174,7 @@ def parse_subtest_header(lines: List[str]) -> str:
	else:
		return None

SUBTEST_PLAN = re.compile(r'\t[0-9]+\.\.([0-9]+)')
SUBTEST_PLAN = re.compile(r'[\s]+[0-9]+\.\.([0-9]+)')

def parse_subtest_plan(lines: List[str]) -> int:
	consume_non_diagnositic(lines)