diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-30 13:50:54 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 12:21:36 +0100 |
commit | 2c1ecb5ed3ca22a8652408c4a1ad060bf2229675 (patch) | |
tree | 77439616bd3852a5e20fcb565515f771b05fcff1 | |
parent | 6d69f86475d897aaf3b565d24ceaf21640c615f7 (diff) |
Test suite: Use stunt Dpkg::Changelog::Parse
This saves a further 13s. Overalll the stunt changelog machinery
saves 28s out of 100s (in my example case, the current
debpolicy-newreject).
-rwxr-xr-x | tests/tests/debpolicy-newreject | 2 | ||||
-rw-r--r-- | tests/tstunt/Dpkg/Changelog/Parse.pm | 49 | ||||
-rwxr-xr-x | tests/tstunt/dpkg-parsechangelog | 8 |
3 files changed, 57 insertions, 2 deletions
diff --git a/tests/tests/debpolicy-newreject b/tests/tests/debpolicy-newreject index c6260a7..da40631 100755 --- a/tests/tests/debpolicy-newreject +++ b/tests/tests/debpolicy-newreject @@ -2,7 +2,7 @@ set -e . tests/lib -t-tstunt dpkg-parsechangelog +t-tstunt dpkg-parsechangelog Dpkg/Changelog/Parse.pm t-debpolicy t-prep-newpackage example 1.0 diff --git a/tests/tstunt/Dpkg/Changelog/Parse.pm b/tests/tstunt/Dpkg/Changelog/Parse.pm new file mode 100644 index 0000000..4d797af --- /dev/null +++ b/tests/tstunt/Dpkg/Changelog/Parse.pm @@ -0,0 +1,49 @@ +# -*- perl -*- +# +# Copyright (C) 2015 Ian Jackson +# +# Some bits stolen from the proper Dpkg::Changelog::Parse +# (from dpkg-dev 1.16.16): +# +# Copyright (C) 2005, 2007 Frank Lichtenheld <frank@lichtenheld.de> +# Copyright (C) 2009 Raphael Hertzog <hertzog@debian.org> +# +# 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 3 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 <http://www.gnu.org/licenses/>. + +package Dpkg::Changelog::Parse; + +use strict; +use warnings; + +our $VERSION = "1.00"; + +use Dpkg::Control::Changelog; + +use base qw(Exporter); +our @EXPORT = qw(changelog_parse); + +sub changelog_parse { + my (%options) = @_; # ignored + + $options{'file'} //= 'debian/changelog'; + + open P, "dpkg-parsechangelog -l$options{'file'} |" or die $!; + + my $fields = Dpkg::Control::Changelog->new(); + $fields->parse(\*P, "output of stunt changelog parser"); + + close P or die "$! $?"; + + return $fields; +} diff --git a/tests/tstunt/dpkg-parsechangelog b/tests/tstunt/dpkg-parsechangelog index 2e0360d..c45b124 100755 --- a/tests/tstunt/dpkg-parsechangelog +++ b/tests/tstunt/dpkg-parsechangelog @@ -14,10 +14,16 @@ # sys 0m0.012s # $ +my $infile = "debian/changelog"; + +if (@ARGV && $ARGV[0] =~ s/^-l//) { + $infile = shift @ARGV; +} + die if @ARGV; use strict; -open C, "debian/changelog" or die $!; +open C, $infile or die $!; $!=0; $_ = <C>; m/^(\S+) \(([^()]+)\) (\S+)\; urgency=(\S+)$/ or die "$!, $_ ?"; |