Browse Source

test: Check perl code compilation, warnings and strictness

Guillem Jover 9 years ago
parent
commit
8d557d6c8e
4 changed files with 51 additions and 0 deletions
  1. 8 0
      Makefile.am
  2. 1 0
      README
  3. 2 0
      debian/changelog
  4. 40 0
      t/strict.t

+ 8 - 0
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

+ 1 - 0
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

+ 2 - 0
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 <guillem@debian.org>  Tue, 09 Dec 2014 23:53:18 +0100
 

+ 40 - 0
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 <https://www.gnu.org/licenses/>.
+
+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);
+}