On 05/15/2018 01:57 PM, Daniel P. Berrangé wrote: > On Tue, May 15, 2018 at 01:45:33PM +0200, Michal Privoznik wrote: >> In a lot of our mocks (if not all of them) we use our internal >> APIs (e.g. VIR_ALLOC). So far, we're relying on test binary that >> links with the mock to drag in libvirt.so. Well, this works only >> partially. Firstly, whatever binary we execute from tests will >> fail (e.g. as Martin reported on the list ./qemucapsprobe fails >> to execute qemu). Secondly, if there's a program that tries to >> validate linking (like valgrind is doing) it fails because of >> unresolved symbols. > > Hmm, that first issue suggests we are not unsetting LD_PRELOAD > before executing programs. Indeed looking at git only the > qemuargv2xmltest and qemuxml2argvtest.c are unsetting LD_PRELOAD. > > Seems we should make virTestMain unset LD_PRELOAD globally in > some way. Yeah, that's what I though of too. But I'm not quite sure how to do that. > > NB, I'm not objecting to this patch, just saying we shoudl fix > the LD_PRELOAD regardless. > >> Because of that we have to link our mocks with libvirt.so. > > It feels rather recursive to me but if it works... Well, yes and no. For instance if I'd have a small binary that say attaches/detaches PCI devices on the host, I can reuse our virpcimock to test it instead of having the binary link with libvirt.so (assume it doesn't call any libvirt API). > >> >> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> >> --- >> tests/Makefile.am | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/tests/Makefile.am b/tests/Makefile.am >> index 621480dd0c..ac92190845 100644 >> --- a/tests/Makefile.am >> +++ b/tests/Makefile.am >> @@ -81,7 +81,8 @@ LDADDS = \ >> ../src/libvirt.la >> >> MOCKLIBS_LIBS = \ >> - $(GNULIB_LIBS) >> + $(GNULIB_LIBS) \ >> + ../src/libvirt.la >> >> EXTRA_DIST = \ >> .valgrind.supp \ > > Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> Pushed, thanks. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list