[improve regress tester, add -l option to make it use installed libraries, have it time how long compiling and running takes, allow selection of tests to run via regexps on the command line
John Meacham <john@repetae.net>**20061120222330] hunk ./regress/regress.prl 15
+my $opt_l;
+
hunk ./regress/regress.prl 18
-GetOptions( 'f=s' => \@fopts, 'o=s' => \@opts  ) or die "Invalid options";
+GetOptions( 'f=s' => \@fopts, 'o=s' => \@opts, l => \$opt_l  ) or die "Invalid options";
hunk ./regress/regress.prl 22
+my @cond;
+my @ncond;
+
+foreach (@ARGV) {
+    /^\!(.*)/ ? push @ncond, $1 : push @cond, $_;
+}
+
hunk ./regress/regress.prl 99
-    foreach my $fn (sort(split /\n/,`ls $cwd`)) {
+    if(-f "Main.hs") {
+        system "rm -f -- $cwd/*.ho $cwd/*_code.hs $cwd/*_code.c";
+
+    }
+    test: foreach my $fn (sort(split /\n/,`ls $cwd`)) {
hunk ./regress/regress.prl 114
+            if(@cond) {
+                my $keep = 0;
+                foreach (@cond) {
+                $keep = 1 if $name  =~ /$_/;
+                }
+                unless($keep) {
+                    rlog "Skipping $name";
+                    next;
+                }
+            }
+            foreach (@ncond) {
+                if($name =~ /$_/) {
+                    rlog "Skipping $name";
+                    next test;
+                }
+            }
hunk ./regress/regress.prl 134
-            my @cmd = ("$jhc_dir/jhc", "-v", "--noauto", "-i$jhc_dir/lib/base", "-i$jhc_dir/lib/haskell98", "-flint", "-o", "$fbase", @flags, @opts, "$cwd/$fn");
+            my @libs = $opt_l ? () : ("--noauto", "-i$jhc_dir/lib/base","-i$jhc_dir/lib/haskell98");
+            my @cmd = ("$jhc_dir/jhc", "-v", @libs , "-flint", "-o", "$fbase", @flags, @opts, "$cwd/$fn");
hunk ./regress/regress.prl 138
+            my $time_start = time();
hunk ./regress/regress.prl 140
-            my $result = { name => $name, compile_command => $res, compile_status => $r, compile_results => "$rd/$name.jhc_out" };
+            my $time_end = time();
+            my $result = { name => $name, compile_command => $res, compile_status => $r, compile_results => "$rd/$name.jhc_out", compile_time => $time_end - $time_start };
hunk ./regress/regress.prl 157
+            $time_start = time();
hunk ./regress/regress.prl 159
+            $time_end = time();
hunk ./regress/regress.prl 161
+            $result->{run_time} = $time_end - $time_start;
hunk ./regress/regress.prl 187
+    sub timef {
+        return defined $_[0] ? "$_[0]s" : "-";
+    }
+    rlog("-----------------------------------");
+    rlog("$now_string");
+    rlog("$jhc_version");
+    rlog("regress ", join " ", @saved_args) if @saved_args;
hunk ./regress/regress.prl 196
-    my $fmt = "%50s %5s %5s %5s\n";
-    rlog sprintf $fmt, "Name", "Compile", "Run", "Out";
+    my $fmt = "%50s %5s %5s %5s %7s %7s\n";
+    rlog sprintf $fmt, "Name", "Compile", "Run", "Out", "CTime", "RTime";
hunk ./regress/regress.prl 199
-        rlog sprintf $fmt, $r->{name}, statf($r->{compile_status}),statf($r->{run_status}),statf($r->{stdout_diff});
+        rlog sprintf $fmt, $r->{name}, statf($r->{compile_status}),statf($r->{run_status}),statf($r->{stdout_diff}), timef($r->{compile_time}), timef($r->{run_time}) ;