X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fcmdline.h;h=460a520cf67f97e75092f0b45d4362e97bd69f49;hb=858824dce02bade6464c404beef41da9321d58ef;hp=46f7ad78a886f2997ad3e588920b9da9dd3f832b;hpb=f47caf2833675cce0b62a6e4ffd6764c1490a8b4;p=m6w6%2Flibmemcached diff --git a/libtest/cmdline.h b/libtest/cmdline.h index 46f7ad78..460a520c 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -39,8 +39,21 @@ #include // http://www.gnu.org/software/automake/manual/automake.html#Using-the-TAP-test-protocol -#define EXIT_SKIP 77 -#define EXIT_FATAL 77 +#ifndef EXIT_SKIP +# define EXIT_SKIP 77 +#endif + +#ifndef EXIT_FATAL +# define EXIT_FATAL 99 +#endif + +#ifndef EX_NOEXEC +# define EX_NOEXEC 126 +#endif + +#ifndef EX_NOTFOUND +# define EX_NOTFOUND 127 +#endif namespace libtest { @@ -53,7 +66,11 @@ public: enum error_t { SUCCESS= EXIT_SUCCESS, FAILURE= EXIT_FAILURE, - INVALID= 127 + UNINITIALIZED, + SIGTERM_KILLED, + UNKNOWN, + UNKNOWN_SIGNAL, + INVALID_POSIX_SPAWN= 127 }; static const char* toString(error_t arg) @@ -63,12 +80,22 @@ public: case Application::SUCCESS: return "EXIT_SUCCESS"; + case Application::UNINITIALIZED: + return "UNINITIALIZED"; + + case Application::SIGTERM_KILLED: + return "Exit happened via SIGTERM"; + case Application::FAILURE: return "EXIT_FAILURE"; - case Application::INVALID: - return "127"; + case Application::UNKNOWN_SIGNAL: + return "Exit happened via a signal which was not SIGTERM"; + + case Application::INVALID_POSIX_SPAWN: + return "127: Invalid call to posix_spawn()"; + case Application::UNKNOWN: default: break; } @@ -111,7 +138,6 @@ public: void add_option(const std::string&, const std::string&); void add_long_option(const std::string& option_name, const std::string& option_value); error_t run(const char *args[]= NULL); - error_t wait(bool nohang= true); Application::error_t join(); libtest::vchar_t stdout_result() const @@ -141,7 +167,7 @@ public: std::string print(); - void use_valgrind(bool arg= true) + void use_valgrind(bool arg) { _use_valgrind= arg; } @@ -151,12 +177,12 @@ public: bool slurp(); void murder(); - void use_gdb(bool arg= true) + void use_gdb(bool arg) { _use_gdb= arg; } - void use_ptrcheck(bool arg= true) + void use_ptrcheck(bool arg) { _use_ptrcheck= arg; } @@ -201,6 +227,9 @@ private: pid_t _pid; libtest::vchar_t _stdout_buffer; libtest::vchar_t _stderr_buffer; + int _status; + pthread_t _thread; + error_t _app_exit_state; }; static inline std::ostream& operator<<(std::ostream& output, const enum Application::error_t &arg)