3 # Copyright (C) 2007 Apple Inc. All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
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.
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.
28 open TEMPLATE
, "<resources/TEMPLATE.html";
29 my $template = do { local $/; <TEMPLATE
> };
32 open DRIVER_TEMPLATE
, "<resources/driver-TEMPLATE.html";
33 my $driverTemplate = do { local $/; <DRIVER_TEMPLATE
> };
34 close DRIVER_TEMPLATE
;
36 open RESULTS_TEMPLATE
, "<resources/results-TEMPLATE.html";
37 my $resultsTemplate = do { local $/; <RESULTS_TEMPLATE
> };
38 close RESULTS_TEMPLATE
;
40 my @suites = ("sunspider-0.9", "sunspider-0.9.1", "sunspider-1.0");
42 foreach my $suite (@suites) {
46 my %uniqueCategories = ();
48 mkdir "hosted/${suite}";
50 open TESTLIST
, "<./tests/${suite}/LIST";
57 if (!$uniqueCategories{$category}) {
58 push @categories, $category;
59 $uniqueCategories{$category} = $category;
64 my @testContents = ();
65 for my $test (@tests) {
68 open SCRIPT
, "<tests/${suite}/${test}.js";
69 my $script = do { local $/; <SCRIPT
> };
72 my $output = $template;
73 $output =~ s/\@NAME\@/${name}/g;
74 $output =~ s/\@SCRIPT\@/${script}/g;
75 $output =~ s/\\/\\\\/g;
77 $output =~ s/\n/\\n\\\n/g;
79 push @testContents, $output;
82 my $output = $driverTemplate;
83 $output =~ s/\@SUITE\@/${suite}/g;
85 open OUTPUT
, ">hosted/${suite}/driver.html";
89 $output = $resultsTemplate;
90 $output =~ s/\@SUITE\@/${suite}/g;
92 open OUTPUT
, ">hosted/${suite}/results.html";
96 my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n";
97 $prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n";
99 open PREFIX
, ">hosted/${suite}/sunspider-test-prefix.js";
100 print PREFIX
$prefix;
103 my $contents = "var testContents = [ " . join(", ", map { '"' . $_ . '"' } @testContents) . " ];\n";
105 open CONTENTS
, ">hosted/${suite}/sunspider-test-contents.js";
106 print CONTENTS
$contents;
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";