Commit 7d0bf050 authored by ChenXiaoSong's avatar ChenXiaoSong Committed by Steve French
Browse files

smb/client: make SMB2 maperror KUnit tests a separate module

parent 11439c46
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -56,4 +56,6 @@ $(obj)/smb2maperror.o: $(obj)/smb2_mapping_table.c
quiet_cmd_gen_smb2_mapping = GEN     $@
      cmd_gen_smb2_mapping = perl $(src)/gen_smb2_mapping $< $@

obj-$(CONFIG_SMB_KUNIT_TESTS) += smb2maperror_test.o

clean-files	+= smb2_mapping_table.c
+12 −0
Original line number Diff line number Diff line
@@ -46,4 +46,16 @@ enum smb2_compound_ops {
#define END_OF_CHAIN 4
#define RELATED_REQUEST 8

/*
 *****************************************************************
 * Struct definitions go here
 *****************************************************************
 */

struct status_to_posix_error {
	__u32 smb2_status;
	int posix_error;
	char *status_string;
};

#endif	/* _SMB2_GLOB_H */
+15 −13
Original line number Diff line number Diff line
@@ -8,7 +8,6 @@
 *
 */
#include <linux/errno.h>
#include "cifsglob.h"
#include "cifsproto.h"
#include "cifs_debug.h"
#include "smb2proto.h"
@@ -16,12 +15,6 @@
#include "../common/smb2status.h"
#include "trace.h"

struct status_to_posix_error {
	__u32 smb2_status;
	int posix_error;
	char *status_string;
};

static const struct status_to_posix_error smb2_error_map_table[] = {
/*
 * Automatically generated by the `gen_smb2_mapping` script,
@@ -115,10 +108,19 @@ int __init smb2_init_maperror(void)
	return 0;
}

#define SMB_CLIENT_KUNIT_AVAILABLE \
	((IS_MODULE(CONFIG_CIFS) && IS_ENABLED(CONFIG_KUNIT)) || \
	 (IS_BUILTIN(CONFIG_CIFS) && IS_BUILTIN(CONFIG_KUNIT)))
#if IS_ENABLED(CONFIG_SMB_KUNIT_TESTS)
/* Previous prototype for eliminating the build warning. */
const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status);

const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status)
{
	return smb2_get_err_map(smb2_status);
}
EXPORT_SYMBOL_GPL(smb2_get_err_map_test);

const struct status_to_posix_error *smb2_error_map_table_test = smb2_error_map_table;
EXPORT_SYMBOL_GPL(smb2_error_map_table_test);

#if SMB_CLIENT_KUNIT_AVAILABLE && IS_ENABLED(CONFIG_SMB_KUNIT_TESTS)
#include "smb2maperror_test.c"
#endif /* CONFIG_SMB_KUNIT_TESTS */
unsigned int smb2_error_map_num = ARRAY_SIZE(smb2_error_map_table);
EXPORT_SYMBOL_GPL(smb2_error_map_num);
#endif
+9 −3
Original line number Diff line number Diff line
@@ -9,13 +9,18 @@
 */

#include <kunit/test.h>
#include "smb2glob.h"

const struct status_to_posix_error *smb2_get_err_map_test(__u32 smb2_status);
extern const struct status_to_posix_error *smb2_error_map_table_test;
extern unsigned int smb2_error_map_num;

static void
test_cmp_map(struct kunit *test, const struct status_to_posix_error *expect)
{
	const struct status_to_posix_error *result;

	result = smb2_get_err_map(expect->smb2_status);
	result = smb2_get_err_map_test(expect->smb2_status);
	KUNIT_EXPECT_PTR_NE(test, NULL, result);
	KUNIT_EXPECT_EQ(test, expect->smb2_status, result->smb2_status);
	KUNIT_EXPECT_EQ(test, expect->posix_error, result->posix_error);
@@ -26,8 +31,8 @@ static void maperror_test_check_search(struct kunit *test)
{
	unsigned int i;

	for (i = 0; i < ARRAY_SIZE(smb2_error_map_table); i++)
		test_cmp_map(test, &smb2_error_map_table[i]);
	for (i = 0; i < smb2_error_map_num; i++)
		test_cmp_map(test, &smb2_error_map_table_test[i]);
}

static struct kunit_case maperror_test_cases[] = {
@@ -43,3 +48,4 @@ static struct kunit_suite maperror_suite = {
kunit_test_suite(maperror_suite);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("KUnit tests of SMB2 maperror");