All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC v1 08/12] kunit: mock: add basic matchers and actions
Date: Sat, 19 Sep 2020 08:24:26 +0800	[thread overview]
Message-ID: <202009190847.lHCvkJDK%lkp@intel.com> (raw)
In-Reply-To: <20200918183114.2571146-9-dlatypov@google.com>

[-- Attachment #1: Type: text/plain, Size: 43238 bytes --]

Hi Daniel,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on 10b82d5176488acee2820e5a2cf0f2ec5c3488b6]

url:    https://github.com/0day-ci/linux/commits/Daniel-Latypov/kunit-introduce-class-mocking-support/20200919-023253
base:    10b82d5176488acee2820e5a2cf0f2ec5c3488b6
config: arm-randconfig-r013-20200917 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 0ff28fa6a75617d61b1aeea77463d6a1684c3c89)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'to_mock_u8_matcher' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:37:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   to_mock_##type_name##_matcher(                                 \
                   ^
   <scratch space>:32:1: note: expanded from here
   to_mock_u8_matcher
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:36:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   struct mock_##type_name##_matcher *                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_eq' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:42:1: note: expanded from here
   match_u8_eq
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_ne' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:59:1: note: expanded from here
   match_u8_ne
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_le' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:76:1: note: expanded from here
   match_u8_le
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_lt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:93:1: note: expanded from here
   match_u8_lt
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_ge' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:110:1: note: expanded from here
   match_u8_ge
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:105:1: warning: no previous prototype for function 'match_u8_gt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u8);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:127:1: note: expanded from here
   match_u8_gt
   ^
   lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'to_mock_u16_matcher' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:37:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   to_mock_##type_name##_matcher(                                 \
                   ^
   <scratch space>:145:1: note: expanded from here
   to_mock_u16_matcher
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:36:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   struct mock_##type_name##_matcher *                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_eq' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:155:1: note: expanded from here
   match_u16_eq
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_ne' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:172:1: note: expanded from here
   match_u16_ne
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_le' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:189:1: note: expanded from here
   match_u16_le
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_lt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:206:1: note: expanded from here
   match_u16_lt
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_ge' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:223:1: note: expanded from here
   match_u16_ge
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:106:1: warning: no previous prototype for function 'match_u16_gt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u16);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:240:1: note: expanded from here
   match_u16_gt
   ^
   lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'to_mock_u32_matcher' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:37:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   to_mock_##type_name##_matcher(                                 \
                   ^
   <scratch space>:258:1: note: expanded from here
   to_mock_u32_matcher
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:36:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   struct mock_##type_name##_matcher *                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_eq' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:268:1: note: expanded from here
   match_u32_eq
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_ne' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:285:1: note: expanded from here
   match_u32_ne
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:92:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ne, !=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_le' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:302:1: note: expanded from here
   match_u32_le
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:94:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, le, <=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_lt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:15:1: note: expanded from here
   match_u32_lt
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:96:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, lt, <)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
>> lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_ge' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:32:1: note: expanded from here
   match_u32_ge
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:98:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, ge, >=)                     \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
   lib/kunit/common-mocks.c:107:1: warning: no previous prototype for function 'match_u32_gt' [-Wmissing-prototypes]
   DEFINE_MATCHER(u32);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                        ^
   <scratch space>:49:1: note: expanded from here
   match_u32_gt
   ^
   lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:100:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, gt, >)                      \
                   ^
   lib/kunit/common-mocks.c:46:3: note: expanded from macro 'DEFINE_MATCH_FUNC'
                   bool match_##type_name##_##op_name(                            \
                   ^
   lib/kunit/common-mocks.c:108:1: warning: no previous prototype for function 'to_mock_u64_matcher' [-Wmissing-prototypes]
   DEFINE_MATCHER(u64);
   ^
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:37:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   to_mock_##type_name##_matcher(                                 \
                   ^
   <scratch space>:67:1: note: expanded from here
   to_mock_u64_matcher
   ^
   lib/kunit/common-mocks.c:108:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^
   lib/kunit/common-mocks.c:89:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_TO_MATCHER_STRUCT(type_name)                            \
                   ^
   lib/kunit/common-mocks.c:36:3: note: expanded from macro 'DEFINE_TO_MATCHER_STRUCT'
                   struct mock_##type_name##_matcher *                            \
                   ^
   lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the argument has type 'u64' (aka 'unsigned long long') [-Wformat]
   DEFINE_MATCHER(u64);
   ^~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                                                    actual,                       \
                                                    ^~~~~~
   lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the argument has type 'u64' (aka 'unsigned long long') [-Wformat]
   DEFINE_MATCHER(u64);
   ^~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
   #define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:90:3: note: expanded from macro 'DEFINE_MATCHER_WITH_TYPENAME'
                   DEFINE_MATCH_FUNC(type_name, type, eq, ==)                     \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
                                                    matcher->expected);           \
                                                    ^~~~~~~~~~~~~~~~~
   lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the argument has type 'u64' (aka 'unsigned long long') [-Wformat]
   DEFINE_MATCHER(u64);

# https://github.com/0day-ci/linux/commit/32db0336f68431c2ad957f5dcd80ce827488660f
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Daniel-Latypov/kunit-introduce-class-mocking-support/20200919-023253
git checkout 32db0336f68431c2ad957f5dcd80ce827488660f
vim +/to_mock_u8_matcher +105 lib/kunit/common-mocks.c

   104	
 > 105	DEFINE_MATCHER(u8);
 > 106	DEFINE_MATCHER(u16);
 > 107	DEFINE_MATCHER(u32);
 > 108	DEFINE_MATCHER(u64);
 > 109	DEFINE_MATCHER(char);
 > 110	DEFINE_MATCHER_WITH_TYPENAME(uchar, unsigned char);
 > 111	DEFINE_MATCHER_WITH_TYPENAME(schar, signed char);
 > 112	DEFINE_MATCHER(short);
 > 113	DEFINE_MATCHER_WITH_TYPENAME(ushort, unsigned short);
 > 114	DEFINE_MATCHER(int);
 > 115	DEFINE_MATCHER_WITH_TYPENAME(uint, unsigned int);
 > 116	DEFINE_MATCHER(long);
 > 117	DEFINE_MATCHER_WITH_TYPENAME(ulong, unsigned long);
 > 118	DEFINE_MATCHER_WITH_TYPENAME(longlong, long long);
 > 119	DEFINE_MATCHER_WITH_TYPENAME(ulonglong, unsigned long long);
   120	
 > 121	DEFINE_MATCHER_WITH_TYPENAME(ptr, void *);
   122	
   123	struct mock_memeq_matcher {
   124		struct mock_param_matcher matcher;
   125		const void *expected;
   126		size_t size;
   127	};
   128	
   129	static bool match_memeq(struct mock_param_matcher *pmatcher,
   130				struct kunit_stream *stream,
   131				const void *pactual)
   132	{
   133		struct mock_memeq_matcher *matcher =
   134				container_of(pmatcher,
   135					     struct mock_memeq_matcher,
   136					     matcher);
   137		const void *actual = CONVERT_TO_ACTUAL_TYPE(const void *, pactual);
   138		bool matches = !memcmp(actual, matcher->expected, matcher->size);
   139		int i;
   140	
   141		for (i = 0; i < matcher->size; i++)
   142			kunit_stream_add(stream, "%02x, ", ((const char *) actual)[i]);
   143		if (matches)
   144			kunit_stream_add(stream, "== ");
   145		else
   146			kunit_stream_add(stream, "!= ");
   147		for (i = 0; i < matcher->size; i++)
   148			kunit_stream_add(stream,
   149				    "%02x, ",
   150				    ((const char *) matcher->expected)[i]);
   151	
   152		return matches;
   153	}
   154	
   155	struct mock_param_matcher *kunit_memeq(struct kunit *test,
   156					      const void *buf,
   157					      size_t size)
   158	{
   159		struct mock_memeq_matcher *matcher;
   160	
   161		matcher = kunit_kzalloc(test, sizeof(*matcher), GFP_KERNEL);
   162		if (!matcher)
   163			return NULL;
   164	
   165		matcher->matcher.match = match_memeq;
   166		matcher->expected = buf;
   167		matcher->size = size;
   168	
   169		return &matcher->matcher;
   170	}
   171	
   172	struct mock_streq_matcher {
   173		struct mock_param_matcher matcher;
   174		const char *expected;
   175	};
   176	
   177	static bool match_streq(struct mock_param_matcher *pmatcher,
   178				struct kunit_stream *stream,
   179				const void *pactual)
   180	{
   181		struct mock_streq_matcher *matcher =
   182				container_of(pmatcher,
   183					     struct mock_streq_matcher,
   184					     matcher);
   185		const char *actual = CONVERT_TO_ACTUAL_TYPE(const char *, pactual);
   186		bool matches = !strcmp(actual, matcher->expected);
   187	
   188		if (matches)
   189			kunit_stream_add(stream, "%s == %s", actual, matcher->expected);
   190		else
   191			kunit_stream_add(stream, "%s != %s", actual, matcher->expected);
   192	
   193		return matches;
   194	}
   195	
   196	struct mock_param_matcher *kunit_streq(struct kunit *test, const char *str)
   197	{
   198		struct mock_streq_matcher *matcher;
   199	
   200		matcher = kunit_kzalloc(test, sizeof(*matcher), GFP_KERNEL);
   201		if (!matcher)
   202			return NULL;
   203	
   204		matcher->matcher.match = match_streq;
   205		matcher->expected = str;
   206	
   207		return &matcher->matcher;
   208	}
   209	
   210	#define DEFINE_RETURN_ACTION_STRUCT(type_name, type)			       \
   211			struct mock_##type_name##_action {			       \
   212				struct mock_action action;			       \
   213				type ret;					       \
   214			}
   215	
   216	#define DEFINE_RETURN_ACTION_FUNC(type_name, type)			       \
   217			void *do_##type_name##_return(struct mock_action *paction,     \
   218						      const void **params,	       \
   219						      int len)			       \
   220			{							       \
   221				struct mock_##type_name##_action *action =	       \
   222						container_of(paction,		       \
   223							     struct mock_##type_name##_action,\
   224							     action);		       \
   225										       \
   226				return (void *) &action->ret;			       \
   227			}
   228	
   229	#define DEFINE_RETURN_ACTION_FACTORY(type_name, type)			       \
   230			struct mock_action *kunit_##type_name##_return(		       \
   231					struct kunit *test,			       \
   232					type ret)				       \
   233			{							       \
   234				struct mock_##type_name##_action *action;	       \
   235										       \
   236				action = kunit_kmalloc(test,			       \
   237						      sizeof(*action),		       \
   238						      GFP_KERNEL);		       \
   239				if (!action)					       \
   240					return NULL;				       \
   241										       \
   242				action->action.do_action = do_##type_name##_return;    \
   243				action->ret = ret;				       \
   244										       \
   245				return &action->action;				       \
   246			}
   247	
   248	#define DEFINE_RETURN_ACTION_WITH_TYPENAME(type_name, type)		       \
   249			DEFINE_RETURN_ACTION_STRUCT(type_name, type);		       \
   250			DEFINE_RETURN_ACTION_FUNC(type_name, type);		       \
   251			DEFINE_RETURN_ACTION_FACTORY(type_name, type)
   252	
   253	#define DEFINE_RETURN_ACTION(type) \
   254			DEFINE_RETURN_ACTION_WITH_TYPENAME(type, type)
   255	
 > 256	DEFINE_RETURN_ACTION(u8);
 > 257	DEFINE_RETURN_ACTION(u16);
 > 258	DEFINE_RETURN_ACTION(u32);
 > 259	DEFINE_RETURN_ACTION(u64);
 > 260	DEFINE_RETURN_ACTION(char);
 > 261	DEFINE_RETURN_ACTION_WITH_TYPENAME(uchar, unsigned char);
 > 262	DEFINE_RETURN_ACTION_WITH_TYPENAME(schar, signed char);
 > 263	DEFINE_RETURN_ACTION(short);
 > 264	DEFINE_RETURN_ACTION_WITH_TYPENAME(ushort, unsigned short);
 > 265	DEFINE_RETURN_ACTION(int);
 > 266	DEFINE_RETURN_ACTION_WITH_TYPENAME(uint, unsigned int);
 > 267	DEFINE_RETURN_ACTION(long);
 > 268	DEFINE_RETURN_ACTION_WITH_TYPENAME(ulong, unsigned long);
 > 269	DEFINE_RETURN_ACTION_WITH_TYPENAME(longlong, long long);
 > 270	DEFINE_RETURN_ACTION_WITH_TYPENAME(ulonglong, unsigned long long);
 > 271	DEFINE_RETURN_ACTION_WITH_TYPENAME(ptr, void *);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40422 bytes --]

  parent reply	other threads:[~2020-09-19  0:24 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-18 18:31 [RFC v1 00/12] kunit: introduce class mocking support Daniel Latypov
2020-09-18 18:31 ` [RFC v1 01/12] Revert "kunit: move string-stream.h to lib/kunit" Daniel Latypov
2020-09-18 22:53   ` kernel test robot
2020-09-18 18:31 ` [RFC v1 02/12] kunit: test: add kunit_stream a std::stream like logger Daniel Latypov
2020-09-18 18:31 ` [RFC v1 03/12] kunit: test: add concept of post conditions Daniel Latypov
2020-09-18 18:31 ` [RFC v1 04/12] checkpatch: add support for struct MOCK(foo) syntax Daniel Latypov
2020-09-18 18:31 ` [RFC v1 05/12] kunit: mock: add parameter list manipulation macros Daniel Latypov
2020-09-18 18:31 ` [RFC v1 06/12] kunit: expose kunit_set_failure() for use by mocking Daniel Latypov
2020-09-18 18:31 ` [RFC v1 07/12] kunit: mock: add internal mock infrastructure Daniel Latypov
2020-09-18 18:31 ` [RFC v1 08/12] kunit: mock: add basic matchers and actions Daniel Latypov
2020-09-18 21:27   ` kernel test robot
2020-09-18 21:27   ` [RFC PATCH] kunit: mock: to_mock_u8_matcher can be static kernel test robot
2020-09-19  0:24   ` kernel test robot [this message]
2020-09-18 18:31 ` [RFC v1 09/12] kunit: mock: add macro machinery to pick correct format args Daniel Latypov
2020-09-18 18:31 ` [RFC v1 10/12] kunit: mock: add class mocking support Daniel Latypov
2020-09-18 20:27   ` kernel test robot
2020-09-18 22:30   ` kernel test robot
2020-09-18 22:46   ` kernel test robot
2020-09-18 22:46   ` [RFC PATCH] kunit: mock: one_param can be static kernel test robot
2020-09-18 18:31 ` [RFC v1 11/12] kunit: mock: add struct param matcher Daniel Latypov
2020-09-18 18:31 ` [RFC v1 12/12] kunit: mock: implement nice, strict and naggy mock distinctions Daniel Latypov
2020-09-23  0:24 ` [RFC v1 00/12] kunit: introduce class mocking support Daniel Latypov
2020-09-28 23:24   ` Brendan Higgins
2020-10-01 21:49     ` Daniel Latypov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202009190847.lHCvkJDK%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.