| #!/usr/bin/perl -w |
| |
| # Copyright (C) 2007 Apple Inc. All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # |
| # THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
| # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| use strict; |
| |
| open TEMPLATE, "<resources/TEMPLATE.html"; |
| my $template = do { local $/; <TEMPLATE> }; |
| close TEMPLATE; |
| |
| open DRIVER_TEMPLATE, "<resources/driver-TEMPLATE.html"; |
| my $driverTemplate = do { local $/; <DRIVER_TEMPLATE> }; |
| close DRIVER_TEMPLATE; |
| |
| open RESULTS_TEMPLATE, "<resources/results-TEMPLATE.html"; |
| my $resultsTemplate = do { local $/; <RESULTS_TEMPLATE> }; |
| close RESULTS_TEMPLATE; |
| |
| my @suites = ("sunspider-0.9", "sunspider-0.9.1", "sunspider-1.0"); |
| |
| foreach my $suite (@suites) { |
| |
| my @tests = (); |
| my @categories = (); |
| my %uniqueCategories = (); |
| |
| mkdir "hosted/${suite}"; |
| |
| open TESTLIST, "<./tests/${suite}/LIST"; |
| while (<TESTLIST>) { |
| chomp; |
| next unless $_; |
| push @tests, $_; |
| my $category = $_; |
| $category =~ s/-.*//; |
| if (!$uniqueCategories{$category}) { |
| push @categories, $category; |
| $uniqueCategories{$category} = $category; |
| } |
| } |
| close TESTLIST; |
| |
| my @testContents = (); |
| for my $test (@tests) { |
| my $name = "${test}"; |
| |
| open SCRIPT, "<tests/${suite}/${test}.js"; |
| my $script = do { local $/; <SCRIPT> }; |
| close SCRIPT; |
| |
| my $output = $template; |
| $output =~ s/\@NAME\@/${name}/g; |
| $output =~ s/\@SCRIPT\@/${script}/g; |
| $output =~ s/\\/\\\\/g; |
| $output =~ s/"/\\"/g; |
| $output =~ s/\n/\\n\\\n/g; |
| $output = $output; |
| push @testContents, $output; |
| } |
| |
| my $output = $driverTemplate; |
| $output =~ s/\@SUITE\@/${suite}/g; |
| |
| open OUTPUT, ">hosted/${suite}/driver.html"; |
| print OUTPUT $output; |
| close OUTPUT; |
| |
| $output = $resultsTemplate; |
| $output =~ s/\@SUITE\@/${suite}/g; |
| |
| open OUTPUT, ">hosted/${suite}/results.html"; |
| print OUTPUT $output; |
| close OUTPUT; |
| |
| my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n"; |
| $prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n"; |
| |
| open PREFIX, ">hosted/${suite}/sunspider-test-prefix.js"; |
| print PREFIX $prefix; |
| close PREFIX; |
| |
| my $contents = "var testContents = [ " . join(", ", map { '"' . $_ . '"' } @testContents) . " ];\n"; |
| |
| open CONTENTS, ">hosted/${suite}/sunspider-test-contents.js"; |
| print CONTENTS $contents; |
| close CONTENTS; |
| } |
| |
| system("cp resources/sunspider-analyze-results.js hosted"); |
| system("cp resources/sunspider-compare-results.js hosted"); |
| print "hosted/sunspider.html is ready to use.\n"; |