@@ -369,6 +369,7 @@ sub new ($)
369369 my $self = {};
370370 my $basename = shift ;
371371 my $buildname = shift ;
372+ my $failed_tests = shift ;
372373 my $rev_link = shift ;
373374 my $log_prefix = shift ;
374375
@@ -383,6 +384,7 @@ sub new ($)
383384 $self -> {SUBSECTION_COUNTER } = 0;
384385 $self -> {TITLE } = " Failed Test Brief Log By Build" ;
385386 $self -> {GIT_CHECKEDOUT_OPENDDS } = " unknown" ;
387+ $self -> {FAILED_TESTS } = $failed_tests ;
386388 $self -> {REV_LINK } = $rev_link ;
387389
388390 unless (-e $filename ) {
@@ -393,6 +395,8 @@ sub new ($)
393395 $self -> {FH } = new FileHandle ($filename , ' >>' );
394396 $self -> {FILENAME } = $filename ;
395397 $self -> {BUILDNAME } = $buildname ;
398+ $self -> {USE_BUILDNAME } = ' ' ;
399+ $self -> {CURRENT_SUBSECTION } = ' ' ;
396400
397401 bless ($self , $class );
398402 return $self ;
@@ -401,7 +405,6 @@ sub new ($)
401405sub Header ()
402406{
403407 my $self = shift ;
404-
405408 if (defined $self -> {LAST_SECTION } && $self -> {LAST_SECTION } eq ' Test' ) {
406409 print {$self -> {FH }} " <html>\n " ;
407410 print {$self -> {FH }} " <body bgcolor=\" white\" >\n " ;
@@ -471,29 +474,42 @@ sub Subsection ($)
471474sub Print_Sections ()
472475{
473476 my $self = shift ;
477+ my $rev = substr ($self -> {GIT_CHECKEDOUT_OPENDDS }, 0, 8);
478+ my $rev_line = " " ;
479+ if ($rev ne " unknown" ) {
480+ $rev_line = " Rev: " ;
481+ if (length ($self -> {REV_LINK })) {
482+ $rev_line .= " <a href=$self ->{REV_LINK}" ;
483+ $rev_line =~ s /\/ $// g ;
484+ $rev_line .= " /$rev >" ;
485+ }
486+ $rev_line .= $rev ;
487+ if (length ($self -> {REV_LINK })) {
488+ $rev_line .= " </a>" ;
489+ }
490+ }
474491
475492 if (defined $self -> {LAST_SECTION } && defined $self -> {LAST_SUBSECTION } && $self -> {LAST_SECTION } eq ' Test' ) {
476- if (defined $self -> {BUILDNAME }) {
477- print {$self -> {FH }} " <hr><h2>$self ->{BUILDNAME}</h2>\n " ;
478- my $rev = substr ($self -> {GIT_CHECKEDOUT_OPENDDS }, 0, 8);
493+ if (defined $self -> {USE_BUILDNAME }) {
494+ print {$self -> {FH }} " <hr><h2>$self ->{BUILDNAME}</h2>" ;
479495 if ($rev ne " unknown" ) {
480- my $rev_line = " Rev: " ;
481- if (length ($self -> {REV_LINK })) {
482- $rev_line .= " <a href=$self ->{REV_LINK}" ;
483- $rev_line =~ s /\/ $// g ;
484- $rev_line .= " /$rev >" ;
485- }
486- $rev_line .= $rev ;
487- if (length ($self -> {REV_LINK })) {
488- $rev_line .= " </a>" ;
489- }
490- print {$self -> {FH }} " $rev_line <hr>\n " ;
491- }
492- $self -> {BUILDNAME } = undef ;
496+ print {$self -> {FH }} " $rev_line \n " ;
497+ }
498+ $self -> {USE_BUILDNAME } = undef ;
499+ }
500+
501+ if (defined $self -> {FAILED_TESTS }-> {$self -> {LAST_SUBSECTION }}) {
502+ $self -> {FAILED_TESTS }-> {$self -> {LAST_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {LAST_SUBSECTION }} . " <h3>$self ->{BUILDNAME}</h3>\n $rev_line <br><br>" ;
503+ }
504+ else {
505+ $self -> {FAILED_TESTS }-> {$self -> {LAST_SUBSECTION }} = " <h3>$self ->{BUILDNAME}</h3>\n $rev_line <br><br>" ;
493506 }
494507
495508 print {$self -> {FH }} " <a name=\" subsection_$self ->{SUBSECTION_COUNTER}\" ></a>" ;
496- print {$self -> {FH }} " <h3>$self ->{LAST_SUBSECTION}</h3>\n " ;
509+ print {$self -> {FH }} " <h3>$self ->{LAST_SUBSECTION}</h3>" ;
510+
511+ $self -> {CURRENT_SUBSECTION } = $self -> {LAST_SUBSECTION };
512+
497513 $self -> {LAST_SUBSECTION } = undef ;
498514 }
499515}
@@ -504,7 +520,6 @@ sub Error ($)
504520 my $s = shift ;
505521
506522 if (defined $self -> {LAST_SECTION } && $self -> {LAST_SECTION } eq ' Test' ) {
507-
508523 # Escape any '<' or '>' signs
509524 $s =~ s / </ </ g ;
510525 $s =~ s / >/ >/ g ;
@@ -513,10 +528,17 @@ sub Error ($)
513528
514529 $self -> Print_Sections ();
515530
516- print {$self -> {FH }} " <a name=\" error_$counter \" ></a>\n " ;
517- print {$self -> {FH }} " <tt>[<a href=\" $self ->{FULLHTML}#error_$counter "
518- . " \" >Details</a>] </tt>" ;
519- print {$self -> {FH }} " <font color=\" FF0000\" ><tt>$s </tt></font><br>\n " ;
531+ my $Err1 = " <a name=\" error_$counter \" ></a>\n " ;
532+ my $Err2 = " <tt>[<a href=\" $self ->{FULLHTML}#error_$counter " . " \" >Details</a>] </tt>" ;
533+ my $Err3 = " <font color=\" FF0000\" ><tt>$s </tt></font><br>\n " ;
534+
535+ print {$self -> {FH }} $Err1 ;
536+ print {$self -> {FH }} $Err2 ;
537+ print {$self -> {FH }} $Err3 ;
538+
539+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Err1 ;
540+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Err2 ;
541+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Err3 ;
520542 }
521543}
522544
@@ -534,10 +556,17 @@ sub Warning ($)
534556
535557 $self -> Print_Sections ();
536558
537- print {$self -> {FH }} " <a name=\" warning_$counter \" ></a>\n " ;
538- print {$self -> {FH }} " <tt>[<a href=\" $self ->{FULLHTML}#warning_$counter "
539- . " \" >Details</a>] </tt>" ;
540- print {$self -> {FH }} " <font color=\" FF7700\" ><tt>$s </tt></font><br>\n " ;
559+ my $Warning1 = " <a name=\" warning_$counter \" ></a>\n " ;
560+ my $Warning2 = " <tt>[<a href=\" $self ->{FULLHTML}#warning_$counter \" >Details</a>] </tt>" ;
561+ my $Warning3 = " <font color=\" FF7700\" ><tt>$s </tt></font><br>\n " ;
562+
563+ print {$self -> {FH }} $Warning1 ;
564+ print {$self -> {FH }} $Warning2 ;
565+ print {$self -> {FH }} $Warning3 ;
566+
567+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Warning1 ;
568+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Warning2 ;
569+ $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} = $self -> {FAILED_TESTS }-> {$self -> {CURRENT_SUBSECTION }} . $Warning3 ;
541570 }
542571}
543572
@@ -1060,48 +1089,72 @@ use FileHandle;
10601089
10611090# ##############################################################################
10621091
1063- sub new ($$$$$$)
1092+ sub new ($$$$$$$$ )
10641093{
10651094 my $proto = shift ;
10661095 my $class = ref ($proto ) || $proto ;
10671096 my $self = {};
10681097 my $basename = shift ;
10691098 my $buildname = shift ;
1099+ my $failed_tests_ref = shift ;
10701100 my $skip_failed_test_logs = shift ;
10711101 my $rev_link = shift ;
10721102 my $log_prefix = shift ;
1103+ my $failed_tests_only = shift ;
10731104
10741105 # Initialize some variables
10751106
10761107 $self -> {STATE } = ' ' ;
10771108 $self -> {LAST_SECTION } = ' ' ;
10781109 $self -> {LAST_DESCRIPTION } = ' ' ;
1079-
1080- # Initialize the hash table of handlers for each section
1081-
1082- %{$self -> {HANDLERS }} =
1083- (
1084- ' begin' => \&Normal_Handler,
1085- ' setup' => \&Setup_Handler,
1086- ' config' => \&Config_Handler,
1087- ' configure' => \&Autoconf_Handler,
1088- ' compile' => \&Compile_Handler,
1089- ' test' => \&Test_Handler,
1090- ' end' => \&Normal_Handler
1091- );
1092-
1093- # Initialize the list of output classes
1094-
1095- @{$self -> {OUTPUT }} =
1096- (
1097- new Prettify::Full_HTML ($basename ), # Must be 0
1098- new Prettify::Brief_HTML ($basename ),
1099- new Prettify::Totals_HTML ($basename ), # Must be 2
1100- new Prettify::Config_HTML ($basename ), # Must be 3
1101- );
1110+ $self -> {FAILED_TESTS } = $failed_tests_ref ;
1111+ $self -> {FAILED_TESTS_ONLY } = $failed_tests_only ;
1112+
1113+ if ($failed_tests_only ) {
1114+ $self -> {TOTALS } = new Prettify::Totals_HTML ($basename );
1115+ }
1116+
1117+ if (!$failed_tests_only ) {
1118+ # Initialize the hash table of handlers for each section
1119+
1120+ %{$self -> {HANDLERS }} =
1121+ (
1122+ ' begin' => \&Normal_Handler,
1123+ ' setup' => \&Setup_Handler,
1124+ ' config' => \&Config_Handler,
1125+ ' configure' => \&Autoconf_Handler,
1126+ ' compile' => \&Compile_Handler,
1127+ ' test' => \&Test_Handler,
1128+ ' end' => \&Normal_Handler
1129+ );
1130+
1131+ # Initialize the list of output classes
1132+
1133+ @{$self -> {OUTPUT }} =
1134+ (
1135+ new Prettify::Full_HTML ($basename ), # Must be at 0
1136+ new Prettify::Brief_HTML ($basename ),
1137+ new Prettify::Totals_HTML ($basename ), # Must be at 2
1138+ new Prettify::Config_HTML ($basename ), # Must be at 3
1139+ );
11021140
1103- if (!$skip_failed_test_logs ) {
1104- push @{$self -> {OUTPUT }}, new Prettify::Failed_Tests_HTML ($basename , $buildname , $rev_link , $log_prefix ); # Must be 4, if used
1141+ if (!$skip_failed_test_logs ) {
1142+ push @{$self -> {OUTPUT }}, new Prettify::Failed_Tests_HTML ($basename , $buildname , $self -> {FAILED_TESTS }, $rev_link , $log_prefix ); # Must be at 4, if used with other reports
1143+ }
1144+ }
1145+ elsif (!$skip_failed_test_logs ) {
1146+ %{$self -> {HANDLERS }} =
1147+ (
1148+ ' begin' => \&Normal_Handler,
1149+ ' setup' => \&Setup_Handler,
1150+ ' config' => \&Config_Handler,
1151+ ' test' => \&Test_Handler,
1152+ );
1153+
1154+ @{$self -> {OUTPUT }} =
1155+ (
1156+ new Prettify::Failed_Tests_HTML ($basename , $buildname , $self -> {FAILED_TESTS }, $rev_link , $log_prefix ),
1157+ );
11051158 }
11061159
11071160 my $junit = main::GetVariable (' junit_xml_output' );
@@ -1316,7 +1369,7 @@ sub Setup_Handler ($)
13161369 return ;
13171370 }
13181371
1319- my $totals = (@{$self -> {OUTPUT }})[2];
1372+ my $totals = $self -> { FAILED_TESTS_ONLY } ? $self -> { TOTALS } : (@{$self -> {OUTPUT }})[2];
13201373
13211374 if ($s =~ m / Executing: (?:.*\/ )?cvs(?:.exe)? / i ) # # Prismtech still use some CVS please leave
13221375 {
@@ -1448,11 +1501,10 @@ sub Setup_Handler ($)
14481501 elsif (" $totals ->{GIT_CHECKEDOUT_OPENDDS}" eq " Matched" )
14491502 {
14501503 $totals -> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
1451- if (exists ($self -> {OUTPUT }[4]))
1504+ if (exists ($self -> {OUTPUT }[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]))
14521505 {
1453- (@{$self -> {OUTPUT }})[4]-> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
1506+ (@{$self -> {OUTPUT }})[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]-> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
14541507 }
1455-
14561508 }
14571509 $self -> Output_Normal ($s );
14581510 }
@@ -1523,10 +1575,12 @@ sub Config_Handler ($)
15231575 my $state = $self -> {STATE };
15241576
15251577 # We only want to output config stuff to the Config_HTML class (and FULL)
1526- $outputs [0]-> Normal($s , $state );
1527- $outputs [3]-> Normal($s , $state );
1578+ if (!$self -> {FAILED_TESTS_ONLY }){
1579+ $outputs [0]-> Normal($s , $state );
1580+ $outputs [3]-> Normal($s , $state );
1581+ }
15281582
1529- my $totals = (@{$self -> {OUTPUT }})[2];
1583+ my $totals = $self -> { FAILED_TESTS_ONLY } ? $self -> { TOTALS } : (@{$self -> {OUTPUT }})[2];
15301584
15311585 if ($s =~ m / SVN_REVISION(_(\d ))?=(\d +)/ )
15321586 {
@@ -1583,9 +1637,9 @@ sub Config_Handler ($)
15831637 my $revision = $totals -> {GIT_REVISIONS }[0];
15841638 print " Matched GIT url to revision $revision \n " ;
15851639 $totals -> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
1586- if (exists ($self -> {OUTPUT }[4]))
1640+ if (exists ($self -> {OUTPUT }[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]))
15871641 {
1588- (@{$self -> {OUTPUT }})[4]-> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
1642+ (@{$self -> {OUTPUT }})[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]-> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
15891643 }
15901644 }
15911645 }
@@ -1720,17 +1774,19 @@ sub BuildErrors ($)
17201774# In this function we process the log file line by line,
17211775# looking for errors.
17221776
1723- sub Process ($;$$$$)
1777+ sub Process ($;$$$$$$ )
17241778{
17251779 my $filename = shift ;
17261780 my $basename = $filename ;
17271781 $basename =~ s /\. txt$// ;
17281782 my $buildname = shift // " " ;
1783+ my $failed_tests_ref = shift // {};
17291784 my $skip_failed_test_logs = shift // 1;
17301785 my $rev_link = shift // " " ;
17311786 my $log_prefix = shift // " " ;
1787+ my $failed_tests_only = shift // 0;
17321788
1733- my $processor = new Prettify ($basename , $buildname , $skip_failed_test_logs , $rev_link , $log_prefix );
1789+ my $processor = new Prettify ($basename , $buildname , $failed_tests_ref , $ skip_failed_test_logs , $rev_link , $log_prefix , $failed_tests_only );
17341790
17351791 my $input = new FileHandle ($filename , ' r' );
17361792
@@ -1744,12 +1800,14 @@ sub Process ($;$$$$)
17441800 # notification if MAIL_ADMIN was specified in the XML config
17451801 # file.
17461802
1747- my @errors = $processor -> BuildErrors();
1748- my $mail_admin = main::GetVariable ( ' MAIL_ADMIN' );
1749- my $mail_admin_file = main::GetVariable ( ' MAIL_ADMIN_FILE' );
1750- if ( (scalar ( @errors ) > 0) && ((defined $mail_admin ) || (defined $mail_admin_file )) )
1751- {
1752- $processor -> SendEmailNotification();
1803+ if (!$failed_tests_only ) {
1804+ my @errors = $processor -> BuildErrors();
1805+ my $mail_admin = main::GetVariable ( ' MAIL_ADMIN' );
1806+ my $mail_admin_file = main::GetVariable ( ' MAIL_ADMIN_FILE' );
1807+ if ( (scalar ( @errors ) > 0) && ((defined $mail_admin ) || (defined $mail_admin_file )) )
1808+ {
1809+ $processor -> SendEmailNotification();
1810+ }
17531811 }
17541812
17551813 return $processor ;
0 commit comments