summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2014-11-17 10:40:45 +0100
committerGuillem Jover <guillem@debian.org>2015-01-28 20:50:30 +0100
commit8d557d6c8ea6f370e00d13eaa6234b2ef2d800dc (patch)
treee4b4a2b18509a8b0f5de20bf9fbc6433e14ac455
parentf38b214a69052741625e36e265f8b3e47959fa11 (diff)
downloaddpkg-8d557d6c8ea6f370e00d13eaa6234b2ef2d800dc.tar.gz
test: Check perl code compilation, warnings and strictness
-rw-r--r--Makefile.am8
-rw-r--r--README1
-rw-r--r--debian/changelog2
-rw-r--r--t/strict.t40
4 files changed, 51 insertions, 0 deletions
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 <guillem@debian.org> 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 <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);
+}