[PATCH 0/3] Fix stat mocks on macOS

Hi, The series partially addresses https://gitlab.com/libvirt/libvirt/-/issues/58 by enabling stat mocks and that fixes qemufirmwaretest, domaincapstest and qemuvhostusertest. Thanks, Roman Roman Bolshakov (3): tests: Fix lstat() mock initialization on macOS tests: Re-introduce stat/lstat mocks on macOS tests: Use flat namespace for qemu test driver tests/meson.build | 1 + tests/virmockstathelpers.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) -- 2.28.0

There is a typo that prevents initialization of real_lstat. Fixes: d6b17edd5163 ("tests: Lookup extended stat/lstat in mocks") Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> --- tests/virmockstathelpers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/virmockstathelpers.c b/tests/virmockstathelpers.c index dde9a61c6f..a251fc1267 100644 --- a/tests/virmockstathelpers.c +++ b/tests/virmockstathelpers.c @@ -153,7 +153,7 @@ static void virMockStatInit(void) #endif #ifdef MOCK_LSTAT # ifdef __APPLE__ - VIR_MOCK_REAL_INIT_ALIASED(stat, "lstat$INODE64"); + VIR_MOCK_REAL_INIT_ALIASED(lstat, "lstat$INODE64"); # else VIR_MOCK_REAL_INIT(lstat); # endif -- 2.28.0

Commit d6b17edd5163 ("tests: Lookup extended stat/lstat in mocks") adds support for mocking of stat() and lstat() on macOS. The change was broken because virmockstathelpers.c only follows glibc logic and MOCK_STAT and MOCK_LSTAT are not getting defined on macOS. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> --- tests/virmockstathelpers.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/virmockstathelpers.c b/tests/virmockstathelpers.c index a251fc1267..5c9759551d 100644 --- a/tests/virmockstathelpers.c +++ b/tests/virmockstathelpers.c @@ -55,6 +55,10 @@ * Unfortunately, because we are trying to mock replace the C library, * we need to know about this internal impl detail. * + * On macOS stat() and lstat() are resolved to _stat$INODE64 and + * _lstat$INODE64, respectively. stat(2) man page also declares that + * stat64(), lstat64() and fstat64() are deprecated. + * * With all this in mind the list of functions we have to mock will depend * on several factors * @@ -68,8 +72,10 @@ -#if defined(WITH_STAT) && !defined(WITH___XSTAT) && !defined(WITH_STAT64) -# define MOCK_STAT +#if defined(WITH_STAT) +# if !defined(WITH___XSTAT) && !defined(WITH_STAT64) || defined(__APPLE__) +# define MOCK_STAT +# endif #endif #if defined(WITH_STAT64) && !defined(WITH___XSTAT64) # define MOCK_STAT64 @@ -80,8 +86,10 @@ #if defined(WITH___XSTAT64) # define MOCK___XSTAT64 #endif -#if defined(WITH_LSTAT) && !defined(WITH___LXSTAT) && !defined(WITH_LSTAT64) -# define MOCK_LSTAT +#if defined(WITH_LSTAT) +# if !defined(WITH___LXSTAT) && !defined(WITH_LSTAT64) || defined(__APPLE__) +# define MOCK_LSTAT +# endif #endif #if defined(WITH_LSTAT64) && !defined(WITH___LXSTAT64) # define MOCK_LSTAT64 -- 2.28.0

The change re-introduces f6d6086dbfec ("tests: Make references to global symbols indirect in test drivers") that got lost during meson conversion. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> --- tests/meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/meson.build b/tests/meson.build index 790033e243..a59002c083 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -185,6 +185,7 @@ if conf.has('WITH_QEMU') test_qemu_driver_lib = shared_library( 'test_qemu_driver', [ qemu_dtrace_gen_objects ], + link_args: [ libvirt_flat_namespace ], link_whole: [ qemu_driver_impl ], link_with: [ libvirt_lib ], ) -- 2.28.0

On 10/18/20 5:30 PM, Roman Bolshakov wrote:
Hi,
The series partially addresses https://gitlab.com/libvirt/libvirt/-/issues/58 by enabling stat mocks and that fixes qemufirmwaretest, domaincapstest and qemuvhostusertest.
Thanks, Roman
Roman Bolshakov (3): tests: Fix lstat() mock initialization on macOS tests: Re-introduce stat/lstat mocks on macOS tests: Use flat namespace for qemu test driver
tests/meson.build | 1 + tests/virmockstathelpers.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> and pushed. Michal
participants (2)
-
Michal Privoznik
-
Roman Bolshakov