[tools] winetest/build-patterns: Split write_patterns_list().

Francois Gouget fgouget at codeweavers.com
Tue May 4 10:26:13 CDT 2021


Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 winetest/build-patterns | 253 +++++++++++++++++++++-------------------
 1 file changed, 135 insertions(+), 118 deletions(-)

diff --git a/winetest/build-patterns b/winetest/build-patterns
index 130294ea1..a5f98f5f3 100755
--- a/winetest/build-patterns
+++ b/winetest/build-patterns
@@ -709,6 +709,140 @@ sub cmpstatus
     return ($a =~ /^[0-9]+$/ and $b =~ /^[0-9]+$/) ? $a <=> $b : $a cmp $b;
 }
 
+sub write_newmodes_line($$)
+{
+    my ($html, $test) = @_;
+
+    print $html "New failure modes:";
+    foreach my $status (sort cmpstatus keys %{$test->{newmodes}})
+    {
+        my ($symbol, $class, $title, $_link, $attrs) = get_status_html($status, $test->{colors});
+        print $html " <span class='pat$class'$attrs title='$title'><b><i>$symbol</i></b></span>";
+    }
+    print $html "\n";
+}
+
+sub write_pattern_line($$$)
+{
+    my ($html, $test, $reportdir) = @_;
+    my $testreport = $test->{testreports}->{$reportdir};
+
+    print $html "<div class='pattern'>";
+
+    my $has_newmode;
+    my ($range_symbol, $range_count) = ("", 0);
+    my ($range_start, $range_end, $range_title);
+    foreach my $build (@sortedbuilds)
+    {
+        my ($symbol, $class, $title);
+        my ($tag, $attrs) = ("span", "");
+        my $status = $testreport->{status}->{$build->{name}};
+
+        if (!defined $status)
+        {
+            if (!$build->{hasreport}->{$reportdir})
+            {
+                $symbol = "_";
+                $class = "W";
+                $title = "WineTest was not run";
+            }
+            elsif ($build->{hastest}->{$test->{name}})
+            {
+                $symbol = ".";
+                $class = "S";
+                $title = "success";
+            }
+            else
+            {
+                $symbol = " ";
+                $class = "A";
+                $title = "no such test in this build";
+            }
+        }
+        else
+        {
+            ($symbol, $class, $title, my $link, $attrs) = get_status_html($status, $test->{colors});
+            if ($link eq "t")
+            {
+                $tag = "a";
+                $attrs .= sprintf " href='%s/%s/%s.html'",
+                                  $build->{name}, $reportdir, $test->{name};
+            }
+            elsif ($link)
+            {
+                $tag = "a";
+                my $dll = $test->{name};
+                $dll =~ s/:.*//;
+                $attrs .= sprintf " href='%s/%s/%s.html#%s'",
+                                  $build->{name}, $reportdir, $link, $dll;
+            }
+            if ($test->{newmodes}->{$status})
+            {
+                $symbol = "<b><i>$symbol</i></b>";
+                $has_newmode = 1;
+            }
+        }
+
+        if ($range_symbol eq $symbol)
+        {
+            $range_end = $build->{date};
+            $range_count++;
+        }
+        else
+        {
+            # Close the previous range of patterns
+            if ($range_count)
+            {
+                printf $html " title='%s : %s'>%s</span>",
+                             date_range($range_start, $range_end),
+                             $range_title, $range_symbol x $range_count;
+                $range_symbol = $range_end = "";
+                $range_count = 0;
+            }
+
+            # Start a new pattern range
+            $class = " class='pat$class'" if ($class);
+            print $html "<$tag$class$attrs";
+            if ($tag eq "a")
+            {
+                printf $html " title='%s : %s'>%s</a>",
+                             short_date($build->{date}), $title, $symbol;
+            }
+            else
+            {
+                $range_symbol = $symbol;
+                $range_start = $build->{date};
+                $range_title = $title;
+                $range_count = 1;
+            }
+        }
+    }
+    if ($range_count)
+    {
+        printf $html " title='%s : %s'>%s</span>",
+                     date_range($range_start, $range_end),
+                     $range_title, $range_symbol x $range_count;
+    }
+    my $label = $reportdir;
+    $label = "<b>$label</b>" if ($has_newmode);
+    print $html "</div> $label\n";
+}
+
+sub write_pattern($$$)
+{
+    my ($html, $test, $pagereports) = @_;
+
+    compute_set_colors($test->{colors});
+    write_newmodes_line($html, $test) if (%{$test->{newmodes}});
+
+    foreach my $reportdir (@sortedreports)
+    {
+        next if (!$pagereports->{$reportdir});
+        next if (!$test->{testreports}->{$reportdir}->{failed});
+        write_pattern_line($html, $test, $reportdir);
+    }
+}
+
 sub write_patterns_list($$$$)
 {
     my ($html, $pagereports, $mainpage, $list) = @_;
@@ -734,125 +868,8 @@ sub write_patterns_list($$$$)
 
         print $html "</div></div>\n";
 
-        compute_set_colors($test->{colors});
-
         print $html "<div class='test'>\n";
-        if (%{$test->{newmodes}})
-        {
-            print $html "New failure modes:";
-            foreach my $status (sort cmpstatus keys %{$test->{newmodes}})
-            {
-                my ($symbol, $class, $title, $_link, $attrs) = get_status_html($status, $test->{colors});
-                print $html " <span class='pat$class'$attrs title='$title'><b><i>$symbol</i></b></span>";
-            }
-            print $html "\n";
-        }
-
-        foreach my $reportdir (@sortedreports)
-        {
-            next if (!$pagereports->{$reportdir});
-            my $testreport = $test->{testreports}->{$reportdir};
-            next if (!$testreport->{failed});
-            print $html "<div class='pattern'>";
-
-            my $has_newmode;
-            my ($range_symbol, $range_count) = ("", 0);
-            my ($range_start, $range_end, $range_title);
-            foreach my $build (@sortedbuilds)
-            {
-                my ($symbol, $class, $title);
-                my ($tag, $attrs) = ("span", "");
-                my $status = $testreport->{status}->{$build->{name}};
-
-                if (!defined $status)
-                {
-                    if (!$build->{hasreport}->{$reportdir})
-                    {
-                        $symbol = "_";
-                        $class = "W";
-                        $title = "WineTest was not run";
-                    }
-                    elsif ($build->{hastest}->{$testname})
-                    {
-                        $symbol = ".";
-                        $class = "S";
-                        $title = "success";
-                    }
-                    else
-                    {
-                        $symbol = " ";
-                        $class = "A";
-                        $title = "no such test in this build";
-                    }
-                }
-                else
-                {
-                    ($symbol, $class, $title, my $link, $attrs) = get_status_html($status, $test->{colors});
-                    if ($link eq "t")
-                    {
-                        $tag = "a";
-                        $attrs .= sprintf " href='%s/%s/%s.html'",
-                                  $build->{name}, $reportdir, $testname;
-                    }
-                    elsif ($link)
-                    {
-                        $tag = "a";
-                        my $dll = $testname;
-                        $dll =~ s/:.*//;
-                        $attrs .= sprintf " href='%s/%s/%s.html#%s'",
-                                  $build->{name}, $reportdir, $link, $dll;
-                    }
-                    if ($test->{newmodes}->{$status})
-                    {
-                        $symbol = "<b><i>$symbol</i></b>";
-                        $has_newmode = 1;
-                    }
-                }
-
-                if ($range_symbol eq $symbol)
-                {
-                    $range_end = $build->{date};
-                    $range_count++;
-                }
-                else
-                {
-                    # Close the previous range of patterns
-                    if ($range_count)
-                    {
-                        printf $html " title='%s : %s'>%s</span>",
-                                     date_range($range_start, $range_end),
-                                     $range_title, $range_symbol x $range_count;
-                        $range_symbol = $range_end = "";
-                        $range_count = 0;
-                    }
-
-                    # Start a new pattern range
-                    $class = " class='pat$class'" if ($class);
-                    print $html "<$tag$class$attrs";
-                    if ($tag eq "a")
-                    {
-                        printf $html " title='%s : %s'>%s</a>",
-                               short_date($build->{date}), $title, $symbol;
-                    }
-                    else
-                    {
-                        $range_symbol = $symbol;
-                        $range_start = $build->{date};
-                        $range_title = $title;
-                        $range_count = 1;
-                    }
-                }
-            }
-            if ($range_count)
-            {
-                printf $html " title='%s : %s'>%s</span>",
-                             date_range($range_start, $range_end),
-                             $range_title, $range_symbol x $range_count;
-            }
-            my $label = $reportdir;
-            $label = "<b>$label</b>" if ($has_newmode);
-            print $html "</div> $label\n";
-        }
+        write_pattern($html, $test, $pagereports);
         print $html "</div></div>\n";
     }
 }
-- 
2.20.1



More information about the wine-devel mailing list