cmake: build&run tests (sortof)
[awesomized/libmemcached] / libtest / cmdline.h
index ae4d9ba1d67751f73315277095642842d2d53ed7..244c6464ff933eafb435e43a0e00140ebc596b49 100644 (file)
 #include <spawn.h>
 
 // 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
+# define EX_NOEXEC 126
 #endif
 
 #ifndef EX_NOTFOUND
-#  define EX_NOTFOUND 127
+# define EX_NOTFOUND 127
 #endif
 
 namespace libtest {
@@ -145,6 +150,11 @@ public:
     return _stdout_buffer.size();
   }
 
+  const char* stdout_c_str() const
+  {
+    return &_stdout_buffer[0];
+  }
+
   libtest::vchar_t stderr_result() const
   {
     return _stderr_buffer;
@@ -162,7 +172,7 @@ public:
 
   std::string print();
 
-  void use_valgrind(bool arg= true)
+  void use_valgrind(bool arg)
   {
     _use_valgrind= arg;
   }
@@ -170,14 +180,22 @@ public:
   bool check() const;
 
   bool slurp();
+  std::pair<std::string, std::string> output();
   void murder();
 
-  void use_gdb(bool arg= true)
+  void clear()
+  {
+    slurp();
+    _stdout_buffer.clear();
+    _stderr_buffer.clear();
+  }
+
+  void use_gdb(bool arg)
   {
     _use_gdb= arg;
   }
 
-  void use_ptrcheck(bool arg= true)
+  void use_ptrcheck(bool arg)
   {
     _use_ptrcheck= arg;
   }
@@ -202,6 +220,7 @@ public:
 private:
   void create_argv(const char *args[]);
   void delete_argv();
+  void add_to_build_argv(const char*);
 
 private:
   const bool _use_libtool;
@@ -234,7 +253,4 @@ static inline std::ostream& operator<<(std::ostream& output, const enum Applicat
 
 int exec_cmdline(const std::string& executable, const char *args[], bool use_libtool= false);
 
-const char *gearmand_binary(); 
-const char *drizzled_binary();
-
 }