diff options
Diffstat (limited to 'deps/v8/test/mjsunit/testcfg.py')
-rw-r--r-- | deps/v8/test/mjsunit/testcfg.py | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/deps/v8/test/mjsunit/testcfg.py b/deps/v8/test/mjsunit/testcfg.py index ff84bc3be5..bc9d69ff33 100644 --- a/deps/v8/test/mjsunit/testcfg.py +++ b/deps/v8/test/mjsunit/testcfg.py @@ -31,7 +31,6 @@ import re from testrunner.local import testsuite from testrunner.objects import testcase -FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") FILES_PATTERN = re.compile(r"//\s+Files:(.*)") ENV_PATTERN = re.compile(r"//\s+Environment Variables:(.*)") SELF_SCRIPT_PATTERN = re.compile(r"//\s+Env: TEST_FILE_NAME") @@ -39,11 +38,7 @@ MODULE_PATTERN = re.compile(r"^// MODULE$", flags=re.MULTILINE) NO_HARNESS_PATTERN = re.compile(r"^// NO HARNESS$", flags=re.MULTILINE) -class MjsunitTestSuite(testsuite.TestSuite): - - def __init__(self, name, root): - super(MjsunitTestSuite, self).__init__(name, root) - +class TestSuite(testsuite.TestSuite): def ListTests(self, context): tests = [] for dirname, dirs, files in os.walk(self.root, followlinks=True): @@ -56,19 +51,19 @@ class MjsunitTestSuite(testsuite.TestSuite): fullpath = os.path.join(dirname, filename) relpath = fullpath[len(self.root) + 1 : -3] testname = relpath.replace(os.path.sep, "/") - test = testcase.TestCase(self, testname) + test = self._create_test(testname) tests.append(test) return tests - def GetParametersForTestCase(self, testcase, context): - source = self.GetSourceForTest(testcase) + def _test_class(self): + return TestCase - flags = testcase.flags + context.mode_flags - env = self._get_env(source) - flags_match = re.findall(FLAGS_PATTERN, source) - for match in flags_match: - flags += match.strip().split() +class TestCase(testcase.TestCase): + def __init__(self, *args, **kwargs): + super(TestCase, self).__init__(*args, **kwargs) + + source = self.get_source() files_list = [] # List of file names to append to command arguments. files_match = FILES_PATTERN.search(source); @@ -79,28 +74,32 @@ class MjsunitTestSuite(testsuite.TestSuite): files_match = FILES_PATTERN.search(source, files_match.end()) else: break - files = [ os.path.normpath(os.path.join(self.root, '..', '..', f)) + files = [ os.path.normpath(os.path.join(self.suite.root, '..', '..', f)) for f in files_list ] - testfilename = os.path.join(self.root, testcase.path + self.suffix()) + testfilename = os.path.join(self.suite.root, + self.path + self._get_suffix()) if SELF_SCRIPT_PATTERN.search(source): files = ( ["-e", "TEST_FILE_NAME=\"%s\"" % testfilename.replace("\\", "\\\\")] + files) - if not context.no_harness and not NO_HARNESS_PATTERN.search(source): - files.append(os.path.join(self.root, "mjsunit.js")) + if NO_HARNESS_PATTERN.search(source): + mjsunit_files = [] + else: + mjsunit_files = [os.path.join(self.suite.root, "mjsunit.js")] + files_suffix = [] if MODULE_PATTERN.search(source): - files.append("--module") - files.append(testfilename) - - all_files = list(files) - if context.isolates: - all_files += ["--isolate"] + files + files_suffix.append("--module") + files_suffix.append(testfilename) - return all_files, flags, env + self._source_files = files + self._source_flags = self._parse_source_flags(source) + self._mjsunit_files = mjsunit_files + self._files_suffix = files_suffix + self._env = self._parse_source_env(source) - def _get_env(self, source): + def _parse_source_env(self, source): env_match = ENV_PATTERN.search(source) env = {} if env_match: @@ -109,11 +108,25 @@ class MjsunitTestSuite(testsuite.TestSuite): env[var] = value return env - def GetSourceForTest(self, testcase): - filename = os.path.join(self.root, testcase.path + self.suffix()) - with open(filename) as f: - return f.read() + def _get_source_flags(self): + return self._source_flags + + def _get_files_params(self, ctx): + files = list(self._source_files) + if not ctx.no_harness: + files += self._mjsunit_files + files += self._files_suffix + if ctx.isolates: + files += ['--isolate'] + files + + return files + + def _get_cmd_env(self): + return self._env + + def _get_source_path(self): + return os.path.join(self.suite.root, self.path + self._get_suffix()) def GetSuite(name, root): - return MjsunitTestSuite(name, root) + return TestSuite(name, root) |