summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2012-01-20 14:48:20 +0000
committerTomeu Vizoso <tomeu.vizoso@collabora.com>2012-01-24 15:47:57 +0100
commit1ab4040596dfb4b0b38d547711990ec294771f27 (patch)
treeb9b2c396f85292bf9f0899b0603ff023915ed71c
parent60533d4528690df72287d1fe0dde9e0257081dd3 (diff)
downloadgobject-introspection-1ab4040596dfb4b0b38d547711990ec294771f27.tar.gz
tests: add test functions which return GErrors
GStreamer has the following method: void gst_message_parse_error ( GstMessage *message, GError **error, gchar **debug_message); This patch adds a number of test functions with similar signatures which do not follow the standard "throws GError" pattern. https://bugzilla.gnome.org/show_bug.cgi?id=666098
-rw-r--r--tests/gimarshallingtests.c57
-rw-r--r--tests/gimarshallingtests.h4
2 files changed, 61 insertions, 0 deletions
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c
index f641c383..712e5080 100644
--- a/tests/gimarshallingtests.c
+++ b/tests/gimarshallingtests.c
@@ -3972,6 +3972,63 @@ gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error)
GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
}
+/**
+ * gi_marshalling_tests_gerror_out:
+ * @error: (out) (allow-none) (transfer full): location for the GError.
+ * @debug: (out) (allow-none) (transfer full): location for the debug message
+ *
+ * Inspired by gst_message_parse_error.
+ */
+void
+gi_marshalling_tests_gerror_out(GError **error, gchar **debug)
+{
+ GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ g_set_error_literal(error,
+ quark,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+
+ if (debug != NULL) {
+ *debug = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE);
+ }
+}
+
+/**
+ * gi_marshalling_tests_gerror_out_transfer_none:
+ * @err: (out) (allow-none) (transfer none): location for the GError.
+ * @debug: (out) (allow-none) (transfer none): location for the debug message
+ *
+ * A variant of gi_marshalling_tests_gerror_out() which returns data the caller
+ * must not free.
+ */
+void
+gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug)
+{
+ static GError error = { 0,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE };
+ error.domain = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ *err = &error;
+ *debug = GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE;
+}
+
+/**
+ * gi_marshalling_tests_gerror_return:
+ *
+ * Yet another variant of gi_marshalling_tests_gerror_out().
+ *
+ * Returns: (transfer full): a GError
+ */
+GError *
+gi_marshalling_tests_gerror_return()
+{
+ GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+
+ return g_error_new(quark,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+}
+
static GIMarshallingTestsOverridesStruct *
gi_marshalling_tests_overrides_struct_copy (GIMarshallingTestsOverridesStruct *struct_)
{
diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h
index 5965a82c..e80a0e5e 100644
--- a/tests/gimarshallingtests.h
+++ b/tests/gimarshallingtests.h
@@ -801,9 +801,13 @@ gint gi_marshalling_tests_int_return_out (gint *int_);
#define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN "gi-marshalling-tests-gerror-domain"
#define GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE 5
#define GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE "gi-marshalling-tests-gerror-message"
+#define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE "we got an error, life is shit"
void gi_marshalling_tests_gerror(GError **error);
void gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error);
+void gi_marshalling_tests_gerror_out(GError **error, gchar **debug);
+void gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug);
+GError *gi_marshalling_tests_gerror_return();
/* Overrides */