#!/usr/bin/perl # # Check for perlcritic errors in included Perl scripts. # # The canonical version of this file is maintained in the rra-c-util package, # which can be found at . # # Written by Russ Allbery # Copyright 2012, 2013, 2014 # The Board of Trustees of the Leland Stanford Junior University # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. use 5.006; use strict; use warnings; use lib "$ENV{SOURCE}/tap/perl"; use File::Spec; use Test::More; use Test::RRA qw(skip_unless_author use_prereq); use Test::RRA::Automake qw(automake_setup perl_dirs test_file_path); use Test::RRA::Config qw(@CRITIC_IGNORE); # Skip tests unless we're running author tests since this test is too # sensitive to the exact version of Perl::Critic to be generally useful. skip_unless_author('Coding style tests'); # Set up Automake testing. automake_setup(); # Load prerequisite modules. use_prereq('Test::Perl::Critic'); # Due to an annoying bug in Perl::Tidy 20130922, we cannot run tests if the # source directory is read-only. It unconditionally tries to create a log # file in the current directory and fails to run any checks if it cannot. if (!-w File::Spec->curdir()) { plan skip_all => 'Perl::Tidy needs writable source directory'; } # Force the embedded Perl::Tidy check to use the correct configuration. local $ENV{PERLTIDY} = test_file_path('data/perltidyrc'); # Import the configuration file. Test::Perl::Critic->import(-profile => test_file_path('data/perlcriticrc')); # Finally, run the actual tests. all_critic_ok(perl_dirs({ skip => [@CRITIC_IGNORE] })); # On Debian with perltidy 20130922-1, a perltidy.LOG file gets left behind # in the current directory. Remove it if it exists. unlink('perltidy.LOG');