1
0
mirror of synced 2026-01-13 15:17:30 +00:00
xen-tools.xen-tools/t/plugin-checks.t

100 lines
1.7 KiB
Perl
Executable File

#!perl -w
#
# Test that the plugins each refer to environmental variables,
# not the perl config hash.
#
# Steve
# --
#
use strict;
use Test::More;
#
# Rather than having a hardwired list of distributions to test
# against we look for subdirectories beneath hooks/ and test each
# one.
#
my $hook_dir = $ENV{AS_INSTALLED_TESTING} ? '/usr/share/xen-tools' : 'hooks';
foreach my $dir ( glob( "$hook_dir/*" ) )
{
next if ( $dir =~ /CVS/i );
next if ( $dir =~ /common/i );
next if ( ! -d $dir );
if ( $dir =~ /$hook_dir\/(.*)/ )
{
my $dist = $1;
testPlugins( $dist );
}
}
done_testing();
=head2 testPlugins
Test each plugin associated with the given directory.
=cut
sub testPlugins
{
my ( $dist ) = ( @_ );
#
# Make sure there is a hook directory for the named distro
#
ok( -d "$hook_dir/$dist/", "There is a hook directory for the distro $dist" );
#
# Make sure the plugins are OK.
#
foreach my $file ( glob( "$hook_dir/$dist/*" ) )
{
ok( -e $file, "$file" );
if ( -f $file )
{
ok( -x $file, "File is executable" );
#
# Make sure the file is OK
#
my $result = testFile( $file );
is( $result, 0, " File contains no mention of the config hash" );
}
}
}
#
# Test that the named file contains no mention of '$CONFIG{'xx'};'
#
sub testFile
{
my ( $file ) = ( @_ );
open( FILY, "<", $file ) or die "Failed to open $file - $!";
foreach my $line ( <FILY> )
{
if ( $line =~ /\$CONFIG\{[ \t'"]+(.*)[ \t'"]+\}/ )
{
close( FILY );
return $line;
}
}
close( FILY );
#
# Success
#
return 0;
}