Index: chrome/test/data/third_party/kraken/make-hosted.py |
diff --git a/chrome/test/data/third_party/kraken/make-hosted.py b/chrome/test/data/third_party/kraken/make-hosted.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..370fbce0a5fe95ccc6843e375f884bb8fe64b001 |
--- /dev/null |
+++ b/chrome/test/data/third_party/kraken/make-hosted.py |
@@ -0,0 +1,106 @@ |
+#!/usr/bin/python |
+ |
+# Copyright (C) 2007 Apple Inc. All rights reserved. |
+# Copyright (C) 2010 Mozilla Foundation |
+# |
+# 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. |
+ |
+from __future__ import with_statement |
+import os |
+import shutil |
+ |
+suites = ["kraken-1.1", "kraken-1.0", "sunspider-0.9.1"] |
+ |
+def readTemplate(path): |
+ with open(path, 'r') as f: |
+ return f.read() |
+ |
+template = readTemplate("resources/TEMPLATE.html") |
+driverTemplate = readTemplate("resources/driver-TEMPLATE.html") |
+resultsTemplate = readTemplate("resources/results-TEMPLATE.html") |
+ |
+def testListForSuite(suite): |
+ tests = [] |
+ with open("./tests/%s/LIST" % suite, "r") as f: |
+ for line in f.readlines(): |
+ tests.append(line.strip()) |
+ return tests |
+ |
+def categoriesFromTests(tests): |
+ categories = set() |
+ for test in tests: |
+ categories.add(test[:test.find("-")]) |
+ categories = list(categories) |
+ categories.sort() |
+ return categories |
+ |
+def escapeTestContent(test,suite): |
+ with open("tests/" + suite + "/" + test + ".js") as f: |
+ script = f.read() |
+ output = template |
+ output = output.replace("@NAME@", test) |
+ output = output.replace("@SCRIPT@", script) |
+ dataPath = "tests/" + suite + "/" + test + "-data.js" |
+ if (os.path.exists(dataPath)): |
+ with open(dataPath) as f: |
+ datascript = f.read() |
+ output = output.replace("@DATASCRIPT@", datascript) |
+ datascript = None |
+ output = output.replace("\\", "\\\\") |
+ output = output.replace('"', '\\"') |
+ output = output.replace("\n", "\\n\\\n") |
+ return output |
+ |
+def testContentsFromTests(suite, tests): |
+ testContents = []; |
+ for test in tests: |
+ testContents.append(escapeTestContent(test, suite)) |
+ return testContents |
+ |
+def writeTemplate(suite, template, fileName): |
+ output = template.replace("@SUITE@", suite) |
+ with open("hosted/" + suite + "/" + fileName, "w") as f: |
+ f.write(output) |
+ |
+for suite in suites: |
+ suiteDir = os.path.join("hosted", suite) |
+ if not os.path.exists(suiteDir): |
+ os.mkdir(suiteDir) |
+ tests = testListForSuite(suite) |
+ categories = categoriesFromTests(tests) |
+ testContents = testContentsFromTests(suite, tests) |
+ writeTemplate(suite, driverTemplate, "driver.html") |
+ writeTemplate(suite, resultsTemplate, "results.html") |
+ |
+ prefix = "var tests = [ " + ", ".join(['"%s"' % s for s in tests]) + " ];\n" |
+ prefix += "var categories = [ " + ", ".join(['"%s"' % s for s in categories]) + " ];\n" |
+ with open("hosted/" + suite + "/test-prefix.js", "w") as f: |
+ f.write(prefix) |
+ |
+ contents = "var testContents = [ " + ", ".join(['"%s"' % s for s in testContents]) + " ];\n" |
+ with open("hosted/" + suite + "/test-contents.js", "w") as f: |
+ f.write(contents) |
+ |
+shutil.copyfile("resources/analyze-results.js", "hosted/analyze-results.js") |
+shutil.copyfile("resources/compare-results.js", "hosted/compare-results.js") |
+ |
+print("You're awesome!") |