1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Copyright 2013 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Redistribution and use in source and binary forms, with or without
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# modification, are permitted provided that the following conditions are
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# met:
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#     * Redistributions of source code must retain the above copyright
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       notice, this list of conditions and the following disclaimer.
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#     * Redistributions in binary form must reproduce the above
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       copyright notice, this list of conditions and the following
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       disclaimer in the documentation and/or other materials provided
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       with the distribution.
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#     * Neither the name of Google Inc. nor the names of its
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       contributors may be used to endorse or promote products derived
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#       from this software without specific prior written permission.
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#
16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport os
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochfrom testrunner.local import testsuite
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochfrom testrunner.objects import testcase
32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass IntlTestSuite(testsuite.TestSuite):
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  def __init__(self, name, root):
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    super(IntlTestSuite, self).__init__(name, root)
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  def ListTests(self, context):
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    tests = []
41b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    for dirname, dirs, files in os.walk(self.root):
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      for dotted in [x for x in dirs if x.startswith('.')]:
43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch        dirs.remove(dotted)
44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      dirs.sort()
45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      files.sort()
46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      for filename in files:
47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch        if (filename.endswith(".js") and filename != "assert.js" and
48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch            filename != "utils.js"):
49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch          testname = os.path.join(dirname[len(self.root) + 1:], filename[:-3])
50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch          test = testcase.TestCase(self, testname)
51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch          tests.append(test)
52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    return tests
53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  def GetFlagsForTestCase(self, testcase, context):
55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    flags = ["--allow-natives-syntax"] + context.mode_flags
56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
57b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    files = []
58b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    files.append(os.path.join(self.root, "assert.js"))
59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    files.append(os.path.join(self.root, "utils.js"))
60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    files.append(os.path.join(self.root, testcase.path + self.suffix()))
61b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    flags += files
63b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    if context.isolates:
64b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      flags.append("--isolate")
65b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      flags += files
66b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
67b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    return testcase.flags + flags
68b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
69b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
70b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochdef GetSuite(name, root):
71b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return IntlTestSuite(name, root)
72