Build all packages removed dependencies of libtest-exception-perl libtest-warn-perl...
[dh-make-perl] / dev / i386 / libperl-critic-perl / libperl-critic-perl-1.088 / t / 14_policy_parameters.t
diff --git a/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/14_policy_parameters.t b/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/14_policy_parameters.t
new file mode 100644 (file)
index 0000000..e79c778
--- /dev/null
@@ -0,0 +1,130 @@
+#!perl
+
+##############################################################################
+#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/14_policy_parameters.t $
+#     $Date: 2008-06-06 00:48:04 -0500 (Fri, 06 Jun 2008) $
+#   $Author: clonezone $
+# $Revision: 2416 $
+##############################################################################
+
+use 5.006001;
+use strict;
+use warnings;
+
+use English qw(-no_match_vars);
+
+use Perl::Critic::UserProfile qw();
+use Perl::Critic::PolicyFactory (-test => 1);
+use Perl::Critic::PolicyParameter qw{ $NO_DESCRIPTION_AVAILABLE };
+use Perl::Critic::Utils qw( policy_short_name );
+use Perl::Critic::TestUtils qw(bundled_policy_names);
+
+use Test::More; #plan set below!
+
+Perl::Critic::TestUtils::block_perlcriticrc();
+
+#-----------------------------------------------------------------------------
+# This script proves that each policy that ships with Perl::Critic overrides
+# the supported_parameters() method and, assuming that the policy is
+# configurable, that each parameter can parse its own default_string.
+#
+# This script also verifies that Perl::Critic::PolicyFactory throws an
+# exception when we try to create a policy with bogus parameters.  However, it
+# is your responsibility to verify that valid parameters actually work as
+# expected.  You can do this by using the #parms directive in the *.run files.
+#-----------------------------------------------------------------------------
+
+# Figure out how many tests there will be...
+my @all_policies = bundled_policy_names();
+my @all_params   = map { $_->supported_parameters() } @all_policies;
+my $ntests       = @all_policies + 2 * @all_params;
+plan( tests => $ntests );
+
+#-----------------------------------------------------------------------------
+
+for my $policy ( @all_policies ) {
+    test_has_declared_parameters( $policy );
+    test_invalid_parameters( $policy );
+    test_supported_parameters( $policy );
+}
+
+#-----------------------------------------------------------------------------
+
+sub test_supported_parameters {
+    my $policy_name = shift;
+    my @supported_params = $policy_name->supported_parameters();
+    my $config = Perl::Critic::Config->new( -profile => 'NONE' );
+
+    for my $param_specification ( @supported_params ) {
+        my $parameter =
+            Perl::Critic::PolicyParameter->new($param_specification);
+        my $param_name = $parameter->get_name();
+        my $description = $parameter->get_description();
+
+        ok(
+            $description && $description ne $NO_DESCRIPTION_AVAILABLE,
+            qq{Param "$param_name" for policy "$policy_name" has a description},
+        );
+
+        my %args = (
+            -policy => $policy_name,
+            -params => {
+                 $param_name => $parameter->get_default_string(),
+            }
+        );
+        eval { $config->add_policy( %args ) };
+        is(
+            $EVAL_ERROR,
+            q{},
+            qq{Created policy "$policy_name" with param "$param_name"},
+        );
+    }
+
+    return;
+}
+
+#-----------------------------------------------------------------------------
+
+sub test_invalid_parameters {
+    my $policy = shift;
+    my $bogus_params  = { bogus => 'shizzle' };
+    my $profile = Perl::Critic::UserProfile->new( -profile => 'NONE' );
+    my $factory = Perl::Critic::PolicyFactory->new( -profile => $profile );
+
+    my $policy_name = policy_short_name($policy);
+    my $label = qq{Created $policy_name with bogus parameters};
+
+    eval { $factory->create_policy(-name => $policy, -params => $bogus_params) };
+    like(
+        $EVAL_ERROR,
+        qr/The $policy_name policy doesn't take a "bogus" option/,
+        $label
+    );
+}
+
+#-----------------------------------------------------------------------------
+
+sub test_has_declared_parameters {
+    my $policy = shift;
+    if ( not $policy->can('supported_parameters') ) {
+        fail( qq{I don't know if $policy supports params} );
+        diag( qq{This means $policy needs a supported_parameters() method} );
+    }
+    return;
+}
+
+#-----------------------------------------------------------------------------
+
+# ensure we run true if this test is loaded by
+# t/14_policy_parameters.t_without_optional_dependencies.t
+1;
+
+###############################################################################
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 78
+#   indent-tabs-mode: nil
+#   c-indentation-style: bsd
+# End:
+# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :