#!/usr/local/bin/perl
use strict;
use Test::Assertions qw(test);
use Log::Trace;
use Getopt::Std;
use File::Path;
use constant SLEEP_INT => 2;
use vars qw($opt_t $opt_T);
getopts('tT');
#Look for any installed Cache or Cache::Cache memory caching module
my @cache_modules;
foreach my $module qw(Cache::Memory Cache::MemoryCache){
eval "require $module";
push @cache_modules, $module unless($@);
}
plan tests => 2 + 11*scalar @cache_modules;
#Move into the t directory
chdir($1) if ($0 =~ /(.*)(\/|\\)(.*)/);
use lib qw(.);
#Load the library of tests
use vars qw($callcount $callback);
require "CacheAgainstFile.lib";
#Compile
unshift @INC, "../lib";
require Cache::AgainstFile;
ASSERT($INC{"Cache/AgainstFile.pm"}, "compiled version $Cache::AgainstFile::VERSION");
#Log::Trace
import Log::Trace qw(print) if($opt_t);
deep_import Log::Trace qw(print) if($opt_T);
#Test directories
my $dir = "data";
my $cache_dir = './cache';
my $filename = "$dir/foo.dat";
#Set up test env
mkpath($dir);
touch($filename);
############################################################################
# Run tests on installed memory caches
############################################################################
foreach my $cache_module(@cache_modules) {
my $id = "CacheModule=$cache_module";
my $cache = new Cache::AgainstFile($callback, {Method => 'CacheModule', CacheModule => $cache_module});
test_basics($cache, $filename, $id);
}
#Non-existant cache module raises exception
ASSERT(DIED(sub {
new Cache::AgainstFile($callback, {Method => 'CacheModule', CacheModule => 'DoesNotExist'})
}) && $@ =~ /Unable to load DoesNotExist/, "non-existant cache module");
############################################################################
# Clean up
############################################################################
END {
TRACE("Cleaning up $dir and $cache_dir");
rmtree($dir);
rmtree($cache_dir);
}