From 59002a9e9d84417197999391c7d8c6af620fc1fb Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 29 Nov 2021 23:16:35 +0200 Subject: 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 Reviewed-by: Jacopo Mondi Reviewed-by: Kieran Bingham --- test/file.cpp | 4 ++-- test/ipc/unixsocket.cpp | 5 ++--- test/ipc/unixsocket_ipc.cpp | 2 +- test/log/log_process.cpp | 2 +- test/process/process_test.cpp | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/file.cpp b/test/file.cpp index 9ac151c9..5c978ebf 100644 --- a/test/file.cpp +++ b/test/file.cpp @@ -180,7 +180,7 @@ protected: } /* Test size(). */ - file.setFileName("/proc/self/exe"); + file.setFileName(self()); if (file.size() >= 0) { cerr << "File has valid size before open" << endl; @@ -277,7 +277,7 @@ protected: file.close(); /* Test mapping and unmapping. */ - file.setFileName("/proc/self/exe"); + file.setFileName(self()); file.open(File::OpenModeFlag::ReadOnly); Span data = file.map(); diff --git a/test/ipc/unixsocket.cpp b/test/ipc/unixsocket.cpp index 4fc1c10a..b3568c06 100644 --- a/test/ipc/unixsocket.cpp +++ b/test/ipc/unixsocket.cpp @@ -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; diff --git a/test/ipc/unixsocket_ipc.cpp b/test/ipc/unixsocket_ipc.cpp index 2e3b52ca..1a8d06a1 100644 --- a/test/ipc/unixsocket_ipc.cpp +++ b/test/ipc/unixsocket_ipc.cpp @@ -173,7 +173,7 @@ protected: int run() { - ipc_ = std::make_unique("", "/proc/self/exe"); + ipc_ = std::make_unique("", self().c_str()); if (!ipc_->isConnected()) { cerr << "Failed to create IPCPipe" << endl; return TestFail; diff --git a/test/log/log_process.cpp b/test/log/log_process.cpp index ca835133..2484c58f 100644 --- a/test/log/log_process.cpp +++ b/test/log/log_process.cpp @@ -74,7 +74,7 @@ protected: vector args; args.push_back(to_string(exitCode)); args.push_back(to_string(num_)); - int ret = proc_.start("/proc/self/exe", args); + int ret = proc_.start(self(), args); if (ret) { cerr << "failed to start process" << endl; return TestFail; diff --git a/test/process/process_test.cpp b/test/process/process_test.cpp index 96bea17f..b410756b 100644 --- a/test/process/process_test.cpp +++ b/test/process/process_test.cpp @@ -55,7 +55,7 @@ protected: proc_.kill(); /* Test starting the process and retrieving the exit code. */ - int ret = proc_.start("/proc/self/exe", args); + int ret = proc_.start(self(), args); if (ret) { cerr << "failed to start process" << endl; return TestFail; -- cgit v1.2.1