#!perl use strict; use lib qw(lib); use Cwd; use DBI; use Path::Class; my $dsn = "DBI:Pg:dbname=kasago_test"; my $dbh; eval { $dbh = DBI->connect($dsn, "", "") }; if ($dbh) { eval 'use Test::More tests => 37;'; } else { eval 'use Test::More skip_all => "Need PostgreSQL database called kasago_test for testing, skipping"'; exit; } use_ok('Kasago'); my $kasago = Kasago->new({ dbh => $dbh }); $kasago->init; is_deeply([ $kasago->sources ], []); my $source = "Acme-Colour"; my $dir = dir(cwd, "t", "Acme-Colour-1.00"); $kasago->import($source, $dir); is_deeply([ $kasago->sources ], [$source]); is_deeply( [ $kasago->files($source) ], [ 'Build.PL', 'CHANGES', 'MANIFEST', 'META.yml', 'Makefile.PL', 'README', 'lib/Acme/Colour.pm', 'test.pl' ] ); is(scalar($kasago->tokens($source, 'Build.PL')), 48); is(scalar($kasago->tokens($source, 'CHANGES')), 100); is(scalar($kasago->tokens($source, 'MANIFEST')), 19); is(scalar($kasago->tokens($source, 'META.yml')), 25); is(scalar($kasago->tokens($source, 'Makefile.PL')), 42); is(scalar($kasago->tokens($source, 'README')), 392); is(scalar($kasago->tokens($source, 'lib/Acme/Colour.pm')), 890); is(scalar($kasago->tokens($source, 'test.pl')), 867); my @tokens = $kasago->search('orange'); is(scalar(@tokens), 4); is($tokens[0]->source, 'Acme-Colour'); is($tokens[0]->row, 113); is($tokens[0]->col, 25); is($tokens[0]->value, 'orange'); is($tokens[0]->file, 'test.pl'); is($tokens[0]->line, '$c = Acme::Colour->new("orange");'); is($tokens[3]->source, 'Acme-Colour'); is($tokens[3]->row, 117); is($tokens[3]->col, 23); is($tokens[3]->value, 'orange'); is($tokens[3]->file, 'test.pl'); is($tokens[3]->line, 'is("$c", "dark red", "orange and brown is dark red");'); my @hits = $kasago->search_merged('orange'); is(scalar(@hits), 3); is($hits[0]->row, 113); is(scalar(@{ $hits[0]->tokens }), 1); is($hits[1]->row, 115); is(scalar(@{ $hits[1]->tokens }), 2); is($hits[2]->row, 117); is(scalar(@{ $hits[2]->tokens }), 1); @tokens = $kasago->search_more('orange brown'); @tokens = $kasago->search('regenerated'); is(scalar(@tokens), 0); $kasago->delete('Acme-Colour'); is_deeply([ $kasago->sources ], []); @tokens = $kasago->search('orange'); is(scalar(@tokens), 0); $dir = dir(cwd, "t", "Acme-Colour-1.01"); $kasago->import($source, $dir); is_deeply([ $kasago->sources ], ['Acme-Colour']); @tokens = $kasago->search('regenerated'); is(scalar(@tokens), 1);