package tests::functional::TestSchemaFixture; use strict; use Lire::Config::Build qw/ac_info ac_path/; use Lire::ReportParser::ReportBuilder; use Lire::Utils qw/create_file file_content/; use File::Basename qw/dirname/; use File::Path qw/mkpath rmtree/; use File::Copy; use Lire::PluginManager; use Lire::Test::Mock; use IO::Dir; use Cwd 'realpath'; use Carp; use tests::helpers::TestExtendedAnalyzer; use tests::helpers::TestDerivedAnalyzer; use tests::helpers::TestDlfConverter; use POSIX qw/tzset/; sub init { my $self = $_[0]; $self->{'_tsh_testsdir'} = realpath(dirname( __FILE__ ) . "/.."); $self->{'_tsh_converter_init'} = ac_path( 'sysconfdir', 'PACKAGE' ) . "/converters/test_newapi"; $self->{'_tsh_address_file'} = ac_path( 'sysconfdir', 'PACKAGE' ) . "/address.cf"; $self->{'_tsh_moduledir'} = ac_info( 'LR_PERL5LIB' ) . "/tests/helpers"; return $self; } sub tests_datadir { return "$_[0]->{'_tsh_testsdir'}/data"; } sub set_up_test_schemas { my $self = $_[0]; foreach my $s ( $self->_find_xml_specs( "$self->{'_tsh_testsdir'}/schemas" )) { $self->install_xml_spec( "schema", "test", $s ); } my $default_file = ac_path( 'datadir', 'PACKAGE' ) . '/templates/test_default.xml'; $self->create_test_file( $default_file, file_content( $self->tests_datadir() . "/test_report_cfg.xml" ) ); return; } sub set_up_test_store { my $self = $_[0]; my $testdir = realpath( dirname(__FILE__) . '/..' ); system( "cd " . $self->homedir() . "; tar xf $testdir/data/test_store.tar" ); die "tar failed: $?" if $?; $self->{'storedir'} = $self->homedir() . '/test_store'; return; } sub set_up_test_another_analyser { my $self = $_[0]; my $analyser = new_proxy Lire::Test::Mock( 'Lire::DlfAnalyser' ); $analyser->set_result( 'name' => 'another', 'title' => 'Another Catogoriser', 'description' => 'A fake Categoriser', 'src_schema' => 'test-derived', 'dst_schema' => 'test-extended', 'analyse' => '' ); Lire::PluginManager->register_plugin( $analyser ); my $pluginsdir = $self->homedir() . "/.lire/plugins"; mkpath( [ $pluginsdir ], 0, 0755 ); create_file( "$pluginsdir/another_init", <A fake Categoriser" } sub src_schema { return 'test-derived' }; sub dst_schema { return 'test-extended' }; sub analyse {} } package main; use Lire::PluginManager; Lire::PluginManager->register_plugin( new myanalyser() ); EOS return; } sub set_up_test_analysers { my $self = $_[0]; Lire::PluginManager->register_plugin( new tests::helpers::TestExtendedAnalyzer() ); Lire::PluginManager->register_plugin( new tests::helpers::TestDerivedAnalyzer() ); mkpath( [ $self->{'_tsh_moduledir'} ], 0, 0755 ); copy ( "$self->{'_tsh_testsdir'}/helpers/TestDerivedAnalyzer.pm", "$self->{'_tsh_moduledir'}/TestDerivedAnalyzer.pm" ); copy ( "$self->{'_tsh_testsdir'}/helpers/TestExtendedAnalyzer.pm", "$self->{'_tsh_moduledir'}/TestExtendedAnalyzer.pm" ); my $pluginsdir = $self->homedir() . "/.lire/plugins"; mkpath( [ $pluginsdir ], 0, 0755 ); create_file( "$pluginsdir/analysers_init", <register_plugin( new tests::helpers::TestDerivedAnalyzer() ); Lire::PluginManager->register_plugin( new tests::helpers::TestExtendedAnalyzer() ); EOS } sub set_up_test_specs { my $self = $_[0]; # This is the time zone in which the report with which we compare # was created. $self->{'saved_tz'} = $ENV{'TZ'}; $ENV{'TZ'} = 'EST'; tzset(); foreach my $s ( $self->_find_xml_specs( "$self->{'_tsh_testsdir'}/filters/test" )) { $self->install_xml_spec( "filter", "test", $s ); } foreach my $s ( $self->_find_xml_specs( "$self->{'_tsh_testsdir'}/reports/test" )) { $self->install_xml_spec( "report", "test", $s ); } } sub set_up_test2dlf { my $self = $_[0]; my $perl = ac_info( 'PERL' ); my $perllib = ac_info( 'LR_PERL5LIB' ); my $dlf_converter = ac_path( "libexecdir", "PACKAGE" ) . "/convertors/test2dlf"; $self->create_test_file( $dlf_converter, <