tree 25a454835688cf4cb07a4f82abdab5a085054b38
parent 9e64bb7987b6ec1b8744f1815eca884dbdddcfbc
author Andrew Jeffery <andrew@aj.id.au> 1682651669 +0930
committer Andrew Jeffery <andrew@aj.id.au> 1682664978 +0930

host-bmc: test: Avoid -Werror=overloaded-virtual

Drop the const qualifier for the createHostEffecterMatch() mock to
resolve the following error:

```
In file included from ../host-bmc/test/dbus_to_host_effecter_test.cpp:3:
../host-bmc/dbus_to_host_effecters.hpp:169:18: error: ‘virtual void pldm::host_effecters::HostEffecterParser::createHostEffecterMatch(const std::string&, const std::string&, size_t, size_t, uint16_t)’ was hidden [-Werror=overloaded-virtual=]
  169 |     virtual void createHostEffecterMatch(const std::string& objectPath,
      |                  ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../subprojects/googletest/googlemock/include/gmock/gmock-actions.h:147,
                 from ../subprojects/googletest/googlemock/include/gmock/gmock.h:56,
                 from ../common/test/mocked_utils.hpp:3,
                 from ../host-bmc/test/dbus_to_host_effecter_test.cpp:1:
../host-bmc/test/dbus_to_host_effecter_test.cpp:28:23: note:   by ‘testing::internal::Function<void(const std::__cxx11::basic_string<char>&, const std::__cxx11::basic_string<char>&, long unsigned int, long unsigned int, short unsigned int)>::Result MockHostEffecterParser::createHostEffecterMatch(testing::internal::ElemFromList<0, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, long unsigned int, short unsigned int>::type, testing::internal::ElemFromList<1, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, long unsigned int, short unsigned int>::type, testing::internal::ElemFromList<2, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, long unsigned int, short unsigned int>::type, testing::internal::ElemFromList<3, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, long unsigned int, short unsigned int>::type, testing::internal::ElemFromList<4, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, long unsigned int, short unsigned int>::type) const’
   28 |     MOCK_METHOD(void, createHostEffecterMatch,
      |                       ^~~~~~~~~~~~~~~~~~~~~~~
../subprojects/googletest/googlemock/include/gmock/internal/gmock-pp.h:17:31: note: in definition of macro ‘GMOCK_PP_IDENTITY’
   17 | #define GMOCK_PP_IDENTITY(_1) _1
      |                               ^~
../subprojects/googletest/googlemock/include/gmock/gmock-function-mocker.h:132:3: note: in expansion of macro ‘GMOCK_INTERNAL_MOCK_METHOD_IMPL’
  132 |   GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                         \
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../subprojects/googletest/googlemock/include/gmock/internal/gmock-pp.h:152:39: note: in expansion of macro ‘GMOCK_INTERNAL_MOCK_METHOD_ARG_4’
  152 | #define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2
      |                                       ^~
../subprojects/googletest/googlemock/include/gmock/gmock-function-mocker.h:114:3: note: in expansion of macro ‘GMOCK_PP_VARIADIC_CALL’
  114 |   GMOCK_PP_VARIADIC_CALL(GMOCK_INTERNAL_MOCK_METHOD_ARG_, __VA_ARGS__) \
      |   ^~~~~~~~~~~~~~~~~~~~~~
../host-bmc/test/dbus_to_host_effecter_test.cpp:28:5: note: in expansion of macro ‘MOCK_METHOD’
   28 |     MOCK_METHOD(void, createHostEffecterMatch,
      |     ^~~~~~~~~~~
../host-bmc/dbus_to_host_effecters.hpp:145:9: error: ‘virtual int pldm::host_effecters::HostEffecterParser::setHostStateEffecter(size_t, std::vector<state_field_for_state_effecter_set>&, uint16_t)’ was hidden [-Werror=overloaded-virtual=]
  145 |         setHostStateEffecter(size_t effecterInfoIndex,
      |         ^~~~~~~~~~~~~~~~~~~~
../host-bmc/test/dbus_to_host_effecter_test.cpp:24:23: note:   by ‘testing::internal::Function<void(long unsigned int, std::vector<state_field_for_state_effecter_set>&, short unsigned int)>::Result MockHostEffecterParser::setHostStateEffecter(testing::internal::ElemFromList<0, long unsigned int, std::vector<state_field_for_state_effecter_set, std::allocator<state_field_for_state_effecter_set> >&, short unsigned int>::type, testing::internal::ElemFromList<1, long unsigned int, std::vector<state_field_for_state_effecter_set, std::allocator<state_field_for_state_effecter_set> >&, short unsigned int>::type, testing::internal::ElemFromList<2, long unsigned int, std::vector<state_field_for_state_effecter_set, std::allocator<state_field_for_state_effecter_set> >&, short unsigned int>::type) const’
   24 |     MOCK_METHOD(void, setHostStateEffecter,
      |                       ^~~~~~~~~~~~~~~~~~~~
../subprojects/googletest/googlemock/include/gmock/internal/gmock-pp.h:17:31: note: in definition of macro ‘GMOCK_PP_IDENTITY’
   17 | #define GMOCK_PP_IDENTITY(_1) _1
      |                               ^~
../subprojects/googletest/googlemock/include/gmock/gmock-function-mocker.h:132:3: note: in expansion of macro ‘GMOCK_INTERNAL_MOCK_METHOD_IMPL’
  132 |   GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                         \
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../subprojects/googletest/googlemock/include/gmock/internal/gmock-pp.h:152:39: note: in expansion of macro ‘GMOCK_INTERNAL_MOCK_METHOD_ARG_4’
  152 | #define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2
      |                                       ^~
../subprojects/googletest/googlemock/include/gmock/gmock-function-mocker.h:114:3: note: in expansion of macro ‘GMOCK_PP_VARIADIC_CALL’
  114 |   GMOCK_PP_VARIADIC_CALL(GMOCK_INTERNAL_MOCK_METHOD_ARG_, __VA_ARGS__) \
      |   ^~~~~~~~~~~~~~~~~~~~~~
../host-bmc/test/dbus_to_host_effecter_test.cpp:24:5: note: in expansion of macro ‘MOCK_METHOD’
   24 |     MOCK_METHOD(void, setHostStateEffecter,
      |     ^~~~~~~~~~~
```

The warning was triggered by g++ on Fedora 38:

```
$ ( . /etc/os-release && echo $PRETTY_NAME )
Fedora Linux 38 (Server Edition)
$ g++ --version
g++ (GCC) 13.0.1 20230401 (Red Hat 13.0.1-0)
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I138e73d733f9c220e62534815b5a2d1ddcb85b8a
