test: Replace "/proc/self/exe" with path to test binary

When tests are run under valgrind, /proc/self/exe points to valgrind,
not to the test binary. This results in failures for tests that need to
fork processes. Fix it by replacing "/proc/self/exe" with the path to
the test binary.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-11-29 23:16:35 +02:00
parent b24d9c4413
commit 59002a9e9d
5 changed files with 7 additions and 8 deletions

View file

@ -209,8 +209,7 @@ protected:
if (!pid_) {
std::string arg = std::to_string(fd);
execl("/proc/self/exe", "/proc/self/exe",
arg.c_str(), nullptr);
execl(self().c_str(), self().c_str(), arg.c_str(), nullptr);
/* Only get here if exec fails. */
exit(TestFail);
@ -464,7 +463,7 @@ private:
int prepareFDs(IPCUnixSocket::Payload *message, unsigned int num)
{
int fd = open("/proc/self/exe", O_RDONLY);
int fd = open(self().c_str(), O_RDONLY);
if (fd < 0)
return fd;