X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fcmdline.h;h=46f7ad78a886f2997ad3e588920b9da9dd3f832b;hb=c625134668213eff97a837da54daec4425710d67;hp=700647d32aff200afc01cbfa629951a060832d84;hpb=cf55f693c7fc7693afbb4594d97d23795cf7f2a0;p=m6w6%2Flibmemcached diff --git a/libtest/cmdline.h b/libtest/cmdline.h index 700647d3..46f7ad78 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -38,6 +38,10 @@ #include +// http://www.gnu.org/software/automake/manual/automake.html#Using-the-TAP-test-protocol +#define EXIT_SKIP 77 +#define EXIT_FATAL 77 + namespace libtest { class Application { @@ -52,6 +56,26 @@ public: INVALID= 127 }; + static const char* toString(error_t arg) + { + switch (arg) + { + case Application::SUCCESS: + return "EXIT_SUCCESS"; + + case Application::FAILURE: + return "EXIT_FAILURE"; + + case Application::INVALID: + return "127"; + + default: + break; + } + + return "EXIT_UNKNOWN"; + } + class Pipe { public: Pipe(int); @@ -88,6 +112,7 @@ public: 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 { @@ -172,7 +197,7 @@ private: Pipe stdin_fd; Pipe stdout_fd; Pipe stderr_fd; - char * * built_argv; + libtest::vchar_ptr_t built_argv; pid_t _pid; libtest::vchar_t _stdout_buffer; libtest::vchar_t _stderr_buffer; @@ -180,25 +205,7 @@ private: static inline std::ostream& operator<<(std::ostream& output, const enum Application::error_t &arg) { - switch (arg) - { - case Application::SUCCESS: - output << "EXIT_SUCCESS"; - break; - - case Application::FAILURE: - output << "EXIT_FAILURE"; - break; - - case Application::INVALID: - output << "127"; - break; - - default: - output << "EXIT_UNKNOWN"; - } - - return output; + return output << Application::toString(arg); } int exec_cmdline(const std::string& executable, const char *args[], bool use_libtool= false);