From 8d557d6c8ea6f370e00d13eaa6234b2ef2d800dc Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Mon, 17 Nov 2014 10:40:45 +0100 Subject: test: Check perl code compilation, warnings and strictness --- Makefile.am | 8 ++++++++ README | 1 + debian/changelog | 2 ++ t/strict.t | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 t/strict.t diff --git a/Makefile.am b/Makefile.am index f449e471e..3d979b976 100644 --- a/Makefile.am +++ b/Makefile.am @@ -144,6 +144,7 @@ endif test_scripts = \ t/pod.t \ + t/strict.t \ t/critic.t \ $(nil) @@ -151,6 +152,13 @@ test_data = \ t/critic/perlcriticrc \ $(nil) +# We need to use absolute paths here due to strict.t invoking a sub-perl, +# while changing dir to source dir on out-of-tree builds. +TEST_ENV_VARS = \ + DPKG_DATADIR=$(abs_top_srcdir) \ + PERL5LIB=$(abs_top_srcdir)/scripts:$(abs_top_srcdir)/dselect/methods \ + $(nil) + include $(top_srcdir)/check.am .PHONY: update-po diff --git a/README b/README index f63c6911a..df822d0fe 100644 --- a/README +++ b/README @@ -79,6 +79,7 @@ To run the test suite («make check»): TimeDate perl module IO-String perl module Test::Pod perl module (optional) + Test::Strict perl module (optional) Test::Perl::Critic perl module (optional) Define the environment variable DPKG_DEVEL_MODE to run the test suite diff --git a/debian/changelog b/debian/changelog index 3f6b7e205..6bd2d2ee6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -24,6 +24,8 @@ dpkg (1.18.0) UNRELEASED; urgency=low Closes: #630342 * Rename and deprecate Dpkg::Gettext _g function with new g_. * Remove trailing newline from string literal in warning calls. + * Test suite: + - Check perl code compilation, warnings and strictness. -- Guillem Jover Tue, 09 Dec 2014 23:53:18 +0100 diff --git a/t/strict.t b/t/strict.t new file mode 100644 index 000000000..fafd05c1e --- /dev/null +++ b/t/strict.t @@ -0,0 +1,40 @@ +#!/usr/bin/perl +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use strict; +use warnings; + +use Test::More; +use Test::Dpkg; + +eval q{ + use Test::Strict; + $Test::Strict::TEST_WARNINGS = 1; +}; +plan skip_all => 'Test::Strict required for testing syntax' if $@; + +if (defined $ENV{srcdir}) { + chdir $ENV{srcdir} or die "cannot chdir to source directory: $!"; +} + +my @files = Test::Dpkg::all_perl_files(); + +plan tests => scalar @files * 3; + +for my $file (@files) { + syntax_ok($file); + strict_ok($file); + warnings_ok($file); +} -- cgit v1.2.3