I use gtest and gmock for my unit tests, I mock unistd
read/write functions for input, sending and receiving testing(C function Gmock):
class MockSysFuncs {
public:
MOCK_METHOD3(read, ssize_t(int, char*, size_t));
MOCK_METHOD3(write, ssize_t(int, const char*, size_t));
sem_t readSem;
static std::shared_ptr<MockSysFuncs> _mockSysFuncObj;
};
ssize_t read(int __fd, void* __buf, size_t __nbytes);
ssize_t write(int __fd, const void* __buf, size_t __n);
Functions implementation (in the mock cpp file):
ssize_t read(int __fd, void *__buf, size_t __nbytes) {
sem_wait(&MockSysFuncs::_mockSysFuncObj->readSem);
return MockSysFuncs::_mockSysFuncObj->read(__fd, static_cast<char *>(__buf), __nbytes);
}
ssize_t write(int __fd, const void *__buf, size_t __n) {
return MockSysFuncs::_mockSysFuncObj->write(__fd, static_cast<const char *>(__buf), __n);
}
On compilation, I receive this warnings:
warning: redundant redeclaration of 'ssize_t read(int, void*, size_t)' in same scope [-Wredundant-decls]
168 | ssize_t read(int __fd, void* __buf, size_t __nbytes);
/usr/include/unistd.h:360:16: note: previous declaration of 'ssize_t read(int, void*, size_t)'
360 | extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
warning: redundant redeclaration of 'ssize_t write(int, const void*, size_t)' in same scope [-Wredundant-decls]
169 | ssize_t write(int __fd, const void* __buf, size_t __n);
/usr/include/unistd.h:366:16: note: previous declaration of 'ssize_t write(int, const void*, size_t)'
366 | extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
Is there a way to solve this warnings without removing the -Wredundant-decls
compilation flag?