#!/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; use Getopt::Long; use File::Basename; my $showHelp = 0; my $jsShellPath; my $programName = basename($0); my $usage = < \$jsShellPath, 'help' => \$showHelp); if (scalar @ARGV < 2 || !$jsShellPath || $showHelp) { print STDERR $usage; exit 1; } sub readResultsFile($) { my ($filename) = @_; open FILE, "<${filename}"; my $foundStart = 0; my $foundEnd = 0; my $result = ""; while () { if (!$foundStart) { if (/^[[][{]$/) { $foundStart = 1; $result .= $_; } } else { if (/^[}][]]$/) { $foundEnd = 1; chomp; $result .= $_; last; } else { $result .= $_; } } } close FILE; die "Cound not find data in file - needs to be bracketed by [{ and }]." unless ($foundStart && $foundEnd); return $result; } sub dumpToFile($$) { my ($contents, $path) = @_; open FILE, ">$path"; print FILE $contents; close FILE; } my $output = "var output1 = " . readResultsFile($ARGV[0]) . ";\n"; $output .= "var output2 = " . readResultsFile($ARGV[1]) . ";\n"; dumpToFile($output, "tmp/sunspider-comparison-data.js"); system("$jsShellPath", "-f", "tmp/sunspider-test-prefix.js", "-f", "tmp/sunspider-comparison-data.js", "-f", "resources/sunspider-compare-results.js");