Merge in updated yatl.
[m6w6/libmemcached] / libtest / runner.cc
index 01cb99a8d690d80d6c8324af878c26e1b18deec0..456af7d1c64a44d6db8e9cba21110e8c07cd5781 100644 (file)
  *
  */
 
-#include <config.h>
+#include "libtest/yatlcon.h"
 #include <libtest/common.h>
 
 namespace libtest {
 
-Runner::Runner()
+Runner::Runner() :
+  _servers(NULL)
 {
 }
 
@@ -52,7 +53,22 @@ test_return_t Runner::run(test_callback_fn* func, void *object)
 {
   if (func)
   {
-    return func(object);
+    try {
+      return func(object);
+    }
+    catch (libtest::__skipped)
+    {
+      return TEST_SKIPPED;
+    }
+    catch (libtest::__failure e)
+    {
+      libtest::stream::make_cerr(e.file(), e.line(), e.func()) << e.what();
+      return TEST_FAILURE;
+    }
+    catch (libtest::__success)
+    {
+      return TEST_SUCCESS;
+    }
   }
 
   return TEST_SUCCESS;
@@ -62,7 +78,22 @@ test_return_t Runner::pre(test_callback_fn* func, void *object)
 {
   if (func)
   {
-    return func(object);
+    try {
+      return func(object);
+    }
+    catch (libtest::__skipped)
+    {
+      return TEST_SKIPPED;
+    }
+    catch (libtest::__failure e)
+    {
+      libtest::stream::make_cerr(e.file(), e.line(), e.func()) << e.what();
+      return TEST_FAILURE;
+    }
+    catch (libtest::__success)
+    {
+      return TEST_SUCCESS;
+    }
   }
 
   return TEST_SUCCESS;
@@ -72,7 +103,22 @@ test_return_t Runner::post(test_callback_fn* func, void *object)
 {
   if (func)
   {
-    return func(object);
+    try {
+      return func(object);
+    }
+    catch (libtest::__skipped)
+    {
+      return TEST_SKIPPED;
+    }
+    catch (libtest::__failure e)
+    {
+      libtest::stream::make_cerr(e.file(), e.line(), e.func()) << e.what();
+      return TEST_FAILURE;
+    }
+    catch (libtest::__success)
+    {
+      return TEST_SUCCESS;
+    }
   }
 
   return TEST_SUCCESS;