Author: jkeenan
Date: Wed Aug 6 19:06:58 2008
New Revision: 30076
Modified:
branches/scriptconfigure/lib/Parrot/Configure/Options/Conf/File.pm
branches/scriptconfigure/t/configure/062-options_conf_file.t
Log:
Begin to write tests for Parrot::Configure::Options::Conf::File.
Modified: branches/scriptconfigure/lib/Parrot/Configure/Options/Conf/File.pm
==============================================================================
--- branches/scriptconfigure/lib/Parrot/Configure/Options/Conf/File.pm
(original)
+++ branches/scriptconfigure/lib/Parrot/Configure/Options/Conf/File.pm Wed Aug
6 19:06:58 2008
@@ -93,20 +93,26 @@
my ($data, $substitutions, $general, $optsref) = @_;
my @general = split /\n/, $general;
foreach my $g (@general) {
- next unless $g =~ m/^(\w+)=(\$?[^\s\$]+)$/;
+ next unless $g =~ m/^([-\w]+)(?:=(\$?[^\s\$]+))?$/;
my ($k, $v, $prov, $var);
- ($k, $prov) = ($1, $2);
- if ($prov =~ m/^\$(.+)/) {
- $var = $1;
- if ($substitutions->{$var}) {
- $v = $substitutions->{$var};
+ if ($2) {
+ ($k, $prov) = ($1, $2);
+ if ($prov =~ m/^\$(.+)/) {
+ $var = $1;
+ if ($substitutions->{$var}) {
+ $v = $substitutions->{$var};
+ }
+ else {
+ die "Bad variable substitution in $data->{file}: $!";
+ }
}
else {
- die "Bad variable substitution in $data->{file}: $!";
+ $v = $prov;
}
}
else {
- $v = $prov;
+ $k = $1;
+ $v = 1;
}
if (! $optsref->{$k}) {
die "Invalid general option $k in $data->{file}: $!";
Modified: branches/scriptconfigure/t/configure/062-options_conf_file.t
==============================================================================
--- branches/scriptconfigure/t/configure/062-options_conf_file.t
(original)
+++ branches/scriptconfigure/t/configure/062-options_conf_file.t Wed Aug
6 19:06:58 2008
@@ -18,8 +18,53 @@
$parrot_version
$svnid
);
+use Parrot::Configure::Options::Conf::Shared qw(
+ @shared_valid_options
+);
#use IO::CaptureOutput qw| capture |;
+my $variables = <<END;
+CC=/usr/bin/gcc
+#CX=/usr/bin/g++
+
+ABC=abc
+END
+
+my $substitutions =
+ Parrot::Configure::Options::Conf::File::_get_substitutions($variables);
+is_deeply($substitutions,
+ { CC => '/usr/bin/gcc', ABC => 'abc' },
+ "Got expected substitutions"
+);
+
+my $general = <<END;
+cc=\$CC
+this=will not=work
+#abc=abc
+
+verbose
+verbose-step=init::hints
+configure_trace
+END
+
+my $data = shift;
+$data->{debugging} = 1;
+$data->{maintainer} = undef;
+my %valid_step_options = map {$_ => 1} @shared_valid_options;
+$data = Parrot::Configure::Options::Conf::File::_set_general($data,
$substitutions, $general,
+ \%valid_step_options);
+my $cc = q{/usr/bin/gcc};
+is_deeply($data,
+ {
+ debugging => 1,
+ maintainer => undef,
+ cc => $cc,
+ verbose => 1,
+ configure_trace => 1,
+ 'verbose-step' => 'init::hints',
+ },
+ "Got expected return value for _set_general()"
+);
pass("Completed all tests in $0");