package Clutter::TestHelper; use strict; use warnings; use Test::More; use Carp; our $VERSION = '0.01'; sub import { shift; my %opts = (@_); plan skip_all => $opts{skip_all} if $opts{skip_all}; croak "test must be provided at import" unless exists $opts{tests}; if ($opts{at_least_version}) { my ($rmajor, $rminor, $rmicro, $text) = @{$opts{at_least_version}}; plan skip_all => $text unless Clutter->CHECK_VERSION($rmajor, $rminor, $rmicro); } if ($opts{sub_module}) { my @modules = Clutter->SUPPORTED_MODULES(); my $no_skip = 0; foreach my $m (@modules) { $no_skip = 1 if $opts{sub_module} eq $m; } plan skip_all => "no support for $opts{sub_module}" unless $no_skip; } if (!Clutter->init()) { plan skip_all => 'Clutter->init failed'; } else { plan tests => $opts{tests}; } # forcibly turn on warnings and strictness in the caller $^W = 1; @_ = (); goto &strict::import; } package main; # we obviously need Clutter use Clutter; # and Test::More use Test::More; # enforce the use of these constants in the tests use Glib qw( TRUE FALSE ); 1; __END__ =head1 NAME Clutter::TestHelper - Simple wrapper module for testing Clutter =head1 SYNOPSIS use Clutter::TestHelper tests => 10; =head1 DESCRIPTION A simple wrapper module around L that makes Clutter test suite easier to write. When importing the module, L is also imported and initialised. In case the initialisation process fails, likely to happen if the C environment variable is not set, all the planned tests are just skipped. =head1 OPTIONS =over =item tests => $number The number of tests to be performed =item at_least_version => [ $major, $minor, $micro, $reason ] A reference to a list that is checked with Clutter->CHECK_VERSION =item skip_all Simply skip all tests =item sub_module => $module_name Skip all tests if Clutter was not compiled against I. =back =head1 AUTHORS Emmanuele Bassi Eebassi (AT) openedhand (DOT) comE This module heavily borrows from the equivalent L module written by the Gtk2-Perl team. =head1 COPYRIGHT Copyright (C) 2007 OpenedHand, Ltd. Released under the terms of Clutter itself. =cut package Clutter::TestHelper; use strict; use warnings; use Test::More; use Carp; our $VERSION = '0.01'; sub import { shift; my %opts = (@_); plan skip_all => $opts{skip_all} if $opts{skip_all}; croak "test must be provided at import" unless exists $opts{tests}; if ($opts{at_least_version}) { my ($rmajor, $rminor, $rmicro, $text) = @{$opts{at_least_version}}; plan skip_all => $text unless Clutter->CHECK_VERSION($rmajor, $rminor, $rmicro); } if (!Clutter->init()) { plan skip_all => 'Clutter->init failed'; } else { plan tests => $opts{tests}; } # forcibly turn on warnings and strictness in the caller $^W = 1; @_ = (); goto &strict::import; } package main; use Clutter; use Test::More; use Glib qw( TRUE FALSE ); 1; __END__ =head1 NAME Clutter::TestHelper - Simple wrapper module for testing Clutter =head1 SYNOPSIS use Clutter::TestHelper tests => 10; =head1 DESCRIPTION A simple wrapper module around L that makes Clutter test suite easier to write. When importing the module, L is also imported and initialised. In case the initialisation process fails, likely to happen if the C environment variable is not set, all the planned tests are just skipped. =head1 OPTIONS =over =item tests The number of tests to be performed =item at_least_version A reference to a list that is checked with Clutter->CHECK_VERSION =item skip_all Simply skip all tests =back =head1 AUTHORS Emmanuele Bassi Eebassi (AT) openedhand (DOT) comE This module heavily borrows from the equivalent L module written by the Gtk2-Perl team. =head1 COPYRIGHT Copyright (C) 2007 OpenedHand, Ltd. Released under the terms of Clutter itself. =cut