Author: jkeenan
Date: Wed Feb 13 18:36:09 2008
New Revision: 25705

Added:
   trunk/lib/Parrot/Harness/
      - copied from r25639, /branches/harness/lib/Parrot/Harness/
   trunk/lib/Parrot/Harness/DefaultTests.pm
      - copied, changed from r25639, 
/branches/harness/lib/Parrot/Harness/DefaultTests.pm
   trunk/lib/Parrot/Harness/Options.pm
      - copied unchanged from r25639, 
/branches/harness/lib/Parrot/Harness/Options.pm
   trunk/lib/Parrot/Harness/Smoke.pm
      - copied unchanged from r25639, 
/branches/harness/lib/Parrot/Harness/Smoke.pm
   trunk/t/pharness/
      - copied from r25639, /branches/harness/t/pharness/
   trunk/t/pharness/01-default_tests.t
      - copied unchanged from r25639, 
/branches/harness/t/pharness/01-default_tests.t
   trunk/t/pharness/02-get_test_prog_args.t
      - copied unchanged from r25639, 
/branches/harness/t/pharness/02-get_test_prog_args.t
   trunk/t/pharness/03-handle_long_options.t
      - copied unchanged from r25639, 
/branches/harness/t/pharness/03-handle_long_options.t
   trunk/t/pharness/04-Usage.t
      - copied unchanged from r25639, /branches/harness/t/pharness/04-Usage.t
Modified:
   trunk/MANIFEST
   trunk/config/gen/makefiles/root.in
   trunk/languages/t/harness
   trunk/lib/Parrot/Configure/Options/Test.pm
   trunk/t/harness

Log:
Applying corrected version of patches submitted in
https://rt.perl.org/rt3/Ticket/Display.html?id=50302.  Most of internals
of t/harness refactored out into lib/Parrot/Harness/DefaultTests.pm,
Options.pm and Smoke.pm.  Four test files added in t/pharness directory
(so named to make it easy to distinguish from the t/harness file).


Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Wed Feb 13 18:36:09 2008
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Feb 14 00:35:41 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu Feb 14 02:12:51 2008 UT
 #
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
@@ -2457,6 +2457,9 @@
 lib/Parrot/Docs/Section/Perl.pm                             [devel]
 lib/Parrot/Docs/Section/Tests.pm                            [devel]
 lib/Parrot/Docs/Section/Tools.pm                            [devel]
+lib/Parrot/Harness/DefaultTests.pm                          [devel]
+lib/Parrot/Harness/Options.pm                               [devel]
+lib/Parrot/Harness/Smoke.pm                                 [devel]
 lib/Parrot/Headerizer.pm                                    [devel]
 lib/Parrot/IO/Directory.pm                                  [devel]
 lib/Parrot/IO/File.pm                                       [devel]
@@ -3201,6 +3204,10 @@
 t/perl/Parrot_PIR_Formatter.t                               []
 t/perl/Parrot_Test.t                                        []
 t/perl/README                                               []
+t/pharness/01-default_tests.t                               []
+t/pharness/02-get_test_prog_args.t                          []
+t/pharness/03-handle_long_options.t                         []
+t/pharness/04-Usage.t                                       []
 t/pmc/addrregistry.t                                        []
 t/pmc/array.t                                               []
 t/pmc/bigint.t                                              []

Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in  (original)
+++ trunk/config/gen/makefiles/root.in  Wed Feb 13 18:36:09 2008
@@ -1394,11 +1394,13 @@
 OPS2PMUTILS_DIR = t/tools/ops2pmutils
 OPS2CUTILS_DIR = t/tools/ops2cutils
 REVISIONUTILS_DIR = t/tools/revision
+HARNESS_DIR = t/pharness
 BUILDTOOLS_TEST_FILES = \
         $(PMC2CUTILS_DIR)/*.t \
         $(OPS2PMUTILS_DIR)/*.t \
         $(OPS2CUTILS_DIR)/*.t \
-        $(REVISIONUTILS_DIR)/*.t
+        $(REVISIONUTILS_DIR)/*.t \
+               $(HARNESS_DIR)/*.t
 MANIFEST_DIR = t/manifest
 MANIFEST_TEST_FILES = \
         $(MANIFEST_DIR)/01-basic.t \

Modified: trunk/languages/t/harness
==============================================================================
--- trunk/languages/t/harness   (original)
+++ trunk/languages/t/harness   Wed Feb 13 18:36:09 2008
@@ -127,28 +127,18 @@
     Test::Harness::runtests(@tests);
 }
 else {
+    my $html_fn = "languages_smoke.html";
     my @smoke_config_vars = qw(
-      osname
-      archname
-      cc
-      build_dir
-      cpuarch
-      revision
-      VERSION
-      optimize
-      DEVEL
+      osname archname cc build_dir cpuarch revision VERSION optimize DEVEL
     );
 
     eval {
         require Test::TAP::HTMLMatrix;
         require Test::TAP::Model::Visual;
     };
-    die "You must have Test::TAP::HTMLMatrix installed.\n\n$@" if $@;
+    die "You must have Test::TAP::HTMLMatrix installed.\n\n$@"
+        if $@;
 
-    ## FIXME: ###
-    # This is a temporary solution until Test::TAP::Model version
-    # 0.05.  At that point, this function should be removed, and the
-    # verbose line below should be uncommented.
     {
         no warnings qw/redefine once/;
         *Test::TAP::Model::run_tests = sub {
@@ -163,8 +153,8 @@
                 my $data;
                 print STDERR "- $file\n";
                 $data = $self->run_test($file);
-                $stats{tests} += $data->{results}{max};
-                $stats{ok}    += $data->{results}{ok} || 0;
+                $stats{tests} += $data->{results}{max} || 0;
+                $stats{ok}    += $data->{results}{ok}  || 0;
             }
 
             printf STDERR "%s OK from %s tests (%.2f%% ok)\n\n",
@@ -172,7 +162,7 @@
             $stats{tests},
             $stats{ok} / $stats{tests} * 100;
 
-            $self->{meat}{end_time} = time;
+            $self->{meat}{end_time} = time();
         };
 
         my $start = time();
@@ -193,7 +183,6 @@
 
         $v->has_inline_css(1); # no separate css file
 
-        my $html_fn = "languages_smoke.html";
         open HTML, '>', $html_fn;
         print HTML $v->html();
         close HTML;

Modified: trunk/lib/Parrot/Configure/Options/Test.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Options/Test.pm  (original)
+++ trunk/lib/Parrot/Configure/Options/Test.pm  Wed Feb 13 18:36:09 2008
@@ -52,6 +52,7 @@
     glob("t/tools/ops2cutils/*.t"),
     glob("t/tools/ops2pmutils/*.t"),
     glob("t/tools/revision/*.t"),
+    glob("t/pharness/*.t"),
 );
 
 sub new {

Copied: trunk/lib/Parrot/Harness/DefaultTests.pm (from r25639, 
/branches/harness/lib/Parrot/Harness/DefaultTests.pm)
==============================================================================
--- /branches/harness/lib/Parrot/Harness/DefaultTests.pm        (original)
+++ trunk/lib/Parrot/Harness/DefaultTests.pm    Wed Feb 13 18:36:09 2008
@@ -66,8 +66,8 @@
         c_struct.t
         check_toxxx.t
         copyright.t
-        cppcomments.t
-        cuddled_else.t
+        c_cppcomments.t
+        c_cuddled_else.t
         filenames.t
         gmt_utc.t
         linelength.t

Modified: trunk/t/harness
==============================================================================
--- trunk/t/harness     (original)
+++ trunk/t/harness     Wed Feb 13 18:36:09 2008
@@ -2,6 +2,64 @@
 # Copyright (C) 2001-2007, The Perl Foundation.
 # $Id$
 
+
+use strict;
+use warnings;
+use Getopt::Std;
+use Test::Harness();
+use lib qw( lib );
+use Parrot::Harness::DefaultTests;
+use Parrot::Harness::Options qw(
+    handle_long_options
+    get_test_prog_args
+    Usage
+);
+use Parrot::Harness::Smoke qw(
+    generate_html_smoke_report
+);
+
+local @ARGV = @ARGV;
+my $longopts;
+($longopts, @ARGV) = handle_long_options(@ARGV);
+
+$ENV{RUNNING_MAKE_TEST} = $longopts->{running_make_test};
+
+# Suck the short options into the TEST_PROG_ARGS 
+# environmental variable.
+my %opts;
+getopts('wgjPCSefbvdr?hO:D:', \%opts);
+
+if ($opts{'?'} || $opts{h} || $longopts->{help}) {
+    Usage();
+    exit;
+}
+
+# add -D40;  merge it with any existing -D argument
+$opts{D} = sprintf( '%x', hex(40) | (exists $opts{D} ? hex($opts{D}) : 0));
+
+my $args = get_test_prog_args(
+    \%opts, $longopts->{gc_debug}, $longopts->{run_exec});
+$ENV{TEST_PROG_ARGS} = $args;
+
+# now build the list of tests to run, either from the command
+# line or from @default tests
+my @default_tests = get_default_tests(
+    $longopts->{core_tests_only},
+    $longopts->{runcore_tests_only}
+);
+
+my @tests = map { glob( $_ ) } (@ARGV ? @ARGV : @default_tests);
+
+if (!$longopts->{html}) {
+    Test::Harness::runtests(@tests);
+} else {
+    generate_html_smoke_report ( {
+        tests       => [EMAIL PROTECTED],
+        args        => $args,
+        file        => 'smoke.html',
+    } );
+}
+
 =head1 NAME
 
 t/harness - Parrot Test Harness
@@ -82,219 +140,6 @@
 
 =back
 
-=cut
-
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-
-use Getopt::Std;
-use Test::Harness();
-use Parrot::Config qw/%PConfig/;
-use FindBin qw/$Bin/;
-
-# handle the long options
-
-$ENV{RUNNING_MAKE_TEST} = grep { $_ eq '--running-make-test' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--running-make-test' } @ARGV;
-
-my $gc_debug = grep { $_ eq '--gc-debug' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--gc-debug' } @ARGV;
-
-my $core_tests_only = grep { $_ eq '--core-tests' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--core-tests' } @ARGV;
-
-my $runcore_tests_only = grep { $_ eq '--runcore-tests' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--runcore-tests' } @ARGV;
-
-my $html = grep { $_ eq '--html' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--html' } @ARGV;
-
-my $run_exec = grep { $_ eq '--run-exec' } @ARGV;
[EMAIL PROTECTED] = grep { $_ ne '--run-exec' } @ARGV;
-
-# Suck the short options into the TEST_PROG_ARGS evar:
-my %opts;
-getopts('wgjPCSefbvdr?hO:D:', \%opts);
-if ($opts{'?'} || $opts{h}) {
-    print <<"EOF";
-perl t/harness [options] [testfiles]
-    -w         ... warnings on
-    -g         ... run CGoto
-    -j         ... run JIT
-    -C         ... run CGP
-    -S         ... run Switched
-    -b         ... run bounds checked
-    --run-exec ... run exec core
-    -f         ... run fast core
-    -v         ... run verbose
-    -d         ... run debug
-    -r         ... assemble to PBC run PBC
-    -O[012]    ... optimize
-    -D[number] ... pass debug flags to parrot interpreter
-    --running-make-test
-    --gc-debug
-    --core-tests
-    --runcore-tests
-    --html
-EOF
-    exit;
-}
-
-# add -D40;  merge it with any existing -D argument
-$opts{D} = sprintf( '%x', hex(40) | (exists $opts{D} ? hex($opts{D}) : 0));
-
-my $args = join(' ', map { "-$_" } keys %opts );
-$args =~ s/-O/-O$opts{O}/ if exists $opts{O};
-$args =~ s/-D/-D$opts{D}/;
-$args .= ' --gc-debug'    if $gc_debug;
-# XXX find better way for passing run_exec to Parrot::Test
-$args .= ' --run-exec'    if $run_exec;
-$ENV{TEST_PROG_ARGS} = $args;
-
-# Build the lists of tests to be run
-
-# runcore tests are always run.
-my @runcore_tests = qw(
-    t/compilers/imcc/*/*.t
-    t/op/*.t
-    t/pmc/*.t
-    t/oo/*.t
-    t/native_pbc/*.t
-    t/dynpmc/*.t
-    t/dynoplibs/*.t
-    t/compilers/pge/*.t
-    t/compilers/pge/p5regex/*.t
-    t/compilers/pge/perl6regex/*.t
-    t/compilers/tge/*.t
-    t/library/*.t
-);
-
-# core tests are run unless --runcore-tests is present.  Typically
-# this list and the list above are run in response to --core-tests
-my @core_tests = qw(
-    t/run/*.t
-    t/src/*.t
-    t/tools/*.t
-    t/perl/*.t
-    t/stm/*.t
-);
-
-# configure tests are tests to be run at the beginning of 'make test';
-# standard tests are other tests run by default with no core options
-# present
-my @configure_tests = qw( t/configure/*.t t/steps/*.t t/postconfigure/*.t );
-my @standard_tests = qw(
-    t/compilers/json/*.t
-    t/examples/*.t
-    t/doc/*.t
-    t/distro/manifest.t
-);
-
-# add metadata.t and coding standards tests only if we're DEVELOPING
-if ( -e "$Bin/../DEVELOPING" ) {
-    push @standard_tests, map { "t/codingstd/$_" } qw(
-        c_code_coda.t
-        c_header_guards.t
-        c_indent.t
-        c_struct.t
-        check_toxxx.t
-        copyright.t
-        c_cppcomments.t
-        c_cuddled_else.t
-        filenames.t
-        gmt_utc.t
-        linelength.t
-        pccmethod_deps.t
-        svn_id.t
-        tabs.t
-        trailing_space.t
-    );
-    # XXX: This takes WAY too long to run: perlcritic.t
-}
-
-# build the list of default tests
-my @default_tests = @runcore_tests;
-unless ($runcore_tests_only) {
-   push @default_tests, @core_tests;
-   unless ($core_tests_only) {
-       unshift @default_tests, @configure_tests;
-       push @default_tests, @standard_tests;
-   }
-}
-
-# now build the list of tests to run, either from the command
-# line or from @default tests
-my @tests = map { glob( $_ ) } (@ARGV ? @ARGV : @default_tests);
-
-if (!$html) {
-    Test::Harness::runtests(@tests);
-} else {
-    my @smoke_config_vars = qw(
-        osname archname cc build_dir cpuarch revision VERSION optimize DEVEL
-    );
-
-    eval {
-        require Test::TAP::HTMLMatrix;
-        require Test::TAP::Model::Visual;
-    };
-    die "You must have Test::TAP::HTMLMatrix installed.\n\n$@"
-        if $@;
-
-    {
-      no warnings qw/redefine once/;
-      *Test::TAP::Model::run_tests = sub {
-        my $self = shift;
-
-        $self->_init;
-        $self->{meat}{start_time} = time;
-
-        my %stats;
-
-        foreach my $file (@_) {
-            my $data;
-            print STDERR "- $file\n";
-            $data = $self->run_test($file);
-            $stats{tests} += $data->{results}{max} || 0;
-            $stats{ok}    += $data->{results}{ok}  || 0;
-        }
-
-        printf STDERR "%s OK from %s tests (%.2f%% ok)\n\n",
-            $stats{ok},
-            $stats{tests},
-            $stats{ok} / $stats{tests} * 100;
-
-        $self->{meat}{end_time} = time;
-      };
-
-      my $start = time();
-      my $model = Test::TAP::Model::Visual->new();
-      $model->run_tests(@tests);
-
-      my $end = time();
-
-      my $duration = $end - $start;
-
-      my $v = Test::TAP::HTMLMatrix->new(
-        $model,
-        join("\n",
-             "duration: $duration",
-             "branch: unknown",
-             "harness_args: " . (($args) ? $args : "N/A"),
-             map { "$_: $PConfig{$_}" } sort @smoke_config_vars),
-                   );
-
-      $v->has_inline_css(1); # no separate css file
-
-      open HTML, ">", "smoke.html";
-      print HTML $v->html;
-      close HTML;
-
-      print "smoke.html has been generated.\n";
-    }
-}
-
 =head1 HISTORY
 
 Mike Lambert stole F<t/harness> for F<languages/perl6/t/harness>.

Reply via email to