1### make sure we can find our conf.pl file
2BEGIN {
3    use FindBin;
4    require "$FindBin::Bin/inc/conf.pl";
5}
6
7use strict;
8use Test::More 'no_plan';
9use Data::Dumper;
10use CPANPLUS::Backend;
11use CPANPLUS::Internals::Constants;
12
13my $Conf    = gimme_conf();
14my $CB      = CPANPLUS::Backend->new($Conf);
15my $ModName = TEST_CONF_MODULE;
16my $Mod     = $CB->module_tree( $ModName );
17
18
19### search for modules ###
20for my $type ( CPANPLUS::Module->accessors() ) {
21
22    ### don't muck around with references/objects
23    ### or private identifiers
24    next if ref $Mod->$type() or $type =~/^_/;
25
26    my @aref = $CB->search(
27                    type    => $type,
28                    allow   => [$Mod->$type()],
29                );
30
31    ok( scalar @aref,       "Module found by '$type'" );
32    for( @aref ) {
33        ok( IS_MODOBJ->($_),"   Module isa module object" );
34    }
35}
36
37### search for authors ###
38my $auth = $Mod->author;
39for my $type ( CPANPLUS::Module::Author->accessors() ) {
40
41    ### don't muck around with references/objects
42    ### or private identifiers
43    next if ref $auth->$type() or $type =~/^_/;
44
45    my @aref = $CB->search(
46                    type    => $type,
47                    allow   => [$auth->$type()],
48                );
49
50    ok( @aref,                  "Author found by '$type'" );
51    for( @aref ) {
52        ok( IS_AUTHOBJ->($_),   "   Author isa author object" );
53    }
54}
55
56
57{   my $warning = '';
58    local $SIG{__WARN__} = sub { $warning .= "@_"; };
59
60    {   ### try search that will yield nothing ###
61        ### XXX SOURCEFILES FIX
62        my @list = $CB->search( type    => 'module',
63                                allow   => [$ModName.$$] );
64
65        is( scalar(@list), 0,   "Valid search yields no results" );
66        is( $warning, '',       "   No warnings issued" );
67    }
68
69    {   ### try bogus arguments ###
70        my @list = $CB->search( type => '', allow => ['foo'] );
71
72        is( scalar(@list), 0,   "Broken search yields no results" );
73        like( $warning, qr/^Key 'type'.* is of invalid type for/,
74                                "   Got a warning for wrong arguments" );
75    }
76}
77
78# Local variables:
79# c-indentation-style: bsd
80# c-basic-offset: 4
81# indent-tabs-mode: nil
82# End:
83# vim: expandtab shiftwidth=4:
84