[librsvg] tests/render-crash: New test for things that crash the rendering code
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] tests/render-crash: New test for things that crash the rendering code
- Date: Wed, 11 Jan 2017 22:00:35 +0000 (UTC)
commit 3a3becd2045ed6b5e264bdfbd7c53c799e5abe7c
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Jan 11 15:50:26 2017 -0600
tests/render-crash: New test for things that crash the rendering code
Sometimes we don't have rendering bugs in the generated image, but SVG
files that just crash the rendering code. Add a test for this. If you
put a SVG under tests/fixtures/render-crash, that file is expected to
render and *not* crash. The actual rendered image is ignored.
tests/Makefile.am | 6 ++++
tests/render-crash.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7f9b24e..babd051 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -4,6 +4,7 @@ test_programs = \
rsvg-test \
crash \
styles \
+ render-crash \
dimensions
test_utils_common_sources = \
@@ -18,6 +19,10 @@ crash_SOURCES = \
crash.c \
$(test_utils_common_sources)
+render_crash_SOURCES = \
+ render-crash.c \
+ $(test_utils_common_sources)
+
styles_SOURCES = \
styles.c \
$(test_utils_common_sources)
@@ -47,6 +52,7 @@ dist_installed_test_data = \
$(wildcard $(srcdir)/fixtures/reftests/bugs/*.png) \
$(wildcard $(srcdir)/fixtures/reftests/svg1.1/*.svg) \
$(wildcard $(srcdir)/fixtures/reftests/svg1.1/*.png) \
+ $(wildcard $(srcdir)/fixtures/render-crash/*.svg) \
fixtures/dimensions/bug564527.svg \
fixtures/dimensions/bug614018.svg \
fixtures/dimensions/bug612951.svg \
diff --git a/tests/render-crash.c b/tests/render-crash.c
new file mode 100644
index 0000000..6e9678c
--- /dev/null
+++ b/tests/render-crash.c
@@ -0,0 +1,68 @@
+/* vim: set ts=4 nowrap ai expandtab sw=4: */
+
+#include <glib.h>
+#include "rsvg.h"
+#include "rsvg-compat.h"
+#include "test-utils.h"
+
+static void
+test_render_crash (gconstpointer data)
+{
+ GFile *file = G_FILE (data);
+ RsvgHandle *handle;
+ GError *error = NULL;
+ RsvgDimensionData dimensions;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ handle = rsvg_handle_new_from_gfile_sync (file, RSVG_HANDLE_FLAGS_NONE, NULL, &error);
+ g_assert_no_error (error);
+ g_assert (handle != NULL);
+
+ rsvg_handle_get_dimensions (handle, &dimensions);
+ g_assert (dimensions.width > 0);
+ g_assert (dimensions.height > 0);
+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
+ dimensions.width, dimensions.height);
+ cr = cairo_create (surface);
+ g_assert (rsvg_handle_render_cairo (handle, cr));
+
+ cairo_surface_destroy (surface);
+ cairo_destroy (cr);
+
+ g_object_unref (handle);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GFile *base, *crash;
+ int result;
+
+ RSVG_G_TYPE_INIT;
+ g_test_init (&argc, &argv, NULL);
+
+ if (argc < 2) {
+ base = g_file_new_for_path (test_utils_get_test_data_path ());
+ crash = g_file_get_child (base, "render-crash");
+ test_utils_add_test_for_all_files ("/render-crash", crash, crash, test_render_crash, NULL);
+ g_object_unref (base);
+ g_object_unref (crash);
+ } else {
+ guint i;
+
+ for (i = 1; i < argc; i++) {
+ GFile *file = g_file_new_for_commandline_arg (argv[i]);
+
+ test_utils_add_test_for_all_files ("/render-crash", NULL, file, test_render_crash, NULL);
+
+ g_object_unref (file);
+ }
+ }
+
+ result = g_test_run ();
+
+ rsvg_cleanup ();
+
+ return result;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]