Index: test/simdjs/testcfg.py |
diff --git a/test/simdjs/testcfg.py b/test/simdjs/testcfg.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c0390afd65ea2f38da8f4bc1191863bcd38bd91e |
--- /dev/null |
+++ b/test/simdjs/testcfg.py |
@@ -0,0 +1,101 @@ |
+# Copyright 2014 the V8 project authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+ |
+import hashlib |
+import os |
+import shutil |
+import sys |
+import tarfile |
+import imp |
+ |
+from testrunner.local import testsuite |
+from testrunner.local import utils |
+from testrunner.objects import testcase |
+ |
+SIMDJS_ARCHIVE_REVISION = "07e2713e0c9ea19feb0732d5bd84770c87310d79" |
+SIMDJS_ARCHIVE_MD5 = "cf6bddf99f18800b68e782054268ee3c" |
+SIMDJS_URL = ( |
+ "https://github.com/johnmccutchan/ecmascript_simd/archive/%s.tar.gz") |
+ |
+SIMDJS_SUITE_PATH = ["data", "src"] |
+ |
+ |
+class SimdJsTestSuite(testsuite.TestSuite): |
+ |
+ def __init__(self, name, root): |
+ super(SimdJsTestSuite, self).__init__(name, root) |
+ self.testroot = os.path.join(self.root, *SIMDJS_SUITE_PATH) |
+ self.ParseTestRecord = None |
+ |
+ def ListTests(self, context): |
+ tests = [ |
+ testcase.TestCase(self, 'shell_test_runner'), |
+ ] |
+ for filename in os.listdir(os.path.join(self.testroot, 'benchmarks')): |
+ if (not filename.endswith('.js') or |
+ filename in ['run.js', 'run_browser.js', 'base.js']): |
+ continue |
+ name = filename.rsplit('.')[0] |
+ tests.append( |
+ testcase.TestCase(self, 'benchmarks/' + name)) |
+ return tests |
+ |
+ def GetFlagsForTestCase(self, testcase, context): |
+ return (testcase.flags + context.mode_flags + |
+ [os.path.join(self.root, "harness-adapt.js"), |
+ "--harmony", |
+ os.path.join(self.testroot, testcase.path + ".js"), |
+ os.path.join(self.root, "harness-finish.js")]) |
+ |
+ def GetSourceForTest(self, testcase): |
+ filename = os.path.join(self.testroot, testcase.path + ".js") |
+ with open(filename) as f: |
+ return f.read() |
+ |
+ def IsNegativeTest(self, testcase): |
+ return False |
+ |
+ def IsFailureOutput(self, output, testpath): |
+ if output.exit_code != 0: |
+ return True |
+ return "FAILED!" in output.stdout |
+ |
+ def DownloadData(self): |
+ revision = SIMDJS_ARCHIVE_REVISION |
+ archive_url = SIMDJS_URL % revision |
+ archive_name = os.path.join( |
+ self.root, "ecmascript_simd-%s.tar.gz" % revision) |
+ directory_name = os.path.join(self.root, "data") |
+ directory_old_name = os.path.join(self.root, "data.old") |
+ if not os.path.exists(archive_name): |
+ print "Downloading test data from %s ..." % archive_url |
+ utils.URLRetrieve(archive_url, archive_name) |
+ if os.path.exists(directory_name): |
+ if os.path.exists(directory_old_name): |
+ shutil.rmtree(directory_old_name) |
+ os.rename(directory_name, directory_old_name) |
+ if not os.path.exists(directory_name): |
+ print "Extracting ecmascript_simd-%s.tar.gz ..." % revision |
+ md5 = hashlib.md5() |
+ with open(archive_name, "rb") as f: |
+ for chunk in iter(lambda: f.read(8192), ""): |
+ md5.update(chunk) |
+ print "MD5 hash is %s" % md5.hexdigest() |
+ if md5.hexdigest() != SIMDJS_ARCHIVE_MD5: |
+ os.remove(archive_name) |
+ print "MD5 expected %s" % SIMDJS_ARCHIVE_MD5 |
+ raise Exception("MD5 hash mismatch of test data file") |
+ archive = tarfile.open(archive_name, "r:gz") |
+ if sys.platform in ("win32", "cygwin"): |
+ # Magic incantation to allow longer path names on Windows. |
+ archive.extractall(u"\\\\?\\%s" % self.root) |
+ else: |
+ archive.extractall(self.root) |
+ os.rename(os.path.join(self.root, "ecmascript_simd-%s" % revision), |
+ directory_name) |
+ |
+ |
+def GetSuite(name, root): |
+ return SimdJsTestSuite(name, root) |