use strict; use warnings; use Test::More tests => 17; use_ok('SWISH::Prog'); use_ok('SWISH::Prog::Native::Indexer'); use_ok('SWISH::Prog::Aggregator::FS'); use_ok('SWISH::Prog::Config'); SKIP: { # is executable present? my $test = SWISH::Prog::Native::Indexer->new; if ( !$test->swish_check ) { skip "swish-e not installed", 13; } ok( my $config = SWISH::Prog::Config->new('t/test.conf'), "config from t/test.conf" ); # skip our local config test files $config->FileRules( 'dirname contains config', 1 ); $config->FileRules( 'filename is swish.xml', 1 ); $config->FileRules( 'filename contains \.t', 1 ); $config->FileRules( 'dirname contains (testindex|\.index)', 1 ); $config->FileRules( 'filename contains \.conf', 1 ); $config->FileRules( 'dirname contains mailfs', 1 ); ok( my $invindex = SWISH::Prog::Native::InvIndex->new( path => 't/testindex', ), "new invindex" ); ok( my $indexer = SWISH::Prog::Native::Indexer->new( invindex => $invindex, config => $config, ), "new indexer" ); ok( my $aggregator = SWISH::Prog::Aggregator::FS->new( indexer => $indexer, config => $config, #verbose => 1, #debug => 1, ), "new filesystem aggregator" ); ok( my $prog = SWISH::Prog->new( aggregator => $aggregator, #verbose => 1, config => $config, ), "new program" ); ok( $prog->run('t/'), "run program" ); is( $prog->count, 7, "indexed test docs" ); # test with a search SKIP: { eval { require SWISH::Prog::Native::Searcher; }; if ($@) { skip "Cannot test Searcher without SWISH::API", 6; } ok( my $searcher = SWISH::Prog::Native::Searcher->new( invindex => $invindex, ), "new searcher" ); ok( my $results = $searcher->search('gzip'), "do search" ); is( $results->hits, 2, "2 gzip hits" ); ok( my $results_OR = $searcher->search( qq/some words/, { default_boolop => 'OR' } ), "default_boolop=OR" ); ok( my $results_AND = $searcher->search( qq/some words/, { default_boolop => 'AND' } ), "default_boolop=AND" ); cmp_ok( $results_OR->hits, '>', $results_AND->hits, "OR hits > AND hits" ); } # clean up header so other test counts work unlink('t/testindex/swish.xml') unless $ENV{PERL_DEBUG}; }