| Index: tools/testrunner/local/testsuite_unittest.py
|
| diff --git a/tools/testrunner/local/testsuite_unittest.py b/tools/testrunner/local/testsuite_unittest.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..003822afdf36a50ee984d2ff830c93d3db468566
|
| --- /dev/null
|
| +++ b/tools/testrunner/local/testsuite_unittest.py
|
| @@ -0,0 +1,96 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2016 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
|
| +import sys
|
| +import unittest
|
| +
|
| +# Needed because the test runner contains relative imports.
|
| +TOOLS_PATH = os.path.dirname(os.path.dirname(os.path.dirname(
|
| + os.path.abspath(__file__))))
|
| +sys.path.append(TOOLS_PATH)
|
| +
|
| +from testrunner.local.testsuite import TestSuite
|
| +from testrunner.objects.testcase import TestCase
|
| +
|
| +
|
| +class TestSuiteTest(unittest.TestCase):
|
| + def test_filter_testcases_by_status_first_pass(self):
|
| + suite = TestSuite('foo', 'bar')
|
| + suite.tests = [
|
| + TestCase(suite, 'foo/bar'),
|
| + TestCase(suite, 'baz/bar'),
|
| + ]
|
| + suite.rules = {
|
| + '': {
|
| + 'foo/bar': set(['PASS', 'SKIP']),
|
| + 'baz/bar': set(['PASS', 'FAIL']),
|
| + },
|
| + }
|
| + suite.wildcards = {
|
| + '': {
|
| + 'baz/*': set(['PASS', 'SLOW']),
|
| + },
|
| + }
|
| + suite.FilterTestCasesByStatus(warn_unused_rules=False)
|
| + self.assertEquals(
|
| + [TestCase(suite, 'baz/bar')],
|
| + suite.tests,
|
| + )
|
| + self.assertEquals(set(['PASS', 'FAIL', 'SLOW']), suite.tests[0].outcomes)
|
| +
|
| + def test_filter_testcases_by_status_second_pass(self):
|
| + suite = TestSuite('foo', 'bar')
|
| + suite.tests = [
|
| + TestCase(suite, 'foo/bar', variant='default'),
|
| + TestCase(suite, 'foo/bar', variant='stress', flags=['-v']),
|
| + TestCase(suite, 'baz/bar', variant='default'),
|
| + TestCase(suite, 'baz/bar', variant='stress', flags=['-v']),
|
| + ]
|
| +
|
| + # Contrived outcomes from filtering by variant-independent rules.
|
| + suite.tests[0].outcomes = set(['PREV'])
|
| + suite.tests[1].outcomes = set(['PREV'])
|
| + suite.tests[2].outcomes = set(['PREV'])
|
| + suite.tests[3].outcomes = set(['PREV'])
|
| +
|
| + suite.rules = {
|
| + 'default': {
|
| + 'foo/bar': set(['PASS', 'SKIP']),
|
| + 'baz/bar': set(['PASS', 'FAIL']),
|
| + },
|
| + 'stress': {
|
| + 'baz/bar': set(['SKIP']),
|
| + },
|
| + }
|
| + suite.wildcards = {
|
| + 'default': {
|
| + 'baz/*': set(['PASS', 'SLOW']),
|
| + },
|
| + 'stress': {
|
| + 'foo/*': set(['PASS', 'SLOW']),
|
| + },
|
| + }
|
| + suite.FilterTestCasesByStatus(warn_unused_rules=False, variants=True)
|
| + self.assertEquals(
|
| + [
|
| + TestCase(suite, 'foo/bar', flags=['-v']),
|
| + TestCase(suite, 'baz/bar'),
|
| + ],
|
| + suite.tests,
|
| + )
|
| +
|
| + self.assertEquals(
|
| + set(['PASS', 'SLOW', 'PREV']),
|
| + suite.tests[0].outcomes,
|
| + )
|
| + self.assertEquals(
|
| + set(['PASS', 'FAIL', 'SLOW', 'PREV']),
|
| + suite.tests[1].outcomes,
|
| + )
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|