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

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

View file

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