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