[Templates-cvs] cvs commit: TT3/lib/Template/TT3 Test.pm

cvs@template-toolkit.org cvs@template-toolkit.org
Tue, 16 Dec 2003 18:47:39 +0000


cvs         03/12/16 18:47:38

  Modified:    lib/Template/TT3 Test.pm
  Log:
  * added test_expect() method
  
  Revision  Changes    Path
  1.2       +43 -4     TT3/lib/Template/TT3/Test.pm
  
  Index: Test.pm
  ===================================================================
  RCS file: /template-toolkit/TT3/lib/Template/TT3/Test.pm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Test.pm	2003/12/16 13:35:01	1.1
  +++ Test.pm	2003/12/16 18:47:37	1.2
  @@ -17,7 +17,7 @@
   #   modify it under the same terms as Perl itself.
   #
   # REVISION
  -#   $Id: Test.pm,v 1.1 2003/12/16 13:35:01 abw Exp $
  +#   $Id: Test.pm,v 1.2 2003/12/16 18:47:37 abw Exp $
   #
   #========================================================================
   
  @@ -31,7 +31,7 @@
   use vars qw( $VERSION $DEBUG $ERROR $WARNING 
                $MAGIC $DATA $DIFF @EXPORT_OK %EXPORT_TAGS );
   
  -$VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
  +$VERSION = sprintf("%d.%02d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/);
   $DEBUG   = 0 unless defined $DEBUG;
   $ERROR   = '';
   $MAGIC   = '\s* -- \s*';
  @@ -40,7 +40,7 @@
   eval "use Algorithm::Diff qw( diff )";
   $DIFF = $@ ? 0 : 1;
   
  -@EXPORT_OK   = qw( data_text data_tests diff_result $DIFF );
  +@EXPORT_OK   = qw( data_text data_tests test_expect diff_result $DIFF );
   %EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
   
   
  @@ -108,6 +108,45 @@
       return wantarray ? @tests : \@tests;
   }
   
  +
  +
  +sub test_expect {
  +    my $config  = @_ && ref $_[0] eq 'HASH' ? shift : { @_ };
  +    my $tests   = $config->{ tests } || data_tests();
  +    my $handler = $config->{ handler } 
  +        || die "no handler provider for test_expect()\n";
  +    my $ok = $config->{ ok } 
  +        || die "no ok() subroutine provided for test_expect()\n";
  +
  +    foreach my $test (@$tests) {
  +        if (grep(/skip/, @{ $test->{ inflags } })) {
  +            &$ok( 1, "skipping test: $test->{ name }" );
  +            next;
  +        }
  +
  +        my $result = &$handler($test);
  +        
  +        if ($result eq $test->{ expect }) {
  +            &$ok(1, $test->{ name });
  +        }
  +        else {
  +            &$ok(0, $test->{ name });
  +            if ($DEBUG) {
  +                my ($e, $r) = ($test->{ expect }, $result);
  +                for ($e, $r) {
  +                    s/^/#/gm;
  +                }
  +                print STDERR "# expect [$e]\n";
  +                print STDERR "# result [$r]\n";
  +                if ($DIFF) {
  +                    print STDERR "# diff\n";
  +                    diff_result($test->{ expect }, $result);
  +                }
  +            }
  +        }
  +    }
  +}
  +
   sub diff_result {
       my ($expect, $result) = @_;
   
  @@ -156,7 +195,7 @@
   
   =head1 VERSION
   
  -$Revision: 1.1 $
  +$Revision: 1.2 $
   
   =head1 COPYRIGHT