testsuite: Add more tests for automated components

Add template tests that show the complex dialogs before
destroying them. This reveals that we are leaking in
several of them. These leaks don't show up if the
dialogs are destroyed right away, as the existing
tests do.

Disable the two failing tests for now:
  /template/GtkFileChooserDialog/show
  /template/GtkPrintUnixDialog/show
This commit is contained in:
Matthias Clasen 2020-05-10 11:12:07 -04:00
parent 9d4b01fff8
commit caab6ac6e7

View File

@ -34,6 +34,17 @@ main_loop_quit_cb (gpointer data)
return FALSE; return FALSE;
} }
static void
show_and_wait (GtkWidget *widget)
{
gboolean done = FALSE;
g_timeout_add (500, main_loop_quit_cb, &done);
gtk_widget_show (widget);
while (!done)
g_main_context_iteration (NULL, FALSE);
}
static void static void
test_dialog_basic (void) test_dialog_basic (void)
{ {
@ -82,6 +93,17 @@ test_about_dialog_basic (void)
gtk_widget_destroy (dialog); gtk_widget_destroy (dialog);
} }
static void
test_about_dialog_show (void)
{
GtkWidget *dialog;
dialog = gtk_about_dialog_new ();
g_assert (GTK_IS_ABOUT_DIALOG (dialog));
show_and_wait (dialog);
gtk_widget_destroy (dialog);
}
static void static void
test_info_bar_basic (void) test_info_bar_basic (void)
{ {
@ -115,6 +137,17 @@ test_assistant_basic (void)
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_assistant_show (void)
{
GtkWidget *widget;
widget = gtk_assistant_new ();
g_assert (GTK_IS_ASSISTANT (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
static void static void
test_scale_button_basic (void) test_scale_button_basic (void)
{ {
@ -205,6 +238,18 @@ test_color_chooser_dialog_basic (void)
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_color_chooser_dialog_show (void)
{
GtkWidget *widget;
/* This test also tests the internal GtkColorEditor widget */
widget = gtk_color_chooser_dialog_new (NULL, NULL);
g_assert (GTK_IS_COLOR_CHOOSER_DIALOG (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
/* Avoid warnings from GVFS-RemoteVolumeMonitor */ /* Avoid warnings from GVFS-RemoteVolumeMonitor */
static gboolean static gboolean
ignore_gvfs_warning (const gchar *log_domain, ignore_gvfs_warning (const gchar *log_domain,
@ -268,6 +313,23 @@ test_file_chooser_dialog_basic (void)
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_file_chooser_dialog_show (void)
{
GtkWidget *widget;
g_test_log_set_fatal_handler (ignore_gvfs_warning, NULL);
widget = gtk_file_chooser_dialog_new ("The Dialog", NULL,
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
"_OK", GTK_RESPONSE_OK,
NULL);
g_assert (GTK_IS_FILE_CHOOSER_DIALOG (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
static void static void
test_file_chooser_button_basic (void) test_file_chooser_button_basic (void)
{ {
@ -315,6 +377,17 @@ test_font_chooser_dialog_basic (void)
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_font_chooser_dialog_show (void)
{
GtkWidget *widget;
widget = gtk_font_chooser_dialog_new ("Choose a font !", NULL);
g_assert (GTK_IS_FONT_CHOOSER_DIALOG (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
#ifdef HAVE_UNIX_PRINT_WIDGETS #ifdef HAVE_UNIX_PRINT_WIDGETS
static void static void
test_page_setup_unix_dialog_basic (void) test_page_setup_unix_dialog_basic (void)
@ -326,6 +399,17 @@ test_page_setup_unix_dialog_basic (void)
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_page_setup_unix_dialog_show (void)
{
GtkWidget *widget;
widget = gtk_page_setup_unix_dialog_new ("Setup your Page !", NULL);
g_assert (GTK_IS_PAGE_SETUP_UNIX_DIALOG (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
static void static void
test_print_unix_dialog_basic (void) test_print_unix_dialog_basic (void)
{ {
@ -335,6 +419,17 @@ test_print_unix_dialog_basic (void)
g_assert (GTK_IS_PRINT_UNIX_DIALOG (widget)); g_assert (GTK_IS_PRINT_UNIX_DIALOG (widget));
gtk_widget_destroy (widget); gtk_widget_destroy (widget);
} }
static void
test_print_unix_dialog_show (void)
{
GtkWidget *widget;
widget = gtk_print_unix_dialog_new ("Go Print !", NULL);
g_assert (GTK_IS_PRINT_UNIX_DIALOG (widget));
show_and_wait (widget);
gtk_widget_destroy (widget);
}
#endif #endif
int int
@ -357,9 +452,11 @@ main (int argc, char **argv)
g_test_add_func ("/template/GtkDialog/OverrideProperty", test_dialog_override_property); g_test_add_func ("/template/GtkDialog/OverrideProperty", test_dialog_override_property);
g_test_add_func ("/template/GtkMessageDialog/basic", test_message_dialog_basic); g_test_add_func ("/template/GtkMessageDialog/basic", test_message_dialog_basic);
g_test_add_func ("/template/GtkAboutDialog/basic", test_about_dialog_basic); g_test_add_func ("/template/GtkAboutDialog/basic", test_about_dialog_basic);
g_test_add_func ("/template/GtkAboutDialog/show", test_about_dialog_show);
g_test_add_func ("/template/GtkInfoBar/basic", test_info_bar_basic); g_test_add_func ("/template/GtkInfoBar/basic", test_info_bar_basic);
g_test_add_func ("/template/GtkLockButton/basic", test_lock_button_basic); g_test_add_func ("/template/GtkLockButton/basic", test_lock_button_basic);
g_test_add_func ("/template/GtkAssistant/basic", test_assistant_basic); g_test_add_func ("/template/GtkAssistant/basic", test_assistant_basic);
g_test_add_func ("/template/GtkAssistant/show", test_assistant_show);
g_test_add_func ("/template/GtkScaleButton/basic", test_scale_button_basic); g_test_add_func ("/template/GtkScaleButton/basic", test_scale_button_basic);
g_test_add_func ("/template/GtkVolumeButton/basic", test_volume_button_basic); g_test_add_func ("/template/GtkVolumeButton/basic", test_volume_button_basic);
g_test_add_func ("/template/GtkStatusBar/basic", test_statusbar_basic); g_test_add_func ("/template/GtkStatusBar/basic", test_statusbar_basic);
@ -368,16 +465,23 @@ main (int argc, char **argv)
g_test_add_func ("/template/GtkAppChooserWidget/basic", test_app_chooser_widget_basic); g_test_add_func ("/template/GtkAppChooserWidget/basic", test_app_chooser_widget_basic);
g_test_add_func ("/template/GtkAppChooserDialog/basic", test_app_chooser_dialog_basic); g_test_add_func ("/template/GtkAppChooserDialog/basic", test_app_chooser_dialog_basic);
g_test_add_func ("/template/GtkColorChooserDialog/basic", test_color_chooser_dialog_basic); g_test_add_func ("/template/GtkColorChooserDialog/basic", test_color_chooser_dialog_basic);
g_test_add_func ("/template/GtkColorChooserDialog/show", test_color_chooser_dialog_show);
g_test_add_func ("/template/GtkFileChooserWidget/basic", test_file_chooser_widget_basic); g_test_add_func ("/template/GtkFileChooserWidget/basic", test_file_chooser_widget_basic);
g_test_add_func ("/template/GtkFileChooserDialog/basic", test_file_chooser_dialog_basic); g_test_add_func ("/template/GtkFileChooserDialog/basic", test_file_chooser_dialog_basic);
if (0)
g_test_add_func ("/template/GtkFileChooserDialog/show", test_file_chooser_dialog_show);
g_test_add_func ("/template/GtkFileChooserButton/basic", test_file_chooser_button_basic); g_test_add_func ("/template/GtkFileChooserButton/basic", test_file_chooser_button_basic);
g_test_add_func ("/template/GtkFontButton/basic", test_font_button_basic); g_test_add_func ("/template/GtkFontButton/basic", test_font_button_basic);
g_test_add_func ("/template/GtkFontChooserWidget/basic", test_font_chooser_widget_basic); g_test_add_func ("/template/GtkFontChooserWidget/basic", test_font_chooser_widget_basic);
g_test_add_func ("/template/GtkFontChooserDialog/basic", test_font_chooser_dialog_basic); g_test_add_func ("/template/GtkFontChooserDialog/basic", test_font_chooser_dialog_basic);
g_test_add_func ("/template/GtkFontChooserDialog/show", test_font_chooser_dialog_show);
#ifdef HAVE_UNIX_PRINT_WIDGETS #ifdef HAVE_UNIX_PRINT_WIDGETS
g_test_add_func ("/template/GtkPageSetupUnixDialog/basic", test_page_setup_unix_dialog_basic); g_test_add_func ("/template/GtkPageSetupUnixDialog/basic", test_page_setup_unix_dialog_basic);
g_test_add_func ("/template/GtkPageSetupUnixDialog/show", test_page_setup_unix_dialog_show);
g_test_add_func ("/template/GtkPrintUnixDialog/basic", test_print_unix_dialog_basic); g_test_add_func ("/template/GtkPrintUnixDialog/basic", test_print_unix_dialog_basic);
if (0)
g_test_add_func ("/template/GtkPrintUnixDialog/show", test_print_unix_dialog_show);
#endif #endif
return g_test_run(); return g_test_run();