• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2# Copyright 2016 the V8 project authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7import sys
8import unittest
9
10# Needed because the test runner contains relative imports.
11TOOLS_PATH = os.path.dirname(os.path.dirname(os.path.dirname(
12    os.path.abspath(__file__))))
13sys.path.append(TOOLS_PATH)
14
15from testrunner.local.testsuite import TestSuite
16from testrunner.objects.testcase import TestCase
17
18
19class TestSuiteTest(unittest.TestCase):
20  def test_filter_testcases_by_status_first_pass(self):
21    suite = TestSuite('foo', 'bar')
22    suite.tests = [
23      TestCase(suite, 'foo/bar'),
24      TestCase(suite, 'baz/bar'),
25    ]
26    suite.rules = {
27      '': {
28        'foo/bar': set(['PASS', 'SKIP']),
29        'baz/bar': set(['PASS', 'FAIL']),
30      },
31    }
32    suite.wildcards = {
33      '': {
34        'baz/*': set(['PASS', 'SLOW']),
35      },
36    }
37    suite.FilterTestCasesByStatus(warn_unused_rules=False)
38    self.assertEquals(
39        [TestCase(suite, 'baz/bar')],
40        suite.tests,
41    )
42    self.assertEquals(set(['PASS', 'FAIL', 'SLOW']), suite.tests[0].outcomes)
43
44  def test_filter_testcases_by_status_second_pass(self):
45    suite = TestSuite('foo', 'bar')
46
47    test1 = TestCase(suite, 'foo/bar')
48    test2 = TestCase(suite, 'baz/bar')
49
50    # Contrived outcomes from filtering by variant-independent rules.
51    test1.outcomes = set(['PREV'])
52    test2.outcomes = set(['PREV'])
53
54    suite.tests = [
55      test1.CopyAddingFlags(variant='default', flags=[]),
56      test1.CopyAddingFlags(variant='stress', flags=['-v']),
57      test2.CopyAddingFlags(variant='default', flags=[]),
58      test2.CopyAddingFlags(variant='stress', flags=['-v']),
59    ]
60
61    suite.rules = {
62      'default': {
63        'foo/bar': set(['PASS', 'SKIP']),
64        'baz/bar': set(['PASS', 'FAIL']),
65      },
66      'stress': {
67        'baz/bar': set(['SKIP']),
68      },
69    }
70    suite.wildcards = {
71      'default': {
72        'baz/*': set(['PASS', 'SLOW']),
73      },
74      'stress': {
75        'foo/*': set(['PASS', 'SLOW']),
76      },
77    }
78    suite.FilterTestCasesByStatus(warn_unused_rules=False, variants=True)
79    self.assertEquals(
80        [
81          TestCase(suite, 'foo/bar', flags=['-v']),
82          TestCase(suite, 'baz/bar'),
83        ],
84        suite.tests,
85    )
86
87    self.assertEquals(
88        set(['PASS', 'SLOW', 'PREV']),
89        suite.tests[0].outcomes,
90    )
91    self.assertEquals(
92        set(['PASS', 'FAIL', 'SLOW', 'PREV']),
93        suite.tests[1].outcomes,
94    )
95
96
97if __name__ == '__main__':
98    unittest.main()
99