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");
 

Reply via email to