Merge in updated yatl.
[m6w6/libmemcached] / libtest / runner.cc
index 5f1acf56aacce795bdb42d27542541a907c002ad..456af7d1c64a44d6db8e9cba21110e8c07cd5781 100644 (file)
@@ -34,7 +34,7 @@
  *
  */
 
-#include "mem_config.h"
+#include "libtest/yatlcon.h"
 #include <libtest/common.h>
 
 namespace libtest {
@@ -53,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;
@@ -63,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;
@@ -73,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;