| #!/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.rules = { | |
| '': { | |
| 'foo/bar': set(['PASS', 'SKIP']), | |
| 'baz/bar': set(['PASS', 'FAIL']), | |
| }, | |
| } | |
| suite.prefix_rules = { | |
| '': { | |
| 'baz/': set(['PASS', 'SLOW']), | |
| }, | |
| } | |
| suite.tests = [ | |
| TestCase(suite, 'foo/bar', 'foo/bar'), | |
| TestCase(suite, 'baz/bar', 'baz/bar'), | |
| ] | |
| suite.FilterTestCasesByStatus() | |
| self.assertEquals( | |
| [TestCase(suite, 'baz/bar', 'baz/bar')], | |
| suite.tests, | |
| ) | |
| outcomes = suite.GetStatusFileOutcomes(suite.tests[0].name, | |
| suite.tests[0].variant) | |
| self.assertEquals(set(['PASS', 'FAIL', 'SLOW']), outcomes) | |
| def test_filter_testcases_by_status_second_pass(self): | |
| suite = TestSuite('foo', 'bar') | |
| suite.rules = { | |
| '': { | |
| 'foo/bar': set(['PREV']), | |
| }, | |
| 'default': { | |
| 'foo/bar': set(['PASS', 'SKIP']), | |
| 'baz/bar': set(['PASS', 'FAIL']), | |
| }, | |
| 'stress': { | |
| 'baz/bar': set(['SKIP']), | |
| }, | |
| } | |
| suite.prefix_rules = { | |
| '': { | |
| 'baz/': set(['PREV']), | |
| }, | |
| 'default': { | |
| 'baz/': set(['PASS', 'SLOW']), | |
| }, | |
| 'stress': { | |
| 'foo/': set(['PASS', 'SLOW']), | |
| }, | |
| } | |
| test1 = TestCase(suite, 'foo/bar', 'foo/bar') | |
| test2 = TestCase(suite, 'baz/bar', 'baz/bar') | |
| suite.tests = [ | |
| test1.create_variant(variant='default', flags=[]), | |
| test1.create_variant(variant='stress', flags=['-v']), | |
| test2.create_variant(variant='default', flags=[]), | |
| test2.create_variant(variant='stress', flags=['-v']), | |
| ] | |
| suite.FilterTestCasesByStatus() | |
| self.assertEquals( | |
| [ | |
| TestCase(suite, 'foo/bar', 'foo/bar').create_variant(None, ['-v']), | |
| TestCase(suite, 'baz/bar', 'baz/bar'), | |
| ], | |
| suite.tests, | |
| ) | |
| self.assertEquals( | |
| set(['PREV', 'PASS', 'SLOW']), | |
| suite.GetStatusFileOutcomes(suite.tests[0].name, | |
| suite.tests[0].variant), | |
| ) | |
| self.assertEquals( | |
| set(['PREV', 'PASS', 'FAIL', 'SLOW']), | |
| suite.GetStatusFileOutcomes(suite.tests[1].name, | |
| suite.tests[1].variant), | |
| ) | |
| def test_fail_ok_outcome(self): | |
| suite = TestSuite('foo', 'bar') | |
| suite.rules = { | |
| '': { | |
| 'foo/bar': set(['FAIL_OK']), | |
| 'baz/bar': set(['FAIL']), | |
| }, | |
| } | |
| suite.prefix_rules = {} | |
| suite.tests = [ | |
| TestCase(suite, 'foo/bar', 'foo/bar'), | |
| TestCase(suite, 'baz/bar', 'baz/bar'), | |
| ] | |
| for t in suite.tests: | |
| self.assertEquals(['FAIL'], t.expected_outcomes) | |
| if __name__ == '__main__': | |
| unittest.main() |