1
0
mirror of synced 2026-01-14 15:35:18 +00:00
xen-tools.xen-tools/t/argument-check.t
2012-11-28 00:04:25 +01:00

139 lines
2.4 KiB
Perl
Executable File

#!/usr/bin/perl -w
#
# Test that the arguments in etc/xen-tools.conf match those used in
# xen-create-image.
#
# Steve
# --
#
use strict;
use Test::More;
#
# Open and parse the xen-tools.conf configuration file.
#
my %OPTIONS;
%OPTIONS = parseConfigFile( "etc/xen-tools.conf" );
#
# Test we got something back.
#
ok( %OPTIONS, "Options successfully parsed" );
#
# Now open and read the file "xen-create-image"
#
my @lines = readFile( "bin/xen-create-image" );
ok ( @lines, "We read the 'xen-create-image' script" );
#
# For each option we found we want to make sure it is
# contained in the script, via the documentation.
#
foreach my $key ( sort keys %OPTIONS )
{
my $found = 0;
foreach my $line ( @lines )
{
if ( $line =~ /--$key/ )
{
$found = 1;
}
}
next if ( $key =~ /^mirror_/ );
next if ( $key =~ /_options$/ );
is( $found, 1 , " Found documentation for '$key'" );
}
done_testing();
=head2 parseConfigFile
Parse the 'key=value' configuration file passed to us, and
return a hash of the reults.
=cut
sub parseConfigFile
{
my ($file) = ( @_ );
#
# Options we read
#
my %CONFIG;
open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
my $line = "";
while (defined($line = <FILE>) )
{
chomp $line;
if ($line =~ s/\\$//)
{
$line .= <FILE>;
redo unless eof(FILE);
}
# Skip blank lines
next if ( length( $line ) < 1 );
# skip false positive
next if ( $line =~ /Otherwise/ );
# Find variable settings
if ( $line =~ /([^=]+)=([^\n]+)/ )
{
my $key = $1;
my $val = $2;
if ( $key =~ /([ \t#]*)(.*)/ )
{
$key = $2;
}
# Strip leading and trailing whitespace.
$key =~ s/^\s+//;
$key =~ s/\s+$//;
$val =~ s/^\s+//;
$val =~ s/\s+$//;
next if ( $key =~ /--/ );
# Store value.
$CONFIG{ $key } = $val;
}
}
close( FILE );
return( %CONFIG );
}
=head2 readFile
Read a named file and return an array of its contents.
=cut
sub readFile
{
my ($file) = ( @_ );
open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
my @LINES = <FILE>;
close( FILE );
return( @LINES );
}