113 lines
3.6 KiB
Perl
Executable File
113 lines
3.6 KiB
Perl
Executable File
#!/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 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 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", "sunspider-1.0.1", "sunspider-1.0.2");
|
|
|
|
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";
|