Home | History | Annotate | Download | only in SunSpider
      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", "sunspider-1.0");
     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";
    113