convert: Improve test coverage
authorMatthias Clasen <mclasen@redhat.com>
Sat, 7 Apr 2012 15:23:47 +0000 (11:23 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 8 Apr 2012 14:24:50 +0000 (10:24 -0400)
Add a test that excercises the 'no conversion' code path.
This uncovered that we don't treat errno properly in this path,
and as a consequence, the returned error code is unreliable.

glib/tests/convert.c

index 603142f..df87244 100644 (file)
@@ -685,11 +685,28 @@ test_filename_display (void)
   g_free (display);
 }
 
+static void
+test_no_conv (void)
+{
+  gchar *in = "";
+  gchar *out G_GNUC_UNUSED;
+  gsize bytes_read = 0;
+  gsize bytes_written = 0;
+  GError *error = NULL;
+
+  out = g_convert (in, -1, "XXX", "UVZ",
+                   &bytes_read, &bytes_written, &error);
+
+  /* error code is unreliable, since we mishandle errno there */
+  g_assert (error && error->domain == G_CONVERT_ERROR);
+}
+
 int
 main (int argc, char *argv[])
 {
   g_test_init (&argc, &argv, NULL);
 
+  g_test_add_func ("/conversion/no-conv", test_no_conv);
   g_test_add_func ("/conversion/iconv-state", test_iconv_state);
   g_test_add_func ("/conversion/illegal-sequence", test_one_half);
   g_test_add_func ("/conversion/byte-order", test_byte_order);