Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
[p5sagit/p5-mst-13.2.git] / ext / CPANPLUS / t / 09_CPANPLUS-Internals-Search.t
1 ### make sure we can find our conf.pl file
2 BEGIN { 
3     use FindBin; 
4     require "$FindBin::Bin/inc/conf.pl";
5 }
6
7 use strict;
8 use Test::More 'no_plan';
9 use Data::Dumper;
10 use CPANPLUS::Backend;
11 use CPANPLUS::Internals::Constants;
12
13 my $Conf    = gimme_conf();
14 my $CB      = CPANPLUS::Backend->new($Conf);
15 my $ModName = TEST_CONF_MODULE;
16 my $Mod     = $CB->module_tree( $ModName );
17
18
19 ### search for modules ###
20 for 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 ###
38 my $auth = $Mod->author;
39 for 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: