@@ -369,6 +369,7 @@ sub new ($)
369
369
my $self = {};
370
370
my $basename = shift ;
371
371
my $buildname = shift ;
372
+ my $failed_tests = shift ;
372
373
my $rev_link = shift ;
373
374
my $log_prefix = shift ;
374
375
@@ -383,6 +384,7 @@ sub new ($)
383
384
$self -> {SUBSECTION_COUNTER } = 0;
384
385
$self -> {TITLE } = " Failed Test Brief Log By Build" ;
385
386
$self -> {GIT_CHECKEDOUT_OPENDDS } = " unknown" ;
387
+ $self -> {FAILED_TESTS } = $failed_tests ;
386
388
$self -> {REV_LINK } = $rev_link ;
387
389
388
390
unless (-e $filename ) {
@@ -393,6 +395,8 @@ sub new ($)
393
395
$self -> {FH } = new FileHandle ($filename , ' >>' );
394
396
$self -> {FILENAME } = $filename ;
395
397
$self -> {BUILDNAME } = $buildname ;
398
+ $self -> {USE_BUILDNAME } = ' ' ;
399
+ $self -> {CURRENT_SUBSECTION } = ' ' ;
396
400
397
401
bless ($self , $class );
398
402
return $self ;
@@ -401,7 +405,6 @@ sub new ($)
401
405
sub Header ()
402
406
{
403
407
my $self = shift ;
404
-
405
408
if (defined $self -> {LAST_SECTION } && $self -> {LAST_SECTION } eq ' Test' ) {
406
409
print {$self -> {FH }} " <html>\n " ;
407
410
print {$self -> {FH }} " <body bgcolor=\" white\" >\n " ;
@@ -471,29 +474,42 @@ sub Subsection ($)
471
474
sub Print_Sections ()
472
475
{
473
476
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
+ }
474
491
475
492
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>" ;
479
495
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>" ;
493
506
}
494
507
495
508
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
+
497
513
$self -> {LAST_SUBSECTION } = undef ;
498
514
}
499
515
}
@@ -504,7 +520,6 @@ sub Error ($)
504
520
my $s = shift ;
505
521
506
522
if (defined $self -> {LAST_SECTION } && $self -> {LAST_SECTION } eq ' Test' ) {
507
-
508
523
# Escape any '<' or '>' signs
509
524
$s =~ s / </ </ g ;
510
525
$s =~ s / >/ >/ g ;
@@ -513,10 +528,17 @@ sub Error ($)
513
528
514
529
$self -> Print_Sections ();
515
530
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 ;
520
542
}
521
543
}
522
544
@@ -534,10 +556,17 @@ sub Warning ($)
534
556
535
557
$self -> Print_Sections ();
536
558
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 ;
541
570
}
542
571
}
543
572
@@ -1060,48 +1089,72 @@ use FileHandle;
1060
1089
1061
1090
# ##############################################################################
1062
1091
1063
- sub new ($$$$$$)
1092
+ sub new ($$$$$$$$ )
1064
1093
{
1065
1094
my $proto = shift ;
1066
1095
my $class = ref ($proto ) || $proto ;
1067
1096
my $self = {};
1068
1097
my $basename = shift ;
1069
1098
my $buildname = shift ;
1099
+ my $failed_tests_ref = shift ;
1070
1100
my $skip_failed_test_logs = shift ;
1071
1101
my $rev_link = shift ;
1072
1102
my $log_prefix = shift ;
1103
+ my $failed_tests_only = shift ;
1073
1104
1074
1105
# Initialize some variables
1075
1106
1076
1107
$self -> {STATE } = ' ' ;
1077
1108
$self -> {LAST_SECTION } = ' ' ;
1078
1109
$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
+ );
1102
1140
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
+ );
1105
1158
}
1106
1159
1107
1160
my $junit = main::GetVariable (' junit_xml_output' );
@@ -1316,7 +1369,7 @@ sub Setup_Handler ($)
1316
1369
return ;
1317
1370
}
1318
1371
1319
- my $totals = (@{$self -> {OUTPUT }})[2];
1372
+ my $totals = $self -> { FAILED_TESTS_ONLY } ? $self -> { TOTALS } : (@{$self -> {OUTPUT }})[2];
1320
1373
1321
1374
if ($s =~ m / Executing: (?:.*\/ )?cvs(?:.exe)? / i ) # # Prismtech still use some CVS please leave
1322
1375
{
@@ -1448,11 +1501,10 @@ sub Setup_Handler ($)
1448
1501
elsif (" $totals ->{GIT_CHECKEDOUT_OPENDDS}" eq " Matched" )
1449
1502
{
1450
1503
$totals -> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
1451
- if (exists ($self -> {OUTPUT }[4]))
1504
+ if (exists ($self -> {OUTPUT }[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]))
1452
1505
{
1453
- (@{$self -> {OUTPUT }})[4]-> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
1506
+ (@{$self -> {OUTPUT }})[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]-> {GIT_CHECKEDOUT_OPENDDS } = $sha ;
1454
1507
}
1455
-
1456
1508
}
1457
1509
$self -> Output_Normal ($s );
1458
1510
}
@@ -1523,10 +1575,12 @@ sub Config_Handler ($)
1523
1575
my $state = $self -> {STATE };
1524
1576
1525
1577
# 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
+ }
1528
1582
1529
- my $totals = (@{$self -> {OUTPUT }})[2];
1583
+ my $totals = $self -> { FAILED_TESTS_ONLY } ? $self -> { TOTALS } : (@{$self -> {OUTPUT }})[2];
1530
1584
1531
1585
if ($s =~ m / SVN_REVISION(_(\d ))?=(\d +)/ )
1532
1586
{
@@ -1583,9 +1637,9 @@ sub Config_Handler ($)
1583
1637
my $revision = $totals -> {GIT_REVISIONS }[0];
1584
1638
print " Matched GIT url to revision $revision \n " ;
1585
1639
$totals -> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
1586
- if (exists ($self -> {OUTPUT }[4]))
1640
+ if (exists ($self -> {OUTPUT }[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]))
1587
1641
{
1588
- (@{$self -> {OUTPUT }})[4]-> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
1642
+ (@{$self -> {OUTPUT }})[$self -> { FAILED_TESTS_ONLY } ? 0 : 4]-> {GIT_CHECKEDOUT_OPENDDS } = $revision ;
1589
1643
}
1590
1644
}
1591
1645
}
@@ -1720,17 +1774,19 @@ sub BuildErrors ($)
1720
1774
# In this function we process the log file line by line,
1721
1775
# looking for errors.
1722
1776
1723
- sub Process ($;$$$$)
1777
+ sub Process ($;$$$$$$ )
1724
1778
{
1725
1779
my $filename = shift ;
1726
1780
my $basename = $filename ;
1727
1781
$basename =~ s /\. txt$// ;
1728
1782
my $buildname = shift // " " ;
1783
+ my $failed_tests_ref = shift // {};
1729
1784
my $skip_failed_test_logs = shift // 1;
1730
1785
my $rev_link = shift // " " ;
1731
1786
my $log_prefix = shift // " " ;
1787
+ my $failed_tests_only = shift // 0;
1732
1788
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 );
1734
1790
1735
1791
my $input = new FileHandle ($filename , ' r' );
1736
1792
@@ -1744,12 +1800,14 @@ sub Process ($;$$$$)
1744
1800
# notification if MAIL_ADMIN was specified in the XML config
1745
1801
# file.
1746
1802
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
+ }
1753
1811
}
1754
1812
1755
1813
return $processor ;
0 commit comments