diff options
author | Pascal Terjan <pterjan@mageia.org> | 2022-10-25 20:29:46 +0000 |
---|---|---|
committer | Pascal Terjan <pterjan@mageia.org> | 2022-11-01 22:23:53 +0000 |
commit | 2c86ed6389d741cfe41323937e9e93b89935490e (patch) | |
tree | 046cb4f3b1bf2046d8555ae18100280c3a3fb62c /t/resolve.t | |
parent | 775e1ad51b6318b1a308be9b997accc470329282 (diff) | |
download | perl-URPM-topic/parse_property.tar perl-URPM-topic/parse_property.tar.gz perl-URPM-topic/parse_property.tar.bz2 perl-URPM-topic/parse_property.tar.xz perl-URPM-topic/parse_property.zip |
Fix parsing of properties containing [topic/parse_property
For example, the name extracted from a requirement of
"python3.10dist(fonttools[unicode])[>= 4.10]" was sometimes
"python3.10dist(fonttools" instead of the expected
"python3.10dist(fonttools[unicode])".
Code parsing such strings existed in many places, it now exists only
in 2 places, a perl version in Resolve.pm and a C version in URPM.xs.
Both codes used to handle both "foo >= 0" and "foo[>= 0]" but at least
the perl code seems to only call it on provides/conflicts/obsoletes
which are always using the second form so the support for it was
dropped from the perl version for the sake of simplicity.
Diffstat (limited to 't/resolve.t')
-rw-r--r-- | t/resolve.t | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/t/resolve.t b/t/resolve.t new file mode 100644 index 0000000..56869b1 --- /dev/null +++ b/t/resolve.t @@ -0,0 +1,46 @@ +#!/usr/bin/perl + +use strict ; +use warnings ; +use Test::More; +use URPM::Resolve; + +my $testcases = [ + { + property => 'mageia-release[>= 1]', + name => 'mageia-release', + op => '>=', + version => '1', + }, { + property => 'python3.10dist(fonttools[unicode])[>= 4.10]', + name => 'python3.10dist(fonttools[unicode])', + op => '>=', + version => '4.10', + }, { + property => 'python3.10dist(fonttools[unicode])', + name => 'python3.10dist(fonttools[unicode])', + op => '', + version => '', + }, { + property => 'openssl[*][>= 0.9.7]', + name => 'openssl', + op => '>=', + version => '0.9.7', + }, { + property => 'openssl[*]', + name => 'openssl', + op => '', + version => '', + }]; + +foreach my $tc (@$testcases) { + is(URPM::property2name($tc->{property}), $tc->{name}, "property2name(\"$tc->{property}\")"); + my $expected = [$tc->{name}, $tc->{op} ? "$tc->{op} $tc->{version}" : ""]; + my @got = URPM::property2name_range($tc->{property}); + is_deeply(\@got, $expected, "property2name_range(\"$tc->{property}\")"); + $expected = [$tc->{name}, $tc->{op}, $tc->{version}]; + @got = URPM::property2name_op_version($tc->{property}); + is_deeply(\@got, $expected, "property2name_op_version(\"$tc->{property}\")"); +} + +done_testing(); |