| 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)
|
|
|