chromium/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders_unittest.py

#!/usr/bin/env vpython3
# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import unittest

from blinkpy.web_tests.stale_expectation_removal import builders
from unexpected_passes_common import constants
from unexpected_passes_common import data_types


class BuilderRunsTestOfInterestUnittest(unittest.TestCase):
    def setUp(self) -> None:
        self.instance = builders.WebTestBuilders(False)

    def testMatch(self) -> None:
        """Tests that a match can be successfully found."""
        test_map = {
            'isolated_scripts': [
                {
                    'test': 'blink_web_tests',
                },
            ],
        }
        self.assertTrue(self.instance._BuilderRunsTestOfInterest(test_map))

        # Re-add once WebGPU tests are supported.
        # test_map = {
        #     'isolated_scripts': [
        #         {
        #             'isolate_name': 'webgpu_blink_web_tests',
        #         },
        #     ],
        # }
        # self.assertTrue(
        #     self.instance._BuilderRunsTestOfInterest(test_map))

    def testNoMatch(self) -> None:
        test_map = {
            'isolated_scripts': [
                {
                    'test': 'foo_web_tests',
                },
            ],
        }
        self.assertFalse(self.instance._BuilderRunsTestOfInterest(test_map))


class GetFakeCiBuildersUnittest(unittest.TestCase):
    def testStringsConvertedToBuilderEntries(self) -> None:
        """Tests that the easier-to-read strings get converted to BuilderEntry."""
        instance = builders.WebTestBuilders(False)
        fake_builders = instance.GetFakeCiBuilders()
        ci_builder = data_types.BuilderEntry('linux-blink-rel-dummy',
                                             constants.BuilderTypes.CI, False)
        expected_try = set([
            data_types.BuilderEntry('linux-blink-rel',
                                    constants.BuilderTypes.TRY, False),
            data_types.BuilderEntry('v8_linux_blink_rel',
                                    constants.BuilderTypes.TRY, False)
        ])
        self.assertEqual(fake_builders[ci_builder], expected_try)


class GetNonChromiumBuildersUnittest(unittest.TestCase):
    def testStringsConvertedToBuilderEntries(self) -> None:
        """Tests that the easier-to-read strings get converted to BuilderEntry."""
        instance = builders.WebTestBuilders(False)
        builder = data_types.BuilderEntry('ToTMacOfficial',
                                          constants.BuilderTypes.CI, False)
        self.assertIn(builder, instance.GetNonChromiumBuilders())


if __name__ == '__main__':
    unittest.main(verbosity=2)