• E
    tests: guarantee abs_srcdir in all C tests · 0aa873d7
    Eric Blake 提交于
    While trying to debug a failure of virpcitest during 'make distcheck',
    I noticed that with a VPATH build, 'cd tests; ./virpcitest' fails for
    an entirely different reason.  To reproduce the distcheck failure, I
    had to run 'cd tests; abs_srcdir=/path/to/src ./virpcitest'.  But we
    document in HACKING that all of our tests are supposed to be runnable
    without requiring extra environment variables.
    
    The solution: hardcode the location of srcdir into the just-built
    binaries, rather than requiring make to prepopulate environment
    variables.  With this, './virpcitest' passes even in a VPATH build
    (provided that $(srcdir) is writable; a followup patch will fix the
    conditions required by 'make distcheck').  [Note: the makefile must
    still pass on directory variables to the test environment of shell
    scripts, since those aren't compiled.  So while this solves the case
    of a compiled test, it still requires environment variables to pass
    a VPATH build of any shell script test case that relies on srcdir.]
    
    * tests/Makefile.am (AM_CFLAGS): Define abs_srcdir in all compiled
    tests.
    * tests/testutils.h (abs_srcdir): Quit declaring.
    * tests/testutils.c (virtTestMain): Rely on define rather than
    environment variable.
    * tests/virpcimock.c (pci_device_new_from_stub): Rely on define.
    * tests/cputest.c (mymain): Adjust abs_top_srcdir default.
    * tests/qemuxml2argvtest.c (mymain): Likewise.
    * tests/qemuxmlnstest.c (mymain): Likewise.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    0aa873d7
cputest.c 19.4 KB