Merge branch 'w-sign-conversion' into 'main'

tests: Add a -Wsign-conversion test for gstring.h

See merge request GNOME/glib!3275
This commit is contained in:
Emmanuele Bassi 2023-02-22 01:41:25 +00:00
commit 796e21ee1c
3 changed files with 42 additions and 37 deletions

View File

@ -82,7 +82,7 @@ typedef void (*GTestFixtureFunc) (gpointer fixture,
} G_STMT_END } G_STMT_END
#define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\ #define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\
gconstpointer __m1 = m1, __m2 = m2; \ gconstpointer __m1 = m1, __m2 = m2; \
int __l1 = l1, __l2 = l2; \ size_t __l1 = (size_t) l1, __l2 = (size_t) l2; \
if (__l1 != 0 && __m1 == NULL) \ if (__l1 != 0 && __m1 == NULL) \
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
"assertion failed (" #l1 " == 0 || " #m1 " != NULL)"); \ "assertion failed (" #l1 " == 0 || " #m1 " != NULL)"); \

View File

@ -128,6 +128,11 @@ glib_tests = {
}, },
'strfuncs' : {}, 'strfuncs' : {},
'string' : {}, 'string' : {},
'string-macro' : {
'source' : 'string.c',
'c_args' : cc.get_id() == 'gcc' ? ['-Werror=sign-conversion'] : [],
'install' : false,
},
'strvbuilder' : {}, 'strvbuilder' : {},
'testing' : { 'testing' : {
'args': [ '--verbose' ], 'args': [ '--verbose' ],

View File

@ -47,7 +47,7 @@ test_string_chunks (void)
} }
tmp_string_2 = g_string_chunk_insert_const (string_chunk, tmp_string); tmp_string_2 = g_string_chunk_insert_const (string_chunk, tmp_string);
g_assert (tmp_string_2 != tmp_string); g_assert_true (tmp_string_2 != tmp_string);
g_assert_cmpstr (tmp_string_2, ==, tmp_string); g_assert_cmpstr (tmp_string_2, ==, tmp_string);
tmp_string = g_string_chunk_insert_const (string_chunk, tmp_string); tmp_string = g_string_chunk_insert_const (string_chunk, tmp_string);
@ -72,9 +72,9 @@ test_string_chunk_insert (void)
str[1] = g_string_chunk_insert_len (chunk, s1, 8); str[1] = g_string_chunk_insert_len (chunk, s1, 8);
str[2] = g_string_chunk_insert (chunk, s2); str[2] = g_string_chunk_insert (chunk, s2);
g_assert (memcmp (s0, str[0], sizeof s0) == 0); g_assert_cmpmem (s0, sizeof s0, str[0], sizeof s0);
g_assert (memcmp (s1, str[1], sizeof s1) == 0); g_assert_cmpmem (s1, sizeof s1, str[1], sizeof s1);
g_assert (memcmp (s2, str[2], sizeof s2) == 0); g_assert_cmpmem (s2, sizeof s2, str[2], sizeof s2);
g_string_chunk_free (chunk); g_string_chunk_free (chunk);
} }
@ -87,11 +87,11 @@ test_string_new (void)
string1 = g_string_new ("hi pete!"); string1 = g_string_new ("hi pete!");
string2 = g_string_new (NULL); string2 = g_string_new (NULL);
g_assert (string1 != NULL); g_assert_nonnull (string1);
g_assert (string2 != NULL); g_assert_nonnull (string2);
g_assert (strlen (string1->str) == string1->len); g_assert_cmpuint (strlen (string1->str), ==, string1->len);
g_assert (strlen (string2->str) == string2->len); g_assert_cmpuint (strlen (string2->str), ==, string2->len);
g_assert (string2->len == 0); g_assert_cmpuint (string2->len, ==, 0);
g_assert_cmpstr ("hi pete!", ==, string1->str); g_assert_cmpstr ("hi pete!", ==, string1->str);
g_assert_cmpstr ("", ==, string2->str); g_assert_cmpstr ("", ==, string2->str);
@ -102,9 +102,9 @@ test_string_new (void)
string2 = g_string_new_len ("foobar", 3); string2 = g_string_new_len ("foobar", 3);
g_assert_cmpstr (string1->str, ==, "foo"); g_assert_cmpstr (string1->str, ==, "foo");
g_assert_cmpint (string1->len, ==, 3); g_assert_cmpuint (string1->len, ==, 3);
g_assert_cmpstr (string2->str, ==, "foo"); g_assert_cmpstr (string2->str, ==, "foo");
g_assert_cmpint (string2->len, ==, 3); g_assert_cmpuint (string2->len, ==, 3);
g_string_free (string1, TRUE); g_string_free (string1, TRUE);
g_string_free (string2, TRUE); g_string_free (string2, TRUE);
@ -183,7 +183,7 @@ static void
test_string_append_c (void) test_string_append_c (void)
{ {
GString *string; GString *string;
gint i; guint i;
string = g_string_new ("hi pete!"); string = g_string_new ("hi pete!");
@ -197,7 +197,7 @@ test_string_append_c (void)
g_assert_true ((strlen("hi pete!") + 10000) == strlen(string->str)); g_assert_true ((strlen("hi pete!") + 10000) == strlen(string->str));
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
g_assert_true (string->str[strlen ("Hi pete!") + i] == 'a' + (i%26)); g_assert_true (string->str[strlen ("Hi pete!") + i] == 'a' + (gchar) (i%26));
g_string_free (string, TRUE); g_string_free (string, TRUE);
} }
@ -472,9 +472,9 @@ test_string_equal (void)
string1 = g_string_new ("test"); string1 = g_string_new ("test");
string2 = g_string_new ("te"); string2 = g_string_new ("te");
g_assert (!g_string_equal(string1, string2)); g_assert_false (g_string_equal (string1, string2));
g_string_append (string2, "st"); g_string_append (string2, "st");
g_assert (g_string_equal(string1, string2)); g_assert_true (g_string_equal (string1, string2));
g_string_free (string1, TRUE); g_string_free (string1, TRUE);
g_string_free (string2, TRUE); g_string_free (string2, TRUE);
} }
@ -487,15 +487,15 @@ test_string_truncate (void)
string = g_string_new ("testing"); string = g_string_new ("testing");
g_string_truncate (string, 1000); g_string_truncate (string, 1000);
g_assert (string->len == strlen("testing")); g_assert_cmpuint (string->len, ==, strlen("testing"));
g_assert_cmpstr (string->str, ==, "testing"); g_assert_cmpstr (string->str, ==, "testing");
(g_string_truncate) (string, 4); (g_string_truncate) (string, 4);
g_assert (string->len == 4); g_assert_cmpuint (string->len, ==, 4);
g_assert_cmpstr (string->str, ==, "test"); g_assert_cmpstr (string->str, ==, "test");
g_string_truncate (string, 0); g_string_truncate (string, 0);
g_assert (string->len == 0); g_assert_cmpuint (string->len, ==, 0);
g_assert_cmpstr (string->str, ==, ""); g_assert_cmpstr (string->str, ==, "");
g_string_free (string, TRUE); g_string_free (string, TRUE);
@ -510,24 +510,24 @@ test_string_overwrite (void)
string = g_string_new ("testing"); string = g_string_new ("testing");
g_string_overwrite (string, 4, " and expand"); g_string_overwrite (string, 4, " and expand");
g_assert (15 == string->len); g_assert_cmpuint (15, ==, string->len);
g_assert ('\0' == string->str[15]); g_assert_true ('\0' == string->str[15]);
g_assert (g_str_equal ("test and expand", string->str)); g_assert_true (g_str_equal ("test and expand", string->str));
g_string_overwrite (string, 5, "NOT-"); g_string_overwrite (string, 5, "NOT-");
g_assert (15 == string->len); g_assert_cmpuint (15, ==, string->len);
g_assert ('\0' == string->str[15]); g_assert_true ('\0' == string->str[15]);
g_assert (g_str_equal ("test NOT-expand", string->str)); g_assert_true (g_str_equal ("test NOT-expand", string->str));
g_string_overwrite_len (string, 9, "blablabla", 6); g_string_overwrite_len (string, 9, "blablabla", 6);
g_assert (15 == string->len); g_assert_cmpuint (15, ==, string->len);
g_assert ('\0' == string->str[15]); g_assert_true ('\0' == string->str[15]);
g_assert (g_str_equal ("test NOT-blabla", string->str)); g_assert_true (g_str_equal ("test NOT-blabla", string->str));
g_string_overwrite_len (string, 4, "BLABL", 0); g_string_overwrite_len (string, 4, "BLABL", 0);
g_assert (g_str_equal ("test NOT-blabla", string->str)); g_assert_true (g_str_equal ("test NOT-blabla", string->str));
g_string_overwrite_len (string, 4, "BLABL", -1); g_string_overwrite_len (string, 4, "BLABL", -1);
g_assert (g_str_equal ("testBLABLblabla", string->str)); g_assert_true (g_str_equal ("testBLABLblabla", string->str));
g_string_free (string, TRUE); g_string_free (string, TRUE);
} }
@ -540,15 +540,15 @@ test_string_nul_handling (void)
/* Check handling of embedded ASCII 0 (NUL) characters in GString. */ /* Check handling of embedded ASCII 0 (NUL) characters in GString. */
string1 = g_string_new ("fiddle"); string1 = g_string_new ("fiddle");
string2 = g_string_new ("fiddle"); string2 = g_string_new ("fiddle");
g_assert (g_string_equal (string1, string2)); g_assert_true (g_string_equal (string1, string2));
g_string_append_c (string1, '\0'); g_string_append_c (string1, '\0');
g_assert (!g_string_equal (string1, string2)); g_assert_false (g_string_equal (string1, string2));
g_string_append_c (string2, '\0'); g_string_append_c (string2, '\0');
g_assert (g_string_equal (string1, string2)); g_assert_true (g_string_equal (string1, string2));
g_string_append_c (string1, 'x'); g_string_append_c (string1, 'x');
g_string_append_c (string2, 'y'); g_string_append_c (string2, 'y');
g_assert (!g_string_equal (string1, string2)); g_assert_false (g_string_equal (string1, string2));
g_assert (string1->len == 8); g_assert_cmpuint (string1->len, ==, 8);
g_string_append (string1, "yzzy"); g_string_append (string1, "yzzy");
g_assert_cmpmem (string1->str, string1->len + 1, "fiddle\0xyzzy", 13); g_assert_cmpmem (string1->str, string1->len + 1, "fiddle\0xyzzy", 13);
g_string_insert (string1, 1, "QED"); g_string_insert (string1, 1, "QED");
@ -593,7 +593,7 @@ test_string_set_size (void)
g_string_set_size (s, 30); g_string_set_size (s, 30);
g_assert_cmpstr (s->str, ==, "foo"); g_assert_cmpstr (s->str, ==, "foo");
g_assert_cmpint (s->len, ==, 30); g_assert_cmpuint (s->len, ==, 30);
g_string_free (s, TRUE); g_string_free (s, TRUE);
} }
@ -613,7 +613,7 @@ test_string_to_bytes (void)
byte_data = g_bytes_get_data (bytes, &byte_len); byte_data = g_bytes_get_data (bytes, &byte_len);
g_assert_cmpint (byte_len, ==, 7); g_assert_cmpuint (byte_len, ==, 7);
g_assert_cmpmem (byte_data, byte_len, "foo-bar", 7); g_assert_cmpmem (byte_data, byte_len, "foo-bar", 7);