SunSpider/make-hosted
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 #!/usr/bin/perl -w
       
     2 
       
     3 # Copyright (C) 2007 Apple Inc.  All rights reserved.
       
     4 #
       
     5 # Redistribution and use in source and binary forms, with or without
       
     6 # modification, are permitted provided that the following conditions
       
     7 # are met:
       
     8 # 1. Redistributions of source code must retain the above copyright
       
     9 #    notice, this list of conditions and the following disclaimer.
       
    10 # 2. Redistributions in binary form must reproduce the above copyright
       
    11 #    notice, this list of conditions and the following disclaimer in the
       
    12 #    documentation and/or other materials provided with the distribution.
       
    13 #
       
    14 # THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
       
    15 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    17 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
       
    18 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    19 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    20 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    21 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
       
    22 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       
    24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
       
    25 
       
    26 use strict;
       
    27 
       
    28 open TEMPLATE, "<resources/TEMPLATE.html";
       
    29 my $template = do { local $/; <TEMPLATE> };
       
    30 close TEMPLATE;
       
    31 
       
    32 open DRIVER_TEMPLATE, "<resources/driver-TEMPLATE.html";
       
    33 my $driverTemplate = do { local $/; <DRIVER_TEMPLATE> };
       
    34 close DRIVER_TEMPLATE;
       
    35 
       
    36 open RESULTS_TEMPLATE, "<resources/results-TEMPLATE.html";
       
    37 my $resultsTemplate = do { local $/; <RESULTS_TEMPLATE> };
       
    38 close RESULTS_TEMPLATE;
       
    39 
       
    40 my @suites = ("sunspider-0.9", "sunspider-0.9.1");
       
    41 
       
    42 foreach my $suite (@suites) {
       
    43 
       
    44     my @tests = ();
       
    45     my @categories = ();
       
    46     my %uniqueCategories = ();
       
    47 
       
    48     mkdir "hosted/${suite}";
       
    49 
       
    50     open TESTLIST, "<./tests/${suite}/LIST";
       
    51     while (<TESTLIST>) {
       
    52 	chomp;
       
    53 	next unless $_;
       
    54 	push @tests, $_;
       
    55 	my $category = $_;
       
    56 	$category =~ s/-.*//;
       
    57 	if (!$uniqueCategories{$category}) {
       
    58 	    push @categories, $category;
       
    59 	    $uniqueCategories{$category} = $category;
       
    60 	}
       
    61     }
       
    62     close TESTLIST;
       
    63 
       
    64     my @testContents = ();
       
    65     for my $test (@tests) {
       
    66 	my $name = "${test}";
       
    67 
       
    68 	open SCRIPT, "<tests/${suite}/${test}.js";
       
    69 	my $script = do { local $/; <SCRIPT> };
       
    70 	close SCRIPT;
       
    71 
       
    72 	my $output = $template;
       
    73 	$output =~ s/\@NAME\@/${name}/g;
       
    74 	$output =~ s/\@SCRIPT\@/${script}/g;
       
    75 	$output =~ s/\\/\\\\/g;
       
    76 	$output =~ s/"/\\"/g;
       
    77 	$output =~ s/\n/\\n\\\n/g;
       
    78 	$output = $output;
       
    79 	push @testContents, $output;
       
    80     }
       
    81 
       
    82     my $output = $driverTemplate;
       
    83     $output =~ s/\@SUITE\@/${suite}/g;
       
    84 
       
    85     open OUTPUT, ">hosted/${suite}/driver.html";
       
    86     print OUTPUT $output;
       
    87     close OUTPUT;
       
    88 
       
    89     $output = $resultsTemplate;
       
    90     $output =~ s/\@SUITE\@/${suite}/g;
       
    91 
       
    92     open OUTPUT, ">hosted/${suite}/results.html";
       
    93     print OUTPUT $output;
       
    94     close OUTPUT;
       
    95 
       
    96     my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n";
       
    97     $prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n";
       
    98 
       
    99     open PREFIX, ">hosted/${suite}/sunspider-test-prefix.js";
       
   100     print PREFIX $prefix;
       
   101     close PREFIX;
       
   102 
       
   103     my $contents = "var testContents = [ " . join(", ", map { '"' . $_ . '"' } @testContents) . " ];\n";
       
   104 
       
   105     open CONTENTS, ">hosted/${suite}/sunspider-test-contents.js";
       
   106     print CONTENTS $contents;
       
   107     close CONTENTS;    
       
   108 }
       
   109 
       
   110 system("cp resources/sunspider-analyze-results.js hosted");
       
   111 system("cp resources/sunspider-compare-results.js hosted");
       
   112 print "hosted/sunspider.html is ready to use.\n";