summaryrefslogtreecommitdiffstats
path: root/t/scripts/harness/prepare.t
diff options
context:
space:
mode:
Diffstat (limited to 't/scripts/harness/prepare.t')
-rw-r--r--t/scripts/harness/prepare.t159
1 files changed, 159 insertions, 0 deletions
diff --git a/t/scripts/harness/prepare.t b/t/scripts/harness/prepare.t
new file mode 100644
index 0000000..90fcb39
--- /dev/null
+++ b/t/scripts/harness/prepare.t
@@ -0,0 +1,159 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2018 Felix Lechner
+#
+# 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, you can find it on the World Wide
+# Web at https://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA
+
+use strict;
+use warnings;
+
+BEGIN { $ENV{'LINTIAN_BASE'} //= q{.}; }
+
+use File::Basename qw(basename);
+use File::Temp;
+use File::stat;
+use IPC::Run3;
+use List::Util qw(max);
+use Test::More;
+
+use lib "$ENV{'LINTIAN_BASE'}/lib";
+use Test::Lintian::Prepare qw(prepare);
+use Test::Lintian::ConfigFile qw(read_config);
+use Test::Lintian::Helper qw(rfc822date);
+
+# dummy test name; used in desc and directory name
+my $TESTNAME = 'shared-libs-non-pic-i386';
+
+# temporary work directory
+my $tempdir = Path::Tiny->tempdir();
+
+# specification path
+my $specpath = $tempdir->child('spec')->child($TESTNAME);
+$specpath->mkpath;
+
+# test description
+my $desctext =<<"EOSTR";
+Testname: $TESTNAME
+Version: 1.0-2
+Skeleton: upload-native
+Test-Architectures: any-amd64 any-i386
+Package-Architecture: any
+Test-Depends: debhelper (>= 9.20151004~)
+Description: Test checks related to non-pic code
+Test-For: shlib-with-non-pic-code
+Check: shared-libs
+EOSTR
+
+my $descpath = $specpath->child('fill-values');
+$descpath->spew($desctext);
+
+my $runpath = $tempdir->child('run')->child($TESTNAME);
+$runpath->mkpath;
+
+prepare($specpath->stringify, $runpath->stringify, 't');
+
+# read resulting test description
+my $testcase = read_config($runpath->child('fill-values')->stringify);
+
+my @testarches = $testcase->trimmed_list('Test-Architectures');
+
+# test plan
+plan tests => 20 + scalar @testarches;
+
+is($testcase->unfolded_value('Testname'), $TESTNAME, 'Correct name');
+
+is($testcase->unfolded_value('Version'), '1.0-2', 'Correct version');
+is($testcase->unfolded_value('Upstream-Version'),
+ '1.0', 'Correct upstream version');
+
+is(
+ $testcase->unfolded_value('Test-Architectures'),
+ 'any-amd64 any-i386',
+ 'Correct test architectures'
+);
+isnt($testcase->unfolded_value('Test-Architectures'),
+ 'any', 'Correct test architectures');
+for my $testarch (@testarches) {
+ my @command
+ = (qw{dpkg-architecture --list-known --match-wildcard}, $testarch);
+ my $output;
+
+ run3(\@command, \undef, \$output);
+ my @known = grep { length } split(/\n/, $output);
+
+ cmp_ok(scalar @known, '>', 1, "Known test architecture $testarch");
+}
+
+is($testcase->unfolded_value('Host-Architecture'),
+ $ENV{'DEB_HOST_ARCH'}, 'Correct host architecture');
+isnt(
+ $testcase->unfolded_value('Host-Architecture'),
+ $testcase->unfolded_value('Test-Architectures'),
+ 'Test and host architectures are different'
+);
+
+is($testcase->unfolded_value('Package-Architecture'),
+ 'any', 'Changed package architecture');
+isnt($testcase->unfolded_value('Package-Architecture'),
+ 'all', 'Not the default package architecture');
+
+is($testcase->unfolded_value('Skeleton'), 'upload-native', 'Correct skeleton');
+
+is(
+ $testcase->unfolded_value('Test-Depends'),
+ 'debhelper (>= 9.20151004~)',
+ 'Correct test dependencies'
+);
+
+is($testcase->unfolded_value('Test-For'),
+ 'shlib-with-non-pic-code','Correct Test-For');
+ok(!$testcase->declares('Test-Against'), 'Correct Test-Against');
+
+is($testcase->unfolded_value('Standards-Version'),
+ $ENV{'POLICY_VERSION'}, 'Correct policy version');
+
+is($testcase->unfolded_value('Type'), 'native', 'Test is native');
+isnt($testcase->unfolded_value('Type'), 'yes', 'Native type not yes.');
+
+is(
+ $testcase->unfolded_value('Dh-Compat-Level'),
+ $ENV{'DEFAULT_DEBHELPER_COMPAT'},
+ 'Default debhelper compat level'
+);
+
+is(
+ $testcase->unfolded_value('Description'),
+ 'Test checks related to non-pic code',
+ 'Correct description'
+);
+isnt(
+ $testcase->unfolded_value('Description'),
+ 'No Description Available',
+ 'Not default description'
+);
+
+is(
+ $testcase->unfolded_value('Author'),
+ 'Debian Lintian Maintainers <lintian-maint@debian.org>',
+ 'Default author'
+);
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et