19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org# Copyright 2008 the V8 project authors. All rights reserved. 29a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# Redistribution and use in source and binary forms, with or without 39a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# modification, are permitted provided that the following conditions are 49a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# met: 59a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# 69a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# * Redistributions of source code must retain the above copyright 79a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# notice, this list of conditions and the following disclaimer. 89a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# * Redistributions in binary form must reproduce the above 99a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# copyright notice, this list of conditions and the following 109a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# disclaimer in the documentation and/or other materials provided 119a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# with the distribution. 129a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# * Neither the name of Google Inc. nor the names of its 139a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# contributors may be used to endorse or promote products derived 149a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# from this software without specific prior written permission. 159a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# 169a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 179a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 189a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 199a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 209a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 219a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 229a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 239a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 249a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 259a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 269a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 279a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com 282ab0c3bc2d6dc2b2f91f02efe38d1a3e5a0e3f4cdanno@chromium.orgimport os 2933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgimport shutil 3033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 3133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgfrom testrunner.local import commands 3233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgfrom testrunner.local import testsuite 3333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgfrom testrunner.local import utils 3433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgfrom testrunner.objects import testcase 3533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 3633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 3733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgclass CcTestSuite(testsuite.TestSuite): 3833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 3933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org def __init__(self, name, root): 4033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org super(CcTestSuite, self).__init__(name, root) 417a1bfbe9bc8295770315c55f7ce40822b7951aabmachenbach@chromium.org if utils.IsWindows(): 427a1bfbe9bc8295770315c55f7ce40822b7951aabmachenbach@chromium.org build_dir = "build" 437a1bfbe9bc8295770315c55f7ce40822b7951aabmachenbach@chromium.org else: 447a1bfbe9bc8295770315c55f7ce40822b7951aabmachenbach@chromium.org build_dir = "out" 4589e18f5599cb4cd462cb1ed324addd7388fb4d60rossberg@chromium.org self.serdes_dir = os.path.normpath( 467a1bfbe9bc8295770315c55f7ce40822b7951aabmachenbach@chromium.org os.path.join(root, "..", "..", build_dir, ".serdes")) 4789e18f5599cb4cd462cb1ed324addd7388fb4d60rossberg@chromium.org if os.path.exists(self.serdes_dir): 4833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org shutil.rmtree(self.serdes_dir, True) 4933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org os.makedirs(self.serdes_dir) 5033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 5133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org def ListTests(self, context): 5246a2a51ad190697e0f62c3060ce02a9de5820a07yangguo@chromium.org shell = os.path.abspath(os.path.join(context.shell_dir, self.shell())) 5333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org if utils.IsWindows(): 546bec0093ef661b53a1e338a233d7aafb9536a307mvstanton@chromium.org shell += ".exe" 556bec0093ef661b53a1e338a233d7aafb9536a307mvstanton@chromium.org output = commands.Execute(context.command_prefix + 56068ea0a6ea115c058d1d9798029bd7fa1eaaa955mstarzinger@chromium.org [shell, "--list"] + 57068ea0a6ea115c058d1d9798029bd7fa1eaaa955mstarzinger@chromium.org context.extra_flags) 5833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org if output.exit_code != 0: 5933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org print output.stdout 6033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org print output.stderr 6133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org return [] 6233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org tests = [] 6333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org for test_desc in output.stdout.strip().split(): 64e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if test_desc.find('<') < 0: 65e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org # Native Client output can contain a few non-test arguments 66e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org # before the tests. Skip these. 67e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org continue 6833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org raw_test, dependency = test_desc.split('<') 6933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org if dependency != '': 7033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org dependency = raw_test.split('/')[0] + '/' + dependency 7133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org else: 7233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org dependency = None 7333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org test = testcase.TestCase(self, raw_test, dependency=dependency) 7433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org tests.append(test) 7533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org tests.sort() 7633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org return tests 7733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 7833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org def GetFlagsForTestCase(self, testcase, context): 7933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org testname = testcase.path.split(os.path.sep)[-1] 8089e18f5599cb4cd462cb1ed324addd7388fb4d60rossberg@chromium.org serialization_file = os.path.join(self.serdes_dir, "serdes_" + testname) 8133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org serialization_file += ''.join(testcase.flags).replace('-', '_') 8233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org return (testcase.flags + [testcase.path] + context.mode_flags + 8333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org ["--testing_serialization_file=" + serialization_file]) 8433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 8533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org def shell(self): 8633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org return "cctest" 8733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 8833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 8933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgdef GetSuite(name, root): 9033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org return CcTestSuite(name, root) 91