The current unit tests rely on monitor.o not being linked, such that the monitor stubs get linked instead. Since error_vprintf is in monitor.o this allows a stub error_vprintf impl to be used that calls g_test_message. This takes a different approach, with error_vprintf moving back to error-report.c such that it is always linked into the tests. The monitor_vprintf() stub is then changed to use g_test_message if QTEST_SILENT_ERRORS is set, otherwise it will return -1 and trigger error_vprintf to call vfprintf. The end result is functionally equivalent for the purposes of the unit tests. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
35 lines
736 B
C
35 lines
736 B
C
#include "qemu/osdep.h"
|
|
#include "monitor/monitor.h"
|
|
#include "qapi/qapi-emit-events.h"
|
|
|
|
Monitor *monitor_cur(void)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
Monitor *monitor_set_cur(Coroutine *co, Monitor *mon)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
void qapi_event_emit(QAPIEvent event, QDict *qdict)
|
|
{
|
|
}
|
|
|
|
int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
|
|
{
|
|
/*
|
|
* Pretend 'g_test_message' is our monitor console to
|
|
* stop the caller sending messages to stderr
|
|
*/
|
|
if (g_test_initialized() && !g_test_subprocess() &&
|
|
getenv("QTEST_SILENT_ERRORS")) {
|
|
char *msg = g_strdup_vprintf(fmt, ap);
|
|
g_test_message("%s", msg);
|
|
size_t ret = strlen(msg);
|
|
g_free(msg);
|
|
return ret;
|
|
}
|
|
return -1;
|
|
}
|