### make sure we can find our conf.pl file BEGIN { use FindBin; require "$FindBin::Bin/inc/conf.pl"; } use strict; use Module::Load; use Test::More eval { load 'CPANPLUS::Internals::Source::SQLite'; 1 } ? 'no_plan' : (skip_all => "SQLite engine not available"); use Data::Dumper; use File::Basename qw[dirname]; use CPANPLUS::Error; use CPANPLUS::Backend; use CPANPLUS::Internals::Constants; my $conf = gimme_conf(); ### make sure we use the SQLite engine $conf->set_conf( source_engine => 'CPANPLUS::Internals::Source::SQLite' ); my $cb = CPANPLUS::Backend->new( $conf ); my $mod = TEST_CONF_MODULE; my $auth = TEST_CONF_AUTHOR; ok( $cb->reload_indices( update_source => 1 ), "Building trees" ); ok( $cb->__sqlite_dbh, " Got a DBH " ); ok( $cb->__sqlite_file, " Got a DB file" ); ### make sure we have trees and they're hashes { ok( $cb->author_tree, "Got author tree" ); isa_ok( $cb->author_tree, "HASH" ); ok( $cb->module_tree, "Got module tree" ); isa_ok( $cb->module_tree, "HASH" ); } ### save state, shouldn't work { CPANPLUS::Error->flush; my $rv = $cb->save_state; ok( !$rv, "Saving state not implemented" ); like( CPANPLUS::Error->stack_as_string, qr/not implemented/i, " Diagnostics confirmed" ); } ### test look ups { my %map = ( $auth => 'author_tree', $mod => 'module_tree', ); while( my($str, $meth) = each %map ) { ok( $str, "Trying to retrieve $str" ); ok( $cb->$meth( $str ), " Got $str object via ->$meth" ); ok( $cb->$meth->{$str}, " Got author object via ->{ $str }" ); ok( exists $cb->$meth->{ $str }, " Testing exists() " ); ok( not(exists( $cb->$meth->{ $$ } )), " And non-exists() " ); cmp_ok( scalar(keys(%{ $cb->$meth })), ">", 1, " Got keys()" ); cmp_ok( scalar(keys(%{ $cb->$meth })), '==', scalar(keys(%{ $cb->$meth })), " Keys == Values" ); while( my($key,$val) = each %{ $cb->$meth } ) { ok( $key, " Retrieved $key via each()" ); ok( $val, " And value" ); ok( ref $val, " Value is a ref: $val" ); can_ok( $val, '_id' ); } } }