| #!/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() |