[libgtk2-perl] 02/03: Make t/GtkCellRenderer.t more robust

Intrigeri intrigeri at moszumanska.debian.org
Wed Feb 18 18:57:38 UTC 2015


This is an automated email from the git hooks/post-receive script.

intrigeri pushed a commit to annotated tag rel-1-24-93
in repository libgtk2-perl.

commit e8005eee00f76099e54607c99ad73cb729918d80
Author: Torsten Schönfeld <kaffeetisch at gmx.de>
Date:   Sun Aug 10 13:19:10 2014 +0200

    Make t/GtkCellRenderer.t more robust
    
    The tests that check that all vfuncs of custom cell renderers are called
    appropriately were relying on certain behavior of gtk+.  Apparently, that is
    not appropriate on all platforms, as we have failure reports from armhf, mips
    and mipsel.  Make the tests more robust by triggering all vfuncs on all custom
    renderers manually.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=729453
---
 t/GtkCellRenderer.t | 99 +++++++++++++++++++++++++----------------------------
 1 file changed, 46 insertions(+), 53 deletions(-)

diff --git a/t/GtkCellRenderer.t b/t/GtkCellRenderer.t
index da02ab3..5cad8a7 100644
--- a/t/GtkCellRenderer.t
+++ b/t/GtkCellRenderer.t
@@ -2,9 +2,11 @@
 
 # $Id$
 
-use Gtk2::TestHelper tests => 26;
+use Gtk2::TestHelper tests => 46;
 use strict;
 
+##########################################################################
+# custom cell renderer
 package Mup::CellRendererPopup;
 
 use Test::More;
@@ -22,8 +24,8 @@ sub RENDER { $hits{render}++;  shift->SUPER::RENDER (@_) }
 sub ACTIVATE { $hits{activate}++;  shift->SUPER::ACTIVATE (@_) }
 sub START_EDITING { $hits{edit}++;  shift->SUPER::START_EDITING (@_) }
 
-
-# do that again, in the style of 1.02x, to check for regressions of
+##########################################################################
+# custom cell renderer in the style of 1.02x, to check for regressions of
 # backward compatibility.
 package Mup::CellRendererPopupCompat;
 
@@ -44,6 +46,8 @@ sub on_render { $hits_compat{render}++;  shift->parent_render (@_) }
 sub on_activate { $hits_compat{activate}++;  shift->parent_activate (@_) }
 sub on_start_editing { $hits_compat{edit}++;  shift->parent_start_editing (@_) }
 
+##########################################################################
+# custom cell renderer with newly created entry in START_EDITING
 package My::CellRendererNewEntry;
 use strict;
 use warnings;
@@ -59,7 +63,6 @@ sub START_EDITING { $hits_newentry{edit}++;
                     return $entry;
                   }
 sub _editable_destroy { $hits_newentry{editable_destroy}++ }
- 
 
 ##########################################################################
 # driver code
@@ -83,7 +86,6 @@ foreach (qw/foo fluffy flurble frob frobnitz ftang fire truck/) {
 	$model->set ($iter, 0, $_);
 }
 
-
 # now a view
 my $treeview = Gtk2::TreeView->new ($model);
 
@@ -92,8 +94,9 @@ my $treeview = Gtk2::TreeView->new ($model);
 #
 ok (my $renderer = Mup::CellRendererPopup->new, 'Mup::CellRendererPopup->new');
 $renderer->set (mode => 'editable');
+$renderer->set (editable => 1);
 my $column = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer,
-                                                     text => 0,);
+                                                        text => 0,);
 # this handler commits the user's selection to the model.  compare with
 # the one for the typical text renderer -- the only difference is a var name.
 $renderer->signal_connect (edited => sub {
@@ -104,18 +107,17 @@ $renderer->signal_connect (edited => sub {
 	}, $model);
 $treeview->append_column ($column);
 
-
 #
-# custom cell renderer
+# custom cell renderer, compat mode
 #
-ok ($renderer = Mup::CellRendererPopupCompat->new, 'Mup::CellRendererPopupCompat->new');
-$renderer->set (mode => 'editable');
-$renderer->set (editable => 1);
-my $column_compat = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer,
-                                                     text => 0,);
+ok (my $renderer_compat = Mup::CellRendererPopupCompat->new, 'Mup::CellRendererPopupCompat->new');
+$renderer_compat->set (mode => 'editable');
+$renderer_compat->set (editable => 1);
+my $column_compat = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer_compat,
+                                                               text => 0,);
 # this handler commits the user's selection to the model.  compare with
 # the one for the typical text renderer -- the only difference is a var name.
-$renderer->signal_connect (edited => sub {
+$renderer_compat->signal_connect (edited => sub {
 		my ($cell, $text_path, $new_text, $model) = @_;
 		my $path = Gtk2::TreePath->new_from_string ($text_path);
 		my $iter = $model->get_iter ($path);
@@ -141,7 +143,6 @@ my $column_text = Gtk2::TreeViewColumn->new_with_attributes
     ('core-text', $renderer_text, text => 0,);
 $treeview->append_column ($column_text);
 
-
 ##########################################################################
 
 $vbox->pack_start ($treeview, 1, 1, 0);
@@ -150,48 +151,38 @@ $window->show_all;
 
 ##########################################################################
 
-isa_ok ($renderer, "Gtk2::CellRenderer");
-
+#
+# test the vfunc-involving stuff for all renderers
+#
 my $rect = Gtk2::Gdk::Rectangle->new (5, 5, 10, 10);
-my @size = $renderer->get_size ($treeview, $rect);
-is (@size, 4);
-like($size[0], qr/^\d+$/);
-like($size[1], qr/^\d+$/);
-like($size[2], qr/^\d+$/);
-like($size[3], qr/^\d+$/);
-
 my $event = Gtk2::Gdk::Event->new ("button-press");
-
-$renderer->render ($window->window, $treeview, $rect, $rect, $rect, [qw(sorted prelit)]);
-ok(!$renderer->activate ($event, $treeview, "0", $rect, $rect, qw(selected)));
-{
-  my $editable = $renderer->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected));
-  isa_ok ($editable, "Gtk2::Entry");
-  my $destroyed = 0;
-  $editable->signal_connect (destroy => sub { $destroyed = 1 });
-  undef $editable;
-  is ($destroyed, 1,
-      'editable from start_editing using SUPER::START_EDITING destroyed when forgotten');
-}
-{
-  my $editable = $renderer_newentry->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected));
-  isa_ok ($editable, "Gtk2::Entry");
-  my $destroyed = 0;
-  $editable->signal_connect (destroy => sub { $destroyed = 1 });
-  undef $editable;
-  is ($destroyed, 1,
-      'editable from start_editing using Gtk2::Entry->new destroyed when forgotten');
-}
-{
-  my $editable = $renderer_text->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected));
-  isa_ok ($editable, "Gtk2::Entry");
-  my $destroyed = 0;
-  $editable->signal_connect (destroy => sub { $destroyed = 1 });
-  undef $editable;
-  is ($destroyed, 1,
-      'editable from start_editing on core GtkCellRendererText destroyed when forgotten');
+foreach my $r ($renderer, $renderer_compat, $renderer_newentry, $renderer_text) {
+	my @size = $r->get_size ($treeview, $rect);
+	is (@size, 4);
+	like($size[0], qr/^\d+$/);
+	like($size[1], qr/^\d+$/);
+	like($size[2], qr/^\d+$/);
+	like($size[3], qr/^\d+$/);
+
+	$r->render ($window->window, $treeview, $rect, $rect, $rect, [qw(sorted prelit)]);
+	ok(!$r->activate ($event, $treeview, "0", $rect, $rect, qw(selected)));
+
+	{
+	  my $editable = $r->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected));
+	  isa_ok ($editable, "Gtk2::Entry");
+	  my $destroyed = 0;
+	  $editable->signal_connect (destroy => sub { $destroyed = 1 });
+	  undef $editable;
+	  is ($destroyed, 1,
+	      "editable from start_editing using $r destroyed when forgotten");
+	}
 }
 
+#
+# test the normal stuff just for one renderer
+#
+isa_ok ($renderer, "Gtk2::CellRenderer");
+
 $renderer->set_fixed_size (23, 42);
 is_deeply([$renderer->get_fixed_size], [23, 42]);
 
@@ -237,6 +228,8 @@ SKIP: {
 ##########################################################################
 
 run_main sub {
+	# set the cursor on the various columns, with editing mode on, to
+	# trigger the vfuncs
 	$treeview->set_cursor (Gtk2::TreePath->new_from_string ('0'),
 	                       $column, 1);
 	$treeview->set_cursor (Gtk2::TreePath->new_from_string ('0'),

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libgtk2-perl.git



More information about the Pkg-perl-cvs-commits mailing list