1 # Copyright 2016 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 import os 6 7 from testrunner.local import testsuite 8 from testrunner.objects import testcase 9 10 11 class FuzzerVariantGenerator(testsuite.VariantGenerator): 12 # Only run the fuzzer with standard variant. 13 def FilterVariantsByTest(self, testcase): 14 return self.standard_variant 15 16 def GetFlagSets(self, testcase, variant): 17 return testsuite.FAST_VARIANT_FLAGS[variant] 18 19 20 class FuzzerTestSuite(testsuite.TestSuite): 21 SUB_TESTS = ( 'json', 'parser', 'regexp', 'wasm', 'wasm_asmjs', ) 22 23 def __init__(self, name, root): 24 super(FuzzerTestSuite, self).__init__(name, root) 25 26 def ListTests(self, context): 27 tests = [] 28 for subtest in FuzzerTestSuite.SUB_TESTS: 29 shell = 'v8_simple_%s_fuzzer' % subtest 30 for fname in os.listdir(os.path.join(self.root, subtest)): 31 if not os.path.isfile(os.path.join(self.root, subtest, fname)): 32 continue 33 test = testcase.TestCase(self, '%s/%s' % (subtest, fname), 34 override_shell=shell) 35 tests.append(test) 36 tests.sort() 37 return tests 38 39 def GetFlagsForTestCase(self, testcase, context): 40 suite, name = testcase.path.split('/') 41 return [os.path.join(self.root, suite, name)] 42 43 def _VariantGeneratorFactory(self): 44 return FuzzerVariantGenerator 45 46 47 def GetSuite(name, root): 48 return FuzzerTestSuite(name, root) 49