X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=videosite.git;a=blobdiff_plain;f=videosite-test.pl;fp=videosite-test.pl;h=1f3d146a11734f103a7d4b676ab02c882f005ad6;hp=34b6f52cec0ef22a012adf327251bcf64c9a7bd7;hb=debab097d66f3bd735e837a146bc81d09e420961;hpb=9bb78db68a79470e45dd6400321e3dd96ffcb20b diff --git a/videosite-test.pl b/videosite-test.pl index 34b6f52..1f3d146 100755 --- a/videosite-test.pl +++ b/videosite-test.pl @@ -4,107 +4,54 @@ use strict; use Getopt::Long; use File::Spec; use File::Basename; +use Module::Load; use Cwd qw(realpath); +use Carp; -sub ploader { +$SIG{ __DIE__ } = sub { Carp::confess( @_ ) }; - my $dir = shift; - my $pattern = shift; - my $type = shift; - my @list; - my $p; - my $g; - my @g = (); - - unshift(@INC, $dir); - - opendir(D, $dir) || return (); - @list = grep {/$pattern/ && -f File::Spec->catfile($dir, $_) } readdir(D); - closedir(D); - - foreach $p (@list) { - $p =~ s/\.pm$//; - eval qq{ require videosite::$p; }; - if ($@) { - print("Failed to load plugin: $@"); - next; - } - - $g = eval qq{ videosite::$p->new();}; - if ($@) { - print("Failed to instanciate: $@"); - delete($INC{$p}); - next; - } - - if ($type eq $g->{'TYPE'}) { - push(@g, $g); - } else { - printf('%s has wrong type (got %s, expected %s)', $p, $g->{'TYPE'}, $type); - delete($INC{$p}); - } - } - - return @g; -} - -sub connectors { - my $c = {name => 'environment', schemas => {}}; - - if (exists($ENV{'http_proxy'})) { - $c->{schemas}->{'http'} = $ENV{'http_proxy'} - } - - if (exists($ENV{'https_proxy'})) { - $c->{schemas}->{'https'} = $ENV{'https_proxy'} - } - - return ( $c ); -} - - -my $hq = 0; -my $ext = '.flv'; -my $y; -my $f; -my $m; -my @g; -my $bp; my $debug = 0; -my ($success, $notest, $fail) = (0,0,0); - -GetOptions("d" => \$debug); - -# This is some dark magic to find out our real base directory, -# where we hope to find our plugins. -$bp = File::Spec->catdir(dirname(realpath($0)), 'videosite'); -unshift(@INC, dirname(realpath($0))); - -@g = ploader($bp, '.*Grabber\.pm$', 'grabber'); -($f) = ploader($bp, '^FileGetter\.pm$', 'getter'); - -unless(@g and defined($f)) { - print("No plugins could be loaded\n"); - exit 1; +my %config = ( + mode => 'download', + getter => 'filegetter', +); +my $success = 0; +my $fail = 0; +my $notest = 0; + +push(@INC, dirname(realpath($0))); +load 'libvideosite'; + +unless(libvideosite::register_api({ + _debug => sub { return $debug }, +})) { + die("Error registering API: $libvideosite::error"); } -foreach (@g, $f) { - $_->setio(sub { printf(@_); print("\n"); } ); - - if ($debug) { - $_->setdebug(1); - $_->setconn(\&connectors); - } +unless(libvideosite::init()) { + die("Could not init libvideosite: $libvideosite::error"); } select(STDOUT); $| = 1; printf("Doing self tests:\n"); -foreach(@g) { +foreach my $g (libvideosite::_grabbers()) { my $r; - printf(" %s...", $_->{'NAME'}); - $r = $_->_selftest(); + if (@ARGV) { + my $found; + + # If there are grabber names given on the command line check + # the current name against that list and skip if not present + $found = grep { $_ eq $g->{'NAME'} } @ARGV; + + if ($found == 0) { + next; + } + } + + printf(" %s...", $g->{'NAME'}); + $r = $g->_selftest(); if(defined($r)) { if ($r == 1) { printf(" OK\n");