tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

reftest-to-html.pl (4115B)


      1 #!/usr/bin/perl
      2 
      3 # This Source Code Form is subject to the terms of the Mozilla Public
      4 # License, v. 2.0. If a copy of the MPL was not distributed with this
      5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      6 
      7 print <<EOD
      8 <html>
      9 <head>
     10 <title>reftest output</title>
     11 <style type="text/css">
     12 /* must be in this order */
     13 .PASS { background-color: green; }
     14 .FAIL { background-color: red; }
     15 .XFAIL { background-color: #999300; }
     16 .WEIRDPASS { background-color: #00FFED; }
     17 .PASSRANDOM { background-color: #598930; }
     18 .FAILRANDOM, td.XFAILRANDOM { background-color: #99402A; }
     19 
     20 .FAILIMAGES { }
     21 img { margin: 5px; width: 80px; height: 100px; }
     22 img.testresult { border: 2px solid red; }
     23 img.testref { border: 2px solid green; }
     24 a { color: inherit; }
     25 .always { display: inline ! important; }
     26 </style>
     27 </head>
     28 <body>
     29 <p>
     30 <span class="PASS always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[0].style; if (s.display == 'none') s.display = null; else s.display = 'none';">PASS</span>&nbsp;
     31 <span class="FAIL always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[1].style; if (s.display == 'none') s.display = null; else s.display = 'none';">UNEXPECTED FAIL</span>&nbsp;
     32 <span class="XFAIL always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[2].style; if (s.display == 'none') s.display = null; else s.display = 'none';">KNOWN FAIL</span>&nbsp;
     33 <span class="WEIRDPASS always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[3].style; if (s.display == 'none') s.display = null; else s.display = 'none';">UNEXPECTED PASS</span>&nbsp;
     34 <span class="PASSRANDOM always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[4].style; if (s.display == 'none') s.display = null; else s.display = 'none';">PASS (Random)</span>&nbsp;
     35 <span class="FAILRANDOM always"><input type="checkbox" checked="true" onclick="var s = document.styleSheets[0].cssRules[5].style; if (s.display == 'none') s.display = null; else s.display = 'none';">FAIL (Random)</span>&nbsp;
     36 </p>
     37 <table>
     38 EOD
     39 ;
     40 
     41 sub readcleanline {
     42  my $l = <>;
     43  chomp $l;
     44  chop $l if ($l =~ /\r$/);
     45  return $l;
     46 }
     47 
     48 sub do_html {
     49  my ($l) = @_;
     50 
     51  $l =~ s,(file:[^ ]*),<a href="\1">\1</a>,g;
     52  $l =~ s,(data:[^ ]*),<a href="\1">\1</a>,g;
     53 
     54  return $l;
     55 }
     56 
     57 $l = 0;
     58 
     59 while (<>) {
     60  $l++;
     61  next unless /^REFTEST/;
     62 
     63  chomp;
     64  chop if /\r$/;
     65 
     66  s/^REFTEST *//;
     67 
     68  my $randomresult = 0;
     69  if (/EXPECTED RANDOM/) {
     70    s/\(EXPECTED RANDOM\)//;
     71    $randomresult = 1;
     72  }
     73 
     74  if (/^TEST-PASS \| (.*)$/) {
     75    my $class = $randomresult ? "PASSRANDOM" : "PASS";
     76    print '<tr><td class="' . $class . '">' . do_html($1) . "</td></tr>\n";
     77  } elsif (/^TEST-UNEXPECTED-(....) \| (.*)$/) {
     78    if ($randomresult) {
     79      die "Error on line $l: UNEXPECTED with test marked random?!";
     80    }
     81    my $class = ($1 eq "PASS") ? "WEIRDPASS" : "FAIL";
     82    print '<tr><td class="' . $class . '">' . do_html($2) . "</td></tr>\n";
     83 
     84    # UNEXPECTED results can be followed by one or two images
     85    $testline = &readcleanline;
     86 
     87    print '<tr><td class="FAILIMAGES">';
     88 
     89    if ($testline =~ /REFTEST   IMAGE: (data:.*)$/) {
     90      print '<a href="' . $1 . '"><img class="testresult" src="' . $1 . '"></a>';
     91    } elsif ($testline =~ /REFTEST   IMAGE 1 \(TEST\): (data:.*)$/) {
     92      $refline = &readcleanline;
     93      print '<a href="' . $1 . '"><img class="testresult" src="' . $1 . '"></a>';
     94      {
     95        die "Error on line $l" unless $refline =~ /REFTEST   IMAGE 2 \(REFERENCE\): (data:.*)$/;
     96        print '<a href="' . $1 . '"><img class="testref" src="' . $1 . '"></a>';
     97      }
     98 
     99    } else {
    100      die "Error on line $l";
    101    }
    102 
    103    print "</td></tr>\n";
    104  } elsif (/^TEST-KNOWN-FAIL \| (.*$)/) {
    105    my $class = $randomresult ? "XFAILRANDOM" : "XFAIL";
    106    print '<tr><td class="' . $class . '">' . do_html($1) . "</td></tr>\n";
    107  } else {
    108    print STDERR "Unknown Line: " . $_ . "\n";
    109    print "<tr><td><pre>" . $_ . "</pre></td></tr>\n";
    110  }
    111 }
    112 
    113 print <<EOD
    114 </table>
    115 </body>
    116 </html>
    117 EOD
    118 ;