diff options
| author | Russ Allbery <eagle@eyrie.org> | 2020-05-17 17:05:30 -0700 | 
|---|---|---|
| committer | Russ Allbery <eagle@eyrie.org> | 2020-05-17 17:05:30 -0700 | 
| commit | c138111a3c27863308b6552a5527a9e821a3dc11 (patch) | |
| tree | fe3c16462bf0213708f20d251a63e5b9bbf2d23f /perl/t/style/strict.t | |
| parent | ccfbd34d597318215b979338c4cb5d7e4a3f0d6f (diff) | |
Update to rra-c-util 8.2 and C TAP Harness 4.7
Update to rra-c-util 8.2:
* Implement explicit_bzero with memset if it is not available.
* Reformat all C source using clang-format 10.
* Work around Test::Strict not skipping .git directories.
* Fix warnings with perltidy 20190601 and Perl::Critic 1.134.
* Fix warnings with Clang 10, GCC 10, and the Clang static analyzer.
Update to C TAP Harness 4.7:
* Fix warnings with GCC 10.
* Reformat all C source using clang-format 10.
* Fixed malloc error checking in bstrndup.
Diffstat (limited to 'perl/t/style/strict.t')
| -rwxr-xr-x | perl/t/style/strict.t | 50 | 
1 files changed, 38 insertions, 12 deletions
| diff --git a/perl/t/style/strict.t b/perl/t/style/strict.t index a3d2a3e..a87c1fa 100755 --- a/perl/t/style/strict.t +++ b/perl/t/style/strict.t @@ -6,7 +6,7 @@  # which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.  #  # Written by Russ Allbery <eagle@eyrie.org> -# Copyright 2016 Russ Allbery <eagle@eyrie.org> +# Copyright 2016, 2018-2019 Russ Allbery <eagle@eyrie.org>  # Copyright 2013-2014  #     The Board of Trustees of the Leland Stanford Junior University  # @@ -30,15 +30,16 @@  #  # SPDX-License-Identifier: MIT -use 5.006; +use 5.008;  use strict;  use warnings;  use lib 't/lib'; -use File::Spec;  use Test::RRA qw(skip_unless_automated use_prereq); +use File::Spec; +  # Skip for normal user installs since this doesn't affect functionality.  skip_unless_automated('Strictness tests'); @@ -46,15 +47,40 @@ skip_unless_automated('Strictness tests');  # use 5.012 or later automatically implies use strict.  use_prereq('Test::Strict', '0.25'); -# Test everything in the distribution directory except the Build and -# Makefile.PL scripts generated by Module::Build.  We also want to check use -# warnings. -$Test::Strict::TEST_SKIP = ['Build', 'Makefile.PL']; +# Directories to exclude from checks. +my %EXCLUDE = map { $_ => 1 } qw(.git blib); + +# Determine whether we want to check the given file or top-level directory. +# Assume that the only interesting files at the top level are directories or +# files ending in *.PL. +# +# $file - Name of the file or directory +# +# Returns: 1 if it should be checked, undef otherwise. +sub should_check { +    my ($file) = @_; +    return   if $EXCLUDE{$file}; +    return 1 if -d $file; +    return 1 if $file =~ m{ [.] PL \z }xms; +    return; +} + +# Test::Strict (as of 0.47) doesn't have a way of excluding whole directories +# from all_perl_files_ok and doesn't exclude .git, which results in false +# positives if there are Perl files unpacked under .git (which is often the +# case when using dgit).  We therefore can't just point it at the root of the +# module distribution and instead have to manually construct a list of +# interesting files. +opendir(my $rootdir, File::Spec->curdir) +  or die "$0: cannot open current directory: $!\n"; +my @files = File::Spec->no_upwards(readdir($rootdir)); +closedir($rootdir) or die "$0: cannot close current directory: $!\n"; +my @to_check = grep { should_check($_) } @files; + +# Test the files and top-level directories we found, including checking for +# use warnings.  $Test::Strict::TEST_WARNINGS = 1; -all_perl_files_ok(File::Spec->curdir); +all_perl_files_ok(@to_check);  # Hack to suppress "used only once" warnings. -END { -    $Test::Strict::TEST_SKIP     = []; -    $Test::Strict::TEST_WARNINGS = 0; -} +END { $Test::Strict::TEST_WARNINGS = 0 } | 
