summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2016-12-15 23:47:16 +0100
committerGuillem Jover <guillem@debian.org>2017-01-25 04:02:40 +0100
commitdf630946cc239c4fb7494dd3a2b78fa4e1c98358 (patch)
tree3cf1adbf933c868650cbe76855f3ff94de1c4b39 /scripts
parent028bfa99a016ae133e451d606d7b88a2975b5680 (diff)
downloaddpkg-df630946cc239c4fb7494dd3a2b78fa4e1c98358.tar.gz
dpkg-source: Refactor testsuite functions
Call set_testsuite_triggers_field() from inside set_testsuite_fields(), so that we do not have to perform the same checks more than once.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/dpkg-source.pl20
1 files changed, 9 insertions, 11 deletions
diff --git a/scripts/dpkg-source.pl b/scripts/dpkg-source.pl
index 2d4ae5fa8..da5f25ed6 100755
--- a/scripts/dpkg-source.pl
+++ b/scripts/dpkg-source.pl
@@ -366,8 +366,7 @@ if ($options{opmode} =~ /^(build|print-format|(before|after)-build|commit)$/) {
$fields->{'Package-List'} = "\n" . join("\n", sort @pkglist);
# Check if we have a testsuite, and handle manual and automatic values.
- set_testsuite_field($fields);
- set_testsuite_triggers_field($fields, @binarypackages);
+ set_testsuite_fields($fields, @binarypackages);
# Scan fields of dpkg-parsechangelog
foreach (keys %{$changelog}) {
@@ -506,9 +505,9 @@ if ($options{opmode} =~ /^(build|print-format|(before|after)-build|commit)$/) {
exit(0);
}
-sub set_testsuite_field
+sub set_testsuite_fields
{
- my $fields = shift;
+ my ($fields, @binarypackages) = @_;
my $testsuite_field = $fields->{'Testsuite'} // '';
my %testsuite = map { $_ => 1 } split /\s*,\s*/, $testsuite_field;
@@ -516,6 +515,11 @@ sub set_testsuite_field
error(g_('test control %s is not a regular file'),
'debian/tests/control') unless -f _;
$testsuite{autopkgtest} = 1;
+
+ my $tests = Dpkg::Control::Tests->new();
+ $tests->load("$dir/debian/tests/control");
+
+ set_testsuite_triggers_field($tests, $fields, @binarypackages);
} elsif ($testsuite{autopkgtest}) {
warning(g_('%s field contains value %s, but no tests control file %s'),
'Testsuite', 'autopkgtest', 'debian/tests/control');
@@ -526,18 +530,12 @@ sub set_testsuite_field
sub set_testsuite_triggers_field
{
- my ($fields, @binarypackages) = @_;
+ my ($tests, $fields, @binarypackages) = @_;
my %testdeps;
# Never overwrite a manually defined field.
return if $fields->{'Testsuite-Triggers'};
- # We only support autopkgtests.
- return unless -e "$dir/debian/tests/control";
-
- my $tests = Dpkg::Control::Tests->new();
- $tests->load("$dir/debian/tests/control");
-
foreach my $test ($tests->get()) {
next unless $test->{Depends};