DPKG-Packages-Parser
view release on metacpan or search on metacpan
my $depends_libc = $pkg->{Depends}->[0];
ok($depends_libc->{name} eq 'libc6', 'name is libc6');
ok($depends_libc->{op} eq '>=', 'operator is >=');
ok($depends_libc->{version} eq '2.4', 'version is 2.4');
# Test the OR functionality
$pkg = $parser1->get_package('0ad-data-common');
ok(@{$pkg->{Depends}} == 3, 'There are 3 dependencies');
my @depends_items = @{$pkg->{Depends}->[0]};
ok(@depends_items == 2, 'It is either fonts-dejavu-core OR ttf-dejavu-core');
ok($depends_items[0]->{name} eq 'fonts-dejavu-core');
ok($depends_items[1]->{name} eq 'ttf-dejavu-core');
# Test the parsing when you just want a list of fields and not everything.
$parser1->parse('Size', 'MD5sum');
my $zeroAD = $parser1->get_package('0ad');
ok($zeroAD->{Package} eq '0ad');
ok($zeroAD->{Size} == 7891488);
ok($zeroAD->{MD5sum} eq '4d471183a39a3a11d00cd35bf9f6803d');
# Test the package string parser
my $e = $parser1->_parse_package_str('0ad-data (>= 0.0.026)');
ok($e->{name} eq '0ad-data');
ok($e->{op} eq '>=');
ok($e->{version} eq '0.0.026');
$e = $parser1->_parse_package_str('python3:any');
ok($e->{name} eq 'python3');
ok(!defined($e->{version}));
ok($e->{arch} eq 'any');
$e = $parser1->_parse_package_str('lmms-vst-server:i386 (>= 1.2.2+dfsg1-6)');
ok($e->{name} eq 'lmms-vst-server');
ok($e->{arch} eq 'i386');
ok($e->{op} eq '>=');
ok($e->{version} eq '1.2.2+dfsg1-6');
{
my $r = $/;
local $/ = undef;
my $packages_as_string = <DATA>;
local $/ = $r; # reset back
open(my $fh, '<', \$packages_as_string) or die "cannot read __DATA__ from scalar\n";
my $parser2 = DPKG::Packages::Parser->new(fh => $fh);
$parser2->parse();
my $perl = $parser2->get_package('perl');
ok(defined($perl), 'we found a perl package');
ok(@{$perl->{Recommends}} == 1, 'recommends has one element');
ok($perl->{Recommends}->[0]->{name} eq 'netbase', 'netbase is recommended');
}
done_testing;
__DATA__
Package: perl
Version: 5.36.0-7+deb12u3
Installed-Size: 670
Maintainer: Niko Tyni <ntyni@debian.org>
Architecture: amd64
Replaces: perl-base (<< 5.36.0-2), perl-modules (<< 5.22.0~)
Provides: libansicolor-perl (= 5.01), libarchive-tar-perl (= 2.40), libattribute-handlers-perl (= 1.02), libautodie-perl (= 2.34), libcompress-raw-bzip2-perl (= 2.103), libcompress-raw-zlib-perl (= 2.105), libcompress-zlib-perl (= 2.106), libcpan-met...
Depends: perl-base (= 5.36.0-7+deb12u3), perl-modules-5.36 (>= 5.36.0-7+deb12u3), libperl5.36 (= 5.36.0-7+deb12u3)
Pre-Depends: dpkg (>= 1.17.17)
Recommends: netbase
Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl, make, libtap-harness-archive-perl
Conflicts: libjson-pp-perl (<< 2.27200-2)
Breaks: apt-show-versions (<< 0.22.10), libdist-inkt-perl (<< 0.024-5), libmarc-charset-perl (<< 1.35-3), libperl-dev (<< 5.24.0~), perl-doc (<< 5.36.0-1), perl-modules-5.22, perl-modules-5.24, perl-modules-5.26 (<< 5.26.2-5)
Description: Larry Wall's Practical Extraction and Report Language
Multi-Arch: allowed
Homepage: http://dev.perl.org/perl5/
Description-md5: 603cb1e5fe66da8106c364f4e9b84082
Build-Essential: yes
Tag: devel::interpreter, devel::lang:perl, devel::library, implemented-in::c,
implemented-in::perl, interface::commandline, role::devel-lib,
role::metapackage, role::program
Section: perl
Priority: standard
Filename: pool/main/p/perl/perl_5.36.0-7+deb12u3_amd64.deb
Size: 238900
MD5sum: ecd2edf27d8e7a67795e81e1756de5f4
SHA256: afa50ec7d9b1a407cd0187dae033644ef13578d4f3792435e0c41b962ffec0c4
Package: libperl5.36
Source: perl
Version: 5.36.0-7+deb12u3
Installed-Size: 28864
Maintainer: Niko Tyni <ntyni@debian.org>
Architecture: amd64
Replaces: libarchive-tar-perl (<= 1.38-2), libcompress-raw-bzip2-perl (<< 2.103), libcompress-raw-zlib-perl (<< 2.105), libcompress-zlib-perl (<< 2.106), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.17), libio-comp...
Depends: libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libgdbm-compat4 (>= 1.18-3), libgdbm6 (>= 1.21), zlib1g (>= 1:1.2.2.3), perl-modules-5.36 (>= 5.36.0-7+deb12u3)
Suggests: sensible-utils
Breaks: libcompress-raw-bzip2-perl (<< 2.103), libcompress-raw-zlib-perl (<< 2.105), libcompress-zlib-perl (<< 2.106), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.17), libfilter-perl (<< 1.60), libio-compress-base...
Description: shared Perl library
Multi-Arch: same
Homepage: http://dev.perl.org/perl5/
Description-md5: 9f2b8bcf7a6d0534303f5c1c5a29866d
Tag: role::shared-lib
Section: libs
Priority: optional
Filename: pool/main/p/perl/libperl5.36_5.36.0-7+deb12u3_amd64.deb
Size: 4195924
MD5sum: 370d5291f477716a3c29192d61027184
SHA256: 591903643119c7e1735011369287976eccab1d79b1d2f210760e2138d0a3aa46
( run in 0.821 second using v1.01-cache-2.11-cpan-39bf76dae61 )