#!/usr/bin/env python # Copyright 2014 The Chromium 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 unittest from pylib.base import base_test_result from pylib.gtest import gtest_test_instance class GtestTestInstanceTests(unittest.TestCase): def testParseGTestListTests_simple(self): raw_output = [ 'TestCaseOne.', ' testOne', ' testTwo', 'TestCaseTwo.', ' testThree', ' testFour', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'TestCaseOne.testOne', 'TestCaseOne.testTwo', 'TestCaseTwo.testThree', 'TestCaseTwo.testFour', ] self.assertEqual(expected, actual) def testParseGTestListTests_typeParameterized_old(self): raw_output = [ 'TPTestCase/WithTypeParam/0.', ' testOne', ' testTwo', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'TPTestCase/WithTypeParam/0.testOne', 'TPTestCase/WithTypeParam/0.testTwo', ] self.assertEqual(expected, actual) def testParseGTestListTests_typeParameterized_new(self): raw_output = [ 'TPTestCase/WithTypeParam/0. # TypeParam = TypeParam0', ' testOne', ' testTwo', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'TPTestCase/WithTypeParam/0.testOne', 'TPTestCase/WithTypeParam/0.testTwo', ] self.assertEqual(expected, actual) def testParseGTestListTests_valueParameterized_old(self): raw_output = [ 'VPTestCase.', ' testWithValueParam/0', ' testWithValueParam/1', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'VPTestCase.testWithValueParam/0', 'VPTestCase.testWithValueParam/1', ] self.assertEqual(expected, actual) def testParseGTestListTests_valueParameterized_new(self): raw_output = [ 'VPTestCase.', ' testWithValueParam/0 # GetParam() = 0', ' testWithValueParam/1 # GetParam() = 1', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'VPTestCase.testWithValueParam/0', 'VPTestCase.testWithValueParam/1', ] self.assertEqual(expected, actual) def testParseGTestListTests_emptyTestName(self): raw_output = [ 'TestCase.', ' ', ' nonEmptyTestName', ] actual = gtest_test_instance.ParseGTestListTests(raw_output) expected = [ 'TestCase.nonEmptyTestName', ] self.assertEqual(expected, actual) def testParseGTestOutput_pass(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ OK ] FooTest.Bar (1 ms)', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(1, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.PASS, actual[0].GetType()) def testParseGTestOutput_fail(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ FAILED ] FooTest.Bar (1 ms)', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(1, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.FAIL, actual[0].GetType()) def testParseGTestOutput_crash(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ CRASHED ] FooTest.Bar (1 ms)', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(1, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.CRASH, actual[0].GetType()) def testParseGTestOutput_errorCrash(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ERROR:blah] Currently running: FooTest.Bar', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(0, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.CRASH, actual[0].GetType()) def testParseGTestOutput_unknown(self): raw_output = [ '[ RUN ] FooTest.Bar', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(0, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.UNKNOWN, actual[0].GetType()) def testParseGTestOutput_nonterminalUnknown(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ RUN ] FooTest.Baz', '[ OK ] FooTest.Baz (1 ms)', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(2, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(0, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.UNKNOWN, actual[0].GetType()) self.assertEquals('FooTest.Baz', actual[1].GetName()) self.assertEquals(1, actual[1].GetDuration()) self.assertEquals(base_test_result.ResultType.PASS, actual[1].GetType()) def testParseGTestOutput_deathTestCrashOk(self): raw_output = [ '[ RUN ] FooTest.Bar', '[ CRASHED ]', '[ OK ] FooTest.Bar (1 ms)', ] actual = gtest_test_instance.ParseGTestOutput(raw_output, None, None) self.assertEquals(1, len(actual)) self.assertEquals('FooTest.Bar', actual[0].GetName()) self.assertEquals(1, actual[0].GetDuration()) self.assertEquals(base_test_result.ResultType.PASS, actual[0].GetType()) def testParseGTestXML_none(self): actual = gtest_test_instance.ParseGTestXML(None) self.assertEquals([], actual) def testConvertTestFilterFile_commentsAndBlankLines(self): input_lines = [ 'positive1', '# comment', 'positive2 # Another comment', '' 'positive3' ] actual = gtest_test_instance \ .ConvertTestFilterFileIntoGTestFilterArgument(input_lines) expected = 'positive1:positive2:positive3' self.assertEquals(expected, actual) def testConvertTestFilterFile_onlyPositive(self): input_lines = [ 'positive1', 'positive2' ] actual = gtest_test_instance \ .ConvertTestFilterFileIntoGTestFilterArgument(input_lines) expected = 'positive1:positive2' self.assertEquals(expected, actual) def testConvertTestFilterFile_onlyNegative(self): input_lines = [ '-negative1', '-negative2' ] actual = gtest_test_instance \ .ConvertTestFilterFileIntoGTestFilterArgument(input_lines) expected = '-negative1:negative2' self.assertEquals(expected, actual) def testConvertTestFilterFile_positiveAndNegative(self): input_lines = [ 'positive1', 'positive2', '-negative1', '-negative2' ] actual = gtest_test_instance \ .ConvertTestFilterFileIntoGTestFilterArgument(input_lines) expected = 'positive1:positive2-negative1:negative2' self.assertEquals(expected, actual) def testTestNameWithoutDisabledPrefix_disabled(self): test_name_list = [ 'A.DISABLED_B', 'DISABLED_A.B', 'DISABLED_A.DISABLED_B', ] for test_name in test_name_list: actual = gtest_test_instance \ .TestNameWithoutDisabledPrefix(test_name) expected = 'A.B' self.assertEquals(expected, actual) def testTestNameWithoutDisabledPrefix_flaky(self): test_name_list = [ 'A.FLAKY_B', 'FLAKY_A.B', 'FLAKY_A.FLAKY_B', ] for test_name in test_name_list: actual = gtest_test_instance \ .TestNameWithoutDisabledPrefix(test_name) expected = 'A.B' self.assertEquals(expected, actual) def testTestNameWithoutDisabledPrefix_notDisabledOrFlaky(self): test_name = 'A.B' actual = gtest_test_instance \ .TestNameWithoutDisabledPrefix(test_name) expected = 'A.B' self.assertEquals(expected, actual) if __name__ == '__main__': unittest.main(verbosity=2)