In cases when we call a libvirt helper which reports an error the error
would be hidden unless libvirt library debug is on. This produces a lot
of output and is hard to debug.
The helper provides a way to dispatch the libvirt error in specific
cases sice we do already dispatch it in case when virTestRun is used.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
tests/testutils.c | 29 +++++++++++++++++++++++++----
tests/testutils.h | 1 +
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/tests/testutils.c b/tests/testutils.c
index f5d8487736..d9c0d5abbe 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -81,6 +81,30 @@ virTestGetFlag(const char *name)
}
+/**
+ * virTestPropagateLibvirtError:
+ *
+ * In cases when a libvirt utility function which reports libvirt errors is
+ * used in the test suite outside of the virTestRun call and the failure of such
+ * a function would cause an test failure the error message reported by that
+ * function will not be propagated to the user as the error callback is not
+ * invoked.
+ *
+ * In cases when the error message may be beneficial in debugging this helper
+ * provides means to dispatch the errors including invocation of the error
+ * callback.
+ */
+void
+virTestPropagateLibvirtError(void)
+{
+ if (virGetLastErrorCode() == VIR_ERR_OK)
+ return;
+
+ if (virTestGetVerbose() || virTestGetDebug())
+ virDispatchError(NULL);
+}
+
+
/*
* Runs test
*
@@ -112,10 +136,7 @@ virTestRun(const char *title,
virResetLastError();
ret = body(data);
- if (virGetLastErrorCode()) {
- if (virTestGetVerbose() || virTestGetDebug())
- virDispatchError(NULL);
- }
+ virTestPropagateLibvirtError();
if (virTestGetVerbose()) {
if (ret == 0)
diff --git a/tests/testutils.h b/tests/testutils.h
index 0088251dca..76090c5522 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -84,6 +84,7 @@ unsigned int virTestGetDebug(void);
unsigned int virTestGetVerbose(void);
unsigned int virTestGetExpensive(void);
unsigned int virTestGetRegenerate(void);
+void virTestPropagateLibvirtError(void);
#define VIR_TEST_DEBUG(fmt, ...) \
do { \
--
2.23.0
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list