# 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 os from testrunner.local import commands from testrunner.local import testsuite from testrunner.local import utils from testrunner.objects import testcase class FuzzNativesTestSuite(testsuite.TestSuite): def __init__(self, name, root): super(FuzzNativesTestSuite, self).__init__(name, root) def ListTests(self, context): shell = os.path.abspath(os.path.join(context.shell_dir, self.shell())) if utils.IsWindows(): shell += ".exe" output = commands.Execute( context.command_prefix + [shell, "--allow-natives-syntax", "-e", "try { var natives = %ListNatives();" " for (var n in natives) { print(natives[n]); }" "} catch(e) {}"] + context.extra_flags) if output.exit_code != 0: print output.stdout print output.stderr assert False, "Failed to get natives list." tests = [] for line in output.stdout.strip().split(): try: (name, argc) = line.split(",") flags = ["--allow-natives-syntax", "-e", "var NAME = '%s', ARGC = %s;" % (name, argc)] test = testcase.TestCase(self, name, flags) tests.append(test) except: # Work-around: If parsing didn't work, it might have been due to output # caused by other d8 flags. pass return tests def GetFlagsForTestCase(self, testcase, context): name = testcase.path basefile = os.path.join(self.root, "base.js") return testcase.flags + [basefile] + context.mode_flags def GetSuite(name, root): return FuzzNativesTestSuite(name, root)