summaryrefslogtreecommitdiff
path: root/regress/usr.sbin/pkg_add/check-name
blob: 8c25efc79e6e73cfc4de795fdaecaeaa0018fcbc (plain)
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
66
67
68
69
70
71
#! /usr/bin/perl
# $OpenBSD: check-name,v 1.4 2005/08/16 16:02:09 espie Exp $
# Written by Marc Espie
# Public domain

use Test::Simple tests => 12;
use OpenBSD::PkgSpec;
use OpenBSD::PackageName;

sub check_list
{
	my $expected = shift;
	@_ = sort(@_);
	if (@$expected != @_) {
		return 0;
	}
	for my $i (0 .. @_ -1) {
		if ($expected->[$i] ne $_[$i]) {
			return 0;
		}
	}
	return 1;
}

@list = qw(py-MxDateTime-2.0.1-py2.1);
ok(check_list(\@list, 
    OpenBSD::PkgSpec::match('py-MxDateTime->=2.0-py2.1', @list)),
	'flavor with number');
# packages without a version number should work
my @list = qw(hugs98-Nov2003);
ok(check_list(\@list, 
    OpenBSD::PkgSpec::match('hugs98-Nov2003', @list)),
	'no version number');

@list = qw(foo-1.0 foo-1.0p0 foo-1.0p25);
ok(check_list([qw(foo-1.0)], 
    OpenBSD::PkgSpec::match('foo-<1.0p0', @list)),
	'before 1.0p0 came 1.0');
ok(check_list([qw(foo-1.0 foo-1.0p0)], 
    OpenBSD::PkgSpec::match('foo-<=1.0p0', @list)),
	'1.0 and 1.0p0 both match <=1.0p0'); 
ok(check_list([qw(foo-1.0 foo-1.0p0 foo-1.0p25)],
    OpenBSD::PkgSpec::match('foo-1.0', @list)),
	'any 1.0p* matches 1.0');

my @pkglist=qw(foo-1.0 bar-2.0 foo-2.5 foobar-2.3-pouet hugs-noversion baz-0.0 
	baz-1.1 baz-25.3 pouet-1.0 pouet-zoinx-1.0 pouet-0.0-foo);

my $hash = OpenBSD::PackageName::compile_stemlist(@pkglist);

ok(check_list([qw(bar-2.0)],
    $hash->findstem('bar')),
	'simple stem lookup');
ok(check_list([qw(foo-1.0 foo-2.5)],
    $hash->findstem('foo')),
	'simple stem lookup with several results');
ok(check_list([qw(baz-0.0 baz-1.1 baz-25.3)],
    $hash->findstem('baz')),
	'stem lookup, no duplicates');
ok(check_list([qw(foobar-2.3-pouet)],
    $hash->findstem('foobar')),
	'stem lookup with flavor');
ok(check_list([qw(pouet-0.0-foo pouet-1.0)],
    $hash->findstem('pouet')),
    	'complicated stem matching');
ok(check_list([],
    $hash->findstem('hugs')),
    	'bogus stem matching with no version');
ok(check_list([qw(hugs-noversion)],
    $hash->findstem('hugs-noversion')),
    	'stem matching with no version');