1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#! /usr/bin/perl
# $OpenBSD: check-cfl,v 1.3 2014/01/31 10:28:18 espie Exp $
# Written by Marc Espie
# Public domain
use strict;
use warnings;
use Test::Simple tests => 4;
use OpenBSD::PkgCfl;
use OpenBSD::PackingList;
use OpenBSD::PackingElement;
sub check_list
{
my $expected = shift;
my @r = sort(@$expected);
@_ = sort(@_);
if (@r != @_) {
print STDERR "length: ", scalar(@r)," vs. ",
scalar(@_), "\n";
print STDERR "Expected: ", join(',', @r), "\n";
print STDERR "Result: ", join(',', @_), "\n";
return 0;
}
for my $i (0 .. @_ -1) {
if ($r[$i] ne $_[$i]) {
print STDERR "$r[$i] vs. $_[$i]\n";
return 0;
}
}
return 1;
}
sub check_conflict
{
my ($plist, @list) = @_;
my $cfl = OpenBSD::PkgCfl->make_conflict_list($plist);
return $cfl->conflicts_with(@list);
}
my $p1 = OpenBSD::PackingList->new;
OpenBSD::PackingElement::Name->add($p1, "foo-1.0");
my @l1 = qw(foo-2.0 partial-foo-2.5 bar-2.0 bar-1.5 buz-1.0 .libs-buz-0.0);
my @r1 = qw(foo-2.0 partial-foo-2.5);
ok(check_list(\@r1, check_conflict($p1, @l1)));
my $p2 = OpenBSD::PackingList->new;
OpenBSD::PackingElement::Name->add($p2, "bar-2.0");
OpenBSD::PackingElement::NoDefaultConflict->add($p2);
my @r2 = qw(bar-2.0);
ok(check_list(\@r2, check_conflict($p2, @l1)));
my $p3 = OpenBSD::PackingList->new;
OpenBSD::PackingElement::Name->add($p3, "buz-2.5");
OpenBSD::PackingElement::Conflict->add($p3, "bar->=2");
my @r3 = qw(bar-2.0 buz-1.0 .libs-buz-0.0);
ok(check_list(\@r3, check_conflict($p3, @l1)));
my @l2 = qw(partial-foo-2.5 partial-partial-foo-2.10 bar-2.0 bar-1.5 buz-1.0 .libs-buz-0.0);
my @r4 = qw(partial-foo-2.5 partial-partial-foo-2.10);
ok(check_list(\@r4, check_conflict($p1, @l2)));
|