1#! /usr/bin/perl 2# $OpenBSD: check-name,v 1.7 2009/11/03 11:14:49 sthen Exp $ 3# Written by Marc Espie 4# Public domain 5 6use Test::Simple tests => 13; 7use OpenBSD::Search; 8use OpenBSD::PackageName; 9 10sub check_list 11{ 12 my $expected = shift; 13 @_ = sort(@_); 14 if (@$expected != @_) { 15 return 0; 16 } 17 for my $i (0 .. @_ -1) { 18 if ($expected->[$i] ne $_[$i]) { 19 return 0; 20 } 21 } 22 return 1; 23} 24 25sub check_pkgspec 26{ 27 my ($s, @list) = @_; 28 29 my $o = OpenBSD::Search::PkgSpec->new($s); 30 return $o->filter(@list); 31} 32 33@list = qw(py-MxDateTime-2.0.1-py2.1); 34ok(check_list(\@list, 35 check_pkgspec('py-MxDateTime->=2.0-py2.1', @list)), 36 'flavor with number'); 37@list = qw(foo-1.0 foo-1.0p0 foo-1.0p25); 38ok(check_list([qw(foo-1.0)], 39 check_pkgspec('foo-<1.0p0', @list)), 40 'before 1.0p0 came 1.0'); 41ok(check_list([qw(foo-1.0 foo-1.0p0)], 42 check_pkgspec('foo-<=1.0p0', @list)), 43 '1.0 and 1.0p0 both match <=1.0p0'); 44ok(check_list([qw(foo-1.0 foo-1.0p0 foo-1.0p25)], 45 check_pkgspec('foo-1.0', @list)), 46 'any 1.0p* matches 1.0'); 47ok(check_list([qw(foo-1.0rc2)], 48 check_pkgspec('foo-<1.0', @list)), 49 'before 1.0 came 1.0rc2'); 50ok(check_list([qw(foo-1.0)], 51 check_pkgspec('foo-<1.0pl1', @list)), 52 'before 1.0pl1 came 1.0'); 53 54my @pkglist=qw(foo-1.0 bar-2.0 foo-2.5 foobar-2.3-pouet hugs-noversion baz-0.0 55 baz-1.1 baz-25.3 pouet-1.0 pouet-zoinx-1.0 pouet-0.0-foo); 56 57my $hash = OpenBSD::PackageName::compile_stemlist(@pkglist); 58 59ok(check_list([qw(bar-2.0)], 60 $hash->find('bar')), 61 'simple stem lookup'); 62ok(check_list([qw(foo-1.0 foo-2.5)], 63 $hash->find('foo')), 64 'simple stem lookup with several results'); 65ok(check_list([qw(baz-0.0 baz-1.1 baz-25.3)], 66 $hash->find('baz')), 67 'stem lookup, no duplicates'); 68ok(check_list([qw(foobar-2.3-pouet)], 69 $hash->find('foobar')), 70 'stem lookup with flavor'); 71ok(check_list([qw(pouet-0.0-foo pouet-1.0)], 72 $hash->find('pouet')), 73 'complicated stem matching'); 74ok(check_list([], 75 $hash->find('hugs')), 76 'bogus stem matching with no version'); 77ok(check_list([qw(hugs-noversion)], 78 $hash->find('hugs-noversion')), 79 'stem matching with no version'); 80