mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:04:51 +01:00
smb/client: introduce KUnit test to check search result of smb2_error_map_table
The KUnit test are executed when cifs.ko is loaded. Just like `fs/ext4/mballoc.c` includes `fs/ext4/mballoc-test.c`. `smb2maperror.c` also includes `smb2maperror_test.c`, allowing KUnit tests to access any functions and variables in `smb2maperror.c`. The maperror_test_check_search() checks whether all elements can be correctly found in the array. Suggested-by: David Howells <dhowells@redhat.com> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
75563adbb9
commit
480afcb19b
3 changed files with 70 additions and 0 deletions
|
|
@ -9,3 +9,20 @@ config SMBFS
|
|||
tristate
|
||||
default y if CIFS=y || SMB_SERVER=y
|
||||
default m if CIFS=m || SMB_SERVER=m
|
||||
|
||||
config SMB_KUNIT_TESTS
|
||||
tristate "KUnit tests for SMB" if !KUNIT_ALL_TESTS
|
||||
depends on SMBFS && KUNIT
|
||||
default KUNIT_ALL_TESTS
|
||||
help
|
||||
This builds the SMB KUnit tests.
|
||||
|
||||
KUnit tests run during boot and output the results to the debug log
|
||||
in TAP format (https://testanything.org/). Only useful for kernel devs
|
||||
running KUnit test harness and are not for inclusion into a production
|
||||
build.
|
||||
|
||||
For more information on KUnit and unit tests in general please refer
|
||||
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
||||
|
||||
If unsure, say N.
|
||||
|
|
|
|||
|
|
@ -114,3 +114,11 @@ 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 SMB_CLIENT_KUNIT_AVAILABLE && IS_ENABLED(CONFIG_SMB_KUNIT_TESTS)
|
||||
#include "smb2maperror_test.c"
|
||||
#endif /* CONFIG_SMB_KUNIT_TESTS */
|
||||
|
|
|
|||
45
fs/smb/client/smb2maperror_test.c
Normal file
45
fs/smb/client/smb2maperror_test.c
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// SPDX-License-Identifier: LGPL-2.1
|
||||
/*
|
||||
*
|
||||
* KUnit tests of SMB2 maperror
|
||||
*
|
||||
* Copyright (C) 2025 KylinSoft Co., Ltd. All rights reserved.
|
||||
* Author(s): ChenXiaoSong <chenxiaosong@kylinos.cn>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <kunit/test.h>
|
||||
|
||||
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);
|
||||
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);
|
||||
KUNIT_EXPECT_STREQ(test, expect->status_string, result->status_string);
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
|
||||
static struct kunit_case maperror_test_cases[] = {
|
||||
KUNIT_CASE(maperror_test_check_search),
|
||||
{}
|
||||
};
|
||||
|
||||
static struct kunit_suite maperror_suite = {
|
||||
.name = "smb2_maperror",
|
||||
.test_cases = maperror_test_cases,
|
||||
};
|
||||
|
||||
kunit_test_suite(maperror_suite);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
Loading…
Add table
Add a link
Reference in a new issue