fix hash order dependency bug in Local-Maketext/t/09_compile.t
authorYves Orton <demerphq@gmail.com>
Wed, 21 Nov 2012 23:43:14 +0000 (00:43 +0100)
committerYves Orton <demerphq@gmail.com>
Wed, 21 Nov 2012 23:43:14 +0000 (00:43 +0100)
This would occasionally fail if it ended up encountering PERL5LIB in the environment hash
as the first value.

The test was actually broken anyway, as it would infinitie loop with a totally empty environment

dist/Locale-Maketext/t/09_compile.t

index d03ba9f..3c00f59 100644 (file)
@@ -8,13 +8,15 @@ use Test::More tests => 2;
 use Scalar::Util qw(tainted);
 use Locale::Maketext;
 
-my @ENV_values = values %ENV;
-my $tainted_value;
-do { $tainted_value = shift @ENV_values  } while(!$tainted_value || ref $tainted_value);
+my @ENV_values = map { !/^PERL/ && defined($ENV{$_}) && !ref($ENV{$_}) && $ENV{$_} ? $ENV{$_} : () } keys %ENV;
+die "No %ENV vars to test?" if !@ENV_values;
+
+my ($tainted_value)= @ENV_values;
 $tainted_value =~ s/([\[\]])/~$1/g;
 
-# If ${^TAINT} is not set despite -T, thsi perl doesn't have taint support
-ok(!${^TAINT} || tainted($tainted_value), "\$tainted_value is tainted") or die('huh... %ENV has no entries? I don\'t know how to test taint without it');
+# If ${^TAINT} is not set despite -T, this perl doesn't have taint support
+ok(!${^TAINT} || tainted($tainted_value), "\$tainted_value is tainted")
+    or die("Could not find tainted value to use for testing (maybe fix the test?)");
 
 my $result = Locale::Maketext::_compile("hello [_1]", $tainted_value);