| # Lint as: python2, python3 |
| # Copyright 2021 The Chromium OS 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 glob |
| import os |
| import unittest |
| |
| import common |
| |
| from autotest_lib.server.cros.tradefed import cts_expected_failure_parser |
| from autotest_lib.server.hosts import cros_host |
| |
| |
| class MockHost(cros_host.CrosHost): |
| """Simple host for running mock'd host commands""" |
| |
| def __init__(self, hostname, vulkan=False): |
| self.hostname = hostname |
| self.vulkan = vulkan |
| |
| def has_arc_hardware_vulkan(self): |
| return self.vulkan |
| |
| |
| def glob_add_files(expected_fail_dir): |
| """Return a list of files based on a directory path.""" |
| |
| expected_fail_files = [] |
| expected_fail_dir_path = os.path.join( |
| os.path.dirname(os.path.realpath(__file__)), expected_fail_dir) |
| if os.path.exists(expected_fail_dir_path): |
| expected_fail_files += glob.glob(expected_fail_dir_path + '/*.yaml') |
| return expected_fail_files |
| |
| |
| class CtsExpectedFailureParserTest(unittest.TestCase): |
| """Unittest for cts_expected_failure_parser.""" |
| |
| def test_should_skip_if_no_vulkan(self): |
| mockhost = MockHost('MockHost', False) |
| expected_fail_files = glob_add_files( |
| 'cts_expected_failure_parser_unittest_data') |
| |
| waivers = cts_expected_failure_parser.ParseKnownCTSFailures( |
| expected_fail_files) |
| # params: arch, board, model, bundle_abi, sdk_ver, first_api_level, host |
| found_waivers = waivers.find_waivers('x86', 'hatch', 'kohaku', 'x86', |
| '30', '30', mockhost) |
| self.assertFalse('GtsOpenglTestCases' in found_waivers) |
| self.assertTrue('GtsVulkanTestCases' in found_waivers) |
| |
| def test_should_not_skip_if_has_vulkan(self): |
| mockhost = MockHost('MockHost', True) |
| expected_fail_files = glob_add_files( |
| 'cts_expected_failure_parser_unittest_data') |
| |
| waivers = cts_expected_failure_parser.ParseKnownCTSFailures( |
| expected_fail_files) |
| # params: arch, board, model, bundle_abi, sdk_ver, first_api_level, host |
| found_waivers = waivers.find_waivers('x86', 'hatch', 'kohaku', 'x86', |
| '30', '30', mockhost) |
| |
| self.assertTrue('GtsOpenglTestCases' in found_waivers) |
| self.assertFalse('GtsVulkanTestCases' in found_waivers) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |