Author: jkeenan Date: Sun Jan 27 06:50:56 2008 New Revision: 25289 Added: branches/harness/t/pharness/03-handle_long_options.t (contents, props changed) Modified: branches/harness/MANIFEST branches/harness/lib/Parrot/Harness/Options.pm branches/harness/t/harness
Log: Refactored code handling long options out of t/harness and placed it in Parrot::Harness::Options::handle_long_options(). Added t/pharness/03-handle_long_options.t to test this functionality. Modified: branches/harness/MANIFEST ============================================================================== --- branches/harness/MANIFEST (original) +++ branches/harness/MANIFEST Sun Jan 27 06:50:56 2008 @@ -1,7 +1,7 @@ # ex: set ro: # $Id$ # -# generated by tools/dev/mk_manifest_and_skip.pl Sun Jan 27 13:45:07 2008 UT +# generated by tools/dev/mk_manifest_and_skip.pl Sun Jan 27 14:48:58 2008 UT # # See tools/dev/install_files.pl for documentation on the # format of this file. @@ -3197,6 +3197,7 @@ 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/pmc/addrregistry.t [] t/pmc/array.t [] t/pmc/bigint.t [] Modified: branches/harness/lib/Parrot/Harness/Options.pm ============================================================================== --- branches/harness/lib/Parrot/Harness/Options.pm (original) +++ branches/harness/lib/Parrot/Harness/Options.pm Sun Jan 27 06:50:56 2008 @@ -14,9 +14,37 @@ use strict; use base qw( Exporter ); our @EXPORT = qw( + handle_long_options get_test_prog_args ); +sub handle_long_options { + my @argv = @_; + my %longopts; + $longopts{running_make_test} = grep { $_ eq '--running-make-test' } @argv; + @argv = grep { $_ ne '--running-make-test' } @argv; + + $longopts{gc_debug} = grep { $_ eq '--gc-debug' } @argv; + @argv = grep { $_ ne '--gc-debug' } @argv; + + $longopts{core_tests_only} = grep { $_ eq '--core-tests' } @argv; + @argv = grep { $_ ne '--core-tests' } @argv; + + $longopts{runcore_tests_only} = grep { $_ eq '--runcore-tests' } @argv; + @argv = grep { $_ ne '--runcore-tests' } @argv; + + $longopts{html} = grep { $_ eq '--html' } @argv; + @argv = grep { $_ ne '--html' } @argv; + + $longopts{run_exec} = grep { $_ eq '--run-exec' } @argv; + @argv = grep { $_ ne '--run-exec' } @argv; + + $longopts{use_test_run} = grep { $_ eq '--tr' } @argv; + @argv = grep { $_ ne '--tr' } @argv; + + return (\%longopts, @argv); +} + sub get_test_prog_args { my ($optsref, $gc_debug, $run_exec) = @_; my %opts = %{ $optsref }; Modified: branches/harness/t/harness ============================================================================== --- branches/harness/t/harness (original) +++ branches/harness/t/harness Sun Jan 27 06:50:56 2008 @@ -93,41 +93,24 @@ use Test::Harness(); use Parrot::Harness::DefaultTests; use Parrot::Harness::Options qw( + handle_long_options get_test_prog_args ); use Parrot::Harness::Smoke qw( generate_html_smoke_report ); -# handle the long options -my %longopts; - -$ENV{RUNNING_MAKE_TEST} = grep { $_ eq '--running-make-test' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--running-make-test' } @ARGV; - -$longopts{gc_debug} = grep { $_ eq '--gc-debug' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--gc-debug' } @ARGV; - -$longopts{core_tests_only} = grep { $_ eq '--core-tests' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--core-tests' } @ARGV; - -$longopts{runcore_tests_only} = grep { $_ eq '--runcore-tests' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--runcore-tests' } @ARGV; - -$longopts{html} = grep { $_ eq '--html' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--html' } @ARGV; - -$longopts{run_exec} = grep { $_ eq '--run-exec' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--run-exec' } @ARGV; - -$longopts{use_test_run} = grep { $_ eq '--tr' } @ARGV; [EMAIL PROTECTED] = grep { $_ ne '--tr' } @ARGV; - -$longopts{use_test_run} ||= $ENV{'PARROT_USE_TEST_RUN'}; +local @ARGV = @ARGV; +my $longopts; +($longopts, @ARGV) = handle_long_options(@ARGV); # Suck the short options into the TEST_PROG_ARGS evar: my %opts; getopts('wgjPCSefbvdr?hO:D:', \%opts); + +$ENV{RUNNING_MAKE_TEST} = $longopts->{running_make_test}; +$longopts->{use_test_run} ||= $ENV{'PARROT_USE_TEST_RUN'}; + if ($opts{'?'} || $opts{h}) { print <<"EOF"; perl t/harness [options] [testfiles] @@ -157,19 +140,19 @@ # 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}); +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} + $longopts->{core_tests_only}, + $longopts->{runcore_tests_only} ); my @tests = map { glob( $_ ) } (@ARGV ? @ARGV : @default_tests); -if ($longopts{use_test_run}) { +if ($longopts->{use_test_run}) { require Test::Run::CmdLine::Iface; my $test_run = Test::Run::CmdLine::Iface->new( @@ -181,7 +164,7 @@ $test_run->run(); } -elsif (!$longopts{html}) { +elsif (!$longopts->{html}) { Test::Harness::runtests(@tests); } else { generate_html_smoke_report ( { Added: branches/harness/t/pharness/03-handle_long_options.t ============================================================================== --- (empty file) +++ branches/harness/t/pharness/03-handle_long_options.t Sun Jan 27 06:50:56 2008 @@ -0,0 +1,69 @@ +#! perl +# Copyright (C) 2007, The Perl Foundation. +# $Id$ +# 03-handle_long_options.t + +use strict; +use warnings; + +use lib qw( lib ); +#use Test::More; +#eval { +# use Parrot::Config qw( %PConfig ); +#}; +#plan( skip_all => 't/harness only runs once configuration has completed' ) +# if $@; +#plan( tests => 16 ); +use Test::More qw( no_plan ); +use Carp; +use Parrot::Harness::Options; + +my (@argv, $longopts); [EMAIL PROTECTED] = qw( + -wv + -O2 + --running-make-test + --gc-debug + t/postconfigure/*.t +); # */ + +($longopts, @argv) = handle_long_options(@argv); +ok($longopts->{running_make_test}, "Captured long option"); +ok($longopts->{gc_debug}, "Captured long option"); +my %still_argv = map {$_, 1} @argv; +ok($still_argv{'-wv'}, "Combined short options still present in @ARGV"); +ok($still_argv{'-O2'}, "Short options with values still present in @ARGV"); +ok($still_argv{'t/postconfigure/*.t'}, "Arguments still present in @ARGV"); + +pass("Completed all tests in $0"); + +################### DOCUMENTATION ################### + +=head1 NAME + +03-handle_long_options.t - test Parrot::Harness::Options + +=head1 SYNOPSIS + + % prove t/pharness/03-handle_long_options.t + +=head1 DESCRIPTION + +This file holds tests for Parrot::Harness::Options::handle_long_options(). + +=head1 AUTHOR + +James E Keenan + +=head1 SEE ALSO + +Parrot::Harness::Options, F<t/harness>. + +=cut + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: