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 @tests = (); 41 my @categories = (); 42 my %uniqueCategories = (); 43 44 my @suites = ("sunspider-0.9", "sunspider-0.9.1"); 45 46 foreach my $suite (@suites) { 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