1# Copyright 2014 the V8 project authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5 6import os 7import shutil 8import sys 9 10from testrunner.local import testsuite 11from testrunner.objects import testcase 12 13SIMDJS_SUITE_PATH = ["data", "src"] 14 15 16class SimdJsTestSuite(testsuite.TestSuite): 17 18 def __init__(self, name, root): 19 super(SimdJsTestSuite, self).__init__(name, root) 20 self.testroot = os.path.join(self.root, *SIMDJS_SUITE_PATH) 21 self.ParseTestRecord = None 22 23 def ListTests(self, context): 24 tests = [ 25 testcase.TestCase(self, 'shell_test_runner'), 26 ] 27 for filename in os.listdir(os.path.join(self.testroot, 'benchmarks')): 28 if (not filename.endswith('.js') or 29 filename in ['run.js', 'run_browser.js', 'base.js']): 30 continue 31 name = filename.rsplit('.')[0] 32 tests.append( 33 testcase.TestCase(self, 'benchmarks/' + name)) 34 return tests 35 36 def GetFlagsForTestCase(self, testcase, context): 37 return (testcase.flags + context.mode_flags + 38 [os.path.join(self.root, "harness-adapt.js"), 39 "--harmony", "--harmony-simd", 40 os.path.join(self.testroot, testcase.path + ".js"), 41 os.path.join(self.root, "harness-finish.js")]) 42 43 def GetSourceForTest(self, testcase): 44 filename = os.path.join(self.testroot, testcase.path + ".js") 45 with open(filename) as f: 46 return f.read() 47 48 def IsNegativeTest(self, testcase): 49 return False 50 51 def IsFailureOutput(self, output, testpath): 52 if output.exit_code != 0: 53 return True 54 return "FAILED!" in output.stdout 55 56 def DownloadData(self): 57 print "SimdJs download is deprecated. It's part of DEPS." 58 59 # Clean up old directories and archive files. 60 directory_old_name = os.path.join(self.root, "data.old") 61 if os.path.exists(directory_old_name): 62 shutil.rmtree(directory_old_name) 63 64 archive_files = [f for f in os.listdir(self.root) 65 if f.startswith("ecmascript_simd-")] 66 if len(archive_files) > 0: 67 print "Clobber outdated test archives ..." 68 for f in archive_files: 69 os.remove(os.path.join(self.root, f)) 70 71 72def GetSuite(name, root): 73 return SimdJsTestSuite(name, root) 74