|  | # Copyright 2017 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 testsuite | 
|  | from testrunner.objects import testcase | 
|  |  | 
|  | proposal_flags = [{ | 
|  | 'name': 'reference-types', | 
|  | 'flags': ['--experimental-wasm-reftypes', | 
|  | '--wasm-staging'] | 
|  | }, | 
|  | { | 
|  | 'name': 'bulk-memory-operations', | 
|  | 'flags': ['--experimental-wasm-bulk-memory', | 
|  | '--wasm-staging'] | 
|  | }, | 
|  | { | 
|  | 'name': 'js-types', | 
|  | 'flags': ['--experimental-wasm-type-reflection', | 
|  | '--wasm-staging'] | 
|  | }, | 
|  | { | 
|  | 'name': 'tail-call', | 
|  | 'flags': ['--experimental-wasm-return-call', | 
|  | '--wasm-staging'] | 
|  | }, | 
|  | { | 
|  | 'name': 'simd', | 
|  | 'flags': ['--experimental-wasm-simd', | 
|  | '--wasm-staging'] | 
|  | }, | 
|  | ] | 
|  |  | 
|  | class TestLoader(testsuite.JSTestLoader): | 
|  | pass | 
|  |  | 
|  | class TestSuite(testsuite.TestSuite): | 
|  | def __init__(self, *args, **kwargs): | 
|  | super(TestSuite, self).__init__(*args, **kwargs) | 
|  | self.test_root = os.path.join(self.root, "tests") | 
|  | self._test_loader.test_root = self.test_root | 
|  |  | 
|  | def _test_loader_class(self): | 
|  | return TestLoader | 
|  |  | 
|  | def _test_class(self): | 
|  | return TestCase | 
|  |  | 
|  | class TestCase(testcase.D8TestCase): | 
|  | def _get_files_params(self): | 
|  | return [os.path.join(self.suite.test_root, self.path + self._get_suffix())] | 
|  |  | 
|  | def _get_source_flags(self): | 
|  | for proposal in proposal_flags: | 
|  | if os.sep.join(['proposals', proposal['name']]) in self.path: | 
|  | return proposal['flags'] | 
|  | return [] | 
|  |  | 
|  |  | 
|  | def GetSuite(*args, **kwargs): | 
|  | return TestSuite(*args, **kwargs) |