From 9414be0160a1f343d4ae75ec161fec610da39c84 Mon Sep 17 00:00:00 2001 From: David Mitchell Date: Fri, 24 Aug 2012 15:49:21 +0100 Subject: [PATCH] rationalise t/re/pat_psycho.t Do some cleanup of this file, without changing its functionality. Once upon a time, the psycho tests were scattered throughout a single pat.t file, before being moved into their own file. Now that they're all in a single file, make the $PERL_SKIP_PSYCHO_TEST test a single "skip_all" test at the beginning of the file, rather than testing it separately in each code block. Also, make some of the test descriptions more useful, and add a bit of debugging output. --- t/re/pat_psycho.t | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/t/re/pat_psycho.t b/t/re/pat_psycho.t index c5073a5..0880242 100644 --- a/t/re/pat_psycho.t +++ b/t/re/pat_psycho.t @@ -3,6 +3,9 @@ # This is a home for regular expression tests that don't fit into # the format supported by re/regexp.t. If you want to add a test # that does fit that format, add it to re/re_tests, not here. +# +# this file includes test that my burn a lot of CPU or otherwise be heavy +# on resources. Set env var $PERL_SKIP_PSYCHO_TEST to skip this file use strict; use warnings; @@ -21,6 +24,7 @@ BEGIN { } +skip_all('$PERL_SKIP_PSYCHO_TEST set') if $ENV{PERL_SKIP_PSYCHO_TEST}; plan tests => 11; # Update this when adding/deleting tests. run_tests() unless caller; @@ -29,16 +33,17 @@ run_tests() unless caller; # Tests start here. # sub run_tests { + print "# Set PERL_SKIP_PSYCHO_TEST to skip these tests\n"; - SKIP: { - print "# Set PERL_SKIP_PSYCHO_TEST to skip this test\n"; - my @normal = qw [the are some normal words]; - skip "Skipped Psycho", 2 * @normal if $ENV {PERL_SKIP_PSYCHO_TEST}; + # stress test tries + + my @normal = qw [the are some normal words]; local $" = "|"; + note "setting up trie psycho vars ..."; my @psycho = (@normal, map chr $_, 255 .. 20000); my $psycho1 = "@psycho"; for (my $i = @psycho; -- $i;) { @@ -48,13 +53,12 @@ sub run_tests { my $psycho2 = "@psycho"; foreach my $word (@normal) { - ok $word =~ /($psycho1)/ && $1 eq $word, 'Psycho'; - ok $word =~ /($psycho2)/ && $1 eq $word, 'Psycho'; + ok $word =~ /($psycho1)/ && $1 eq $word, qq{"$word" =~ /\$psycho1/}; + ok $word =~ /($psycho2)/ && $1 eq $word, qq{"$word" =~ /\$psycho1/}; } } - SKIP: { # stress test CURLYX/WHILEM. # @@ -63,8 +67,6 @@ sub run_tests { # CURLYX and WHILEM blocks, except those related to LONGJMP, the # super-linear cache and warnings. It executes about 0.5M regexes - skip "No psycho tests" if $ENV {PERL_SKIP_PSYCHO_TEST}; - print "# Set PERL_SKIP_PSYCHO_TEST to skip this test\n"; my $r = qr/^ (?: ( (?:a|z+)+ ) -- 1.8.3.1