File Coverage

blib/lib/Test/Parser/newpynfs.pm
Criterion Covered Total %
statement 42 42 100.0
branch 12 12 100.0
condition n/a
subroutine 8 8 100.0
pod 2 2 100.0
total 64 64 100.0


line stmt bran cond sub pod time code
1             package Test::Parser::newpynfs;
2              
3             my $i=0;
4              
5             =head1 NAME
6              
7             Test::Parser::newpynfs - Perl module to parse output from runs of the
8             newpynfs testsuite.
9              
10             =head1 SYNOPSIS
11              
12             use Test::Parser::newpynfs;
13              
14             my $parser = new Test::Parser::newpynfs;
15             $parser->parse($text);
16             printf("Num Executed: %8d\n", $parser->num_executed());
17             printf("Num Passed: %8d\n", $parser->num_passed());
18             printf("Num Failed: %8d\n", $parser->num_failed());
19             printf("Num Skipped: %8d\n", $parser->num_skipped());
20              
21             Additional information is available from the subroutines listed below
22             and from the L baseclass.
23              
24             =head1 DESCRIPTION
25              
26             This module provides a way to extract information out of newpynfs test run
27             output.
28              
29             =head1 FUNCTIONS
30              
31             Also see L for functions available from the base class.
32              
33             =cut
34              
35 1     1   24432 use strict;
  1         3  
  1         38  
36 1     1   4 use warnings;
  1         2  
  1         26  
37 1     1   660 use Test::Parser;
  1         14  
  1         46  
38              
39             @Test::Parser::newpynfs::ISA = qw(Test::Parser);
40 1     1   9 use base 'Test::Parser';
  1         2  
  1         346  
41              
42 1         6 use fields qw(
43             _current_test
44 1     1   5 );
  1         2  
45              
46 1     1   49 use vars qw( %FIELDS $AUTOLOAD $VERSION );
  1         1  
  1         494  
47             our $VERSION = '1.7';
48              
49             =head2 new()
50              
51             Creates a new Test::Parser::newpynfs instance.
52             Also calls the Test::Parser base class' new() routine.
53             Takes no arguments.
54              
55             =cut
56              
57             sub new {
58 1     1 1 753 my $class = shift;
59 1         6 my Test::Parser::newpynfs $self = fields::new($class);
60 1         3743 $self->SUPER::new();
61              
62 1         8 $self->name('newpynfs');
63 1         7 $self->type('standards');
64              
65 1         2 $self->{_current_test} = undef;
66              
67 1         3 $self->{num_passed} = 0;
68 1         2 $self->{num_failed} = 0;
69 1         2 $self->{num_skipped} = 0;
70              
71 1         3 return $self;
72             }
73              
74             =head3
75              
76             Override of Test::Parser's default parse_line() routine to make it able
77             to parse newpynfs output.
78              
79             =cut
80             sub parse_line {
81 787     787 1 888 my $self = shift;
82 787         938 my $line = shift;
83              
84             # Change state, if appropriate
85 787 100       3367 if (/^(\w+)\s+([\w\.]+)\s+: ([A-Z]+)$/) {
    100          
    100          
86 578         1437 my ($test, $desc, $result) = ($1, $2, $3);
87             # This is a new test
88 578         22385 print "$test - $desc - $result\n";
89              
90             # Add the previous one to the testcases list
91 578         662 push @{$self->{testcases}}, $self->{_current_test};
  578         1226  
92              
93 578         2223 $self->{_current_test}->{name} = {
94             name => $test,
95             desc => $desc,
96             result => $result,
97             };
98 578 100       1527 if ($result eq "PASS") {
    100          
    100          
99 491         756 $self->{num_passed}++;
100             } elsif ($result eq "OMIT") {
101 13         24 $self->{num_skipped}++;
102             } elsif ($result eq "FAILURE") {
103 57         88 $self->{num_failed}++;
104             }
105              
106             } elsif (/^\*\*\*/) {
107             # This marks the end of the test
108 2         5 $self->{_current_test} = undef;
109              
110             } elsif (defined $self->{_current_test}) {
111             # The line is commentary about the test result
112              
113             }
114              
115 787         2268 return 1;
116             }
117              
118             1;
119             __END__