test: Store path to the test executable in Test class

Store the path to the test executable, found in argv[0], in the Test
instance. This can be useful for tests that need to fork processes.

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:02:27 +02:00
parent 68e4f70a69
commit b24d9c4413
6 changed files with 29 additions and 8 deletions

View file

@ -501,5 +501,7 @@ int main(int argc, char **argv)
return slave.run(ipcfd); return slave.run(ipcfd);
} }
return UnixSocketTest().execute(); UnixSocketTest test;
test.setArgs(argc, argv);
return test.execute();
} }

View file

@ -227,5 +227,7 @@ int main(int argc, char **argv)
return slave.run(ipcfd); return slave.run(ipcfd);
} }
return UnixSocketTestIPC().execute(); UnixSocketTestIPC test;
test.setArgs(argc, argv);
return test.execute();
} }

View file

@ -17,6 +17,11 @@ Test::~Test()
{ {
} }
void Test::setArgs([[maybe_unused]] int argc, char *argv[])
{
self_ = argv[0];
}
int Test::execute() int Test::execute()
{ {
int ret; int ret;

View file

@ -8,6 +8,7 @@
#pragma once #pragma once
#include <sstream> #include <sstream>
#include <string>
enum TestStatus { enum TestStatus {
TestPass = 0, TestPass = 0,
@ -21,16 +22,24 @@ public:
Test(); Test();
virtual ~Test(); virtual ~Test();
void setArgs(int argc, char *argv[]);
int execute(); int execute();
const std::string &self() const { return self_; }
protected: protected:
virtual int init() { return 0; } virtual int init() { return 0; }
virtual int run() = 0; virtual int run() = 0;
virtual void cleanup() {} virtual void cleanup() {}
private:
std::string self_;
}; };
#define TEST_REGISTER(klass) \ #define TEST_REGISTER(Klass) \
int main([[maybe_unused]] int argc, [[maybe_unused]] char *argv[]) \ int main(int argc, char *argv[]) \
{ \ { \
return klass().execute(); \ Klass klass; \
klass.setArgs(argc, argv); \
return klass.execute(); \
} }

View file

@ -154,5 +154,7 @@ int main(int argc, char **argv)
return child.run(status, num); return child.run(status, num);
} }
return LogProcessTest().execute(); LogProcessTest test;
test.setArgs(argc, argv);
return test.execute();
} }

View file

@ -9,7 +9,6 @@
#include <unistd.h> #include <unistd.h>
#include <vector> #include <vector>
#include <libcamera/base/event_dispatcher.h> #include <libcamera/base/event_dispatcher.h>
#include <libcamera/base/thread.h> #include <libcamera/base/thread.h>
#include <libcamera/base/timer.h> #include <libcamera/base/timer.h>
@ -106,5 +105,7 @@ int main(int argc, char **argv)
return child.run(status); return child.run(status);
} }
return ProcessTest().execute(); ProcessTest test;
test.setArgs(argc, argv);
return test.execute();
} }