|
Lines 1-15
Link Here
|
| 1 |
#!/usr/bin/perl |
1 |
#!/usr/bin/perl |
| 2 |
|
2 |
|
| 3 |
use strict; |
3 |
use Modern::Perl; |
| 4 |
use warnings; |
|
|
| 5 |
|
4 |
|
| 6 |
use Test::More tests => 24; |
5 |
use Test::More tests => 28; |
| 7 |
use File::Basename; |
6 |
use File::Basename; |
|
|
7 |
use File::Temp qw( tempdir ); |
| 8 |
use FindBin qw($Bin); |
8 |
use FindBin qw($Bin); |
| 9 |
use Archive::Extract; |
9 |
use Archive::Extract; |
| 10 |
use Module::Load::Conditional qw(can_load); |
10 |
use Module::Load::Conditional qw(can_load); |
| 11 |
|
11 |
|
| 12 |
use C4::Context; |
12 |
use C4::Context; |
|
|
13 |
use t::lib::Mocks; |
| 13 |
|
14 |
|
| 14 |
BEGIN { |
15 |
BEGIN { |
| 15 |
push( @INC, dirname(__FILE__) . '/..' ); |
16 |
push( @INC, dirname(__FILE__) . '/..' ); |
|
Lines 60-70
my @plugins2 = Koha::Plugins->new({ enable_plugins => 1 })->GetPlugins({
Link Here
|
| 60 |
}); |
61 |
}); |
| 61 |
isnt( scalar @plugins2, scalar @plugins, 'GetPlugins with two metadata conditions' ); |
62 |
isnt( scalar @plugins2, scalar @plugins, 'GetPlugins with two metadata conditions' ); |
| 62 |
|
63 |
|
| 63 |
SKIP: { |
64 |
for my $pass ( 1 .. 2 ) { |
| 64 |
my $plugins_dir = C4::Context->config("pluginsdir"); |
65 |
my $plugins_dir; |
| 65 |
skip "plugindir not set", 4 unless defined $plugins_dir; |
66 |
my $module_name = 'Koha::Plugin::Com::ByWaterSolutions::KitchenSink'; |
| 66 |
skip "plugindir not writable", 4 unless -w $plugins_dir; |
67 |
my $pm_path = 'Koha/Plugin/Com/ByWaterSolutions/KitchenSink.pm'; |
| 67 |
# no need to skip further tests if KitchenSink would already exist |
68 |
if ( $pass == 1 ) { |
|
|
69 |
my $plugins_dir1 = tempdir( CLEANUP => 1 ); |
| 70 |
t::lib::Mocks::mock_config('pluginsdir', $plugins_dir1); |
| 71 |
$plugins_dir = $plugins_dir1; |
| 72 |
push @INC, $plugins_dir1; |
| 73 |
} else { |
| 74 |
my $plugins_dir1 = tempdir( CLEANUP => 1 ); |
| 75 |
my $plugins_dir2 = tempdir( CLEANUP => 1 ); |
| 76 |
t::lib::Mocks::mock_config('pluginsdir', [ $plugins_dir2, $plugins_dir1 ]); |
| 77 |
$plugins_dir = $plugins_dir2; |
| 78 |
pop @INC; |
| 79 |
push @INC, $plugins_dir2; |
| 80 |
push @INC, $plugins_dir1; |
| 81 |
} |
| 82 |
my $full_pm_path = $plugins_dir . '/' . $pm_path; |
| 68 |
|
83 |
|
| 69 |
my $ae = Archive::Extract->new( archive => "$Bin/KitchenSinkPlugin.kpz", type => 'zip' ); |
84 |
my $ae = Archive::Extract->new( archive => "$Bin/KitchenSinkPlugin.kpz", type => 'zip' ); |
| 70 |
unless ( $ae->extract( to => $plugins_dir ) ) { |
85 |
unless ( $ae->extract( to => $plugins_dir ) ) { |
|
Lines 75-83
SKIP: {
Link Here
|
| 75 |
my $table = $plugin->get_qualified_table_name( 'mytable' ); |
90 |
my $table = $plugin->get_qualified_table_name( 'mytable' ); |
| 76 |
|
91 |
|
| 77 |
ok( -f $plugins_dir . "/Koha/Plugin/Com/ByWaterSolutions/KitchenSink.pm", "KitchenSink plugin installed successfully" ); |
92 |
ok( -f $plugins_dir . "/Koha/Plugin/Com/ByWaterSolutions/KitchenSink.pm", "KitchenSink plugin installed successfully" ); |
|
|
93 |
$INC{$pm_path} = $full_pm_path; # FIXME I do not really know why, but if this is moved before the $plugin constructor, it will fail with Can't locate object method "new" via package "Koha::Plugin::Com::ByWaterSolutions::KitchenSink" |
| 78 |
Koha::Plugins::Handler->delete({ class => "Koha::Plugin::Com::ByWaterSolutions::KitchenSink", enable_plugins => 1 }); |
94 |
Koha::Plugins::Handler->delete({ class => "Koha::Plugin::Com::ByWaterSolutions::KitchenSink", enable_plugins => 1 }); |
| 79 |
my $sth = C4::Context->dbh->table_info( undef, undef, $table, 'TABLE' ); |
95 |
my $sth = C4::Context->dbh->table_info( undef, undef, $table, 'TABLE' ); |
| 80 |
my $info = $sth->fetchall_arrayref; |
96 |
my $info = $sth->fetchall_arrayref; |
| 81 |
is( @$info, 0, "Table $table does no longer exist" ); |
97 |
is( @$info, 0, "Table $table does no longer exist" ); |
| 82 |
ok( !( -f $plugins_dir . "/Koha/Plugin/Com/ByWaterSolutions/KitchenSink.pm" ), "Koha::Plugins::Handler::delete works correctly." ); |
98 |
ok( !( -f $full_pm_path ), "Koha::Plugins::Handler::delete works correctly." ); |
| 83 |
} |
99 |
} |
| 84 |
- |
|
|