xref: /aosp_15_r20/external/toolchain-utils/llvm_tools/bb_add_test.py (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1*760c253cSXin Li#!/usr/bin/env python3
2*760c253cSXin Li# Copyright 2024 The ChromiumOS Authors
3*760c253cSXin Li# Use of this source code is governed by a BSD-style license that can be
4*760c253cSXin Li# found in the LICENSE file.
5*760c253cSXin Li
6*760c253cSXin Li"""Tests for bb_add.py."""
7*760c253cSXin Li
8*760c253cSXin Lifrom typing import Iterable
9*760c253cSXin Liimport unittest
10*760c253cSXin Li
11*760c253cSXin Liimport bb_add
12*760c253cSXin Liimport cros_cls
13*760c253cSXin Liimport llvm_next
14*760c253cSXin Li
15*760c253cSXin Li
16*760c253cSXin Li_ARBITRARY_BOTS = ["chromeos/cq/amd64-generic-cq"]
17*760c253cSXin Li
18*760c253cSXin Li
19*760c253cSXin Liclass Test(unittest.TestCase):
20*760c253cSXin Li    """Tests for bb_add.py."""
21*760c253cSXin Li
22*760c253cSXin Li    def set_llvm_next_cls(self, cls: Iterable[cros_cls.ChangeListURL]):
23*760c253cSXin Li        old_cls = llvm_next.LLVM_NEXT_TESTING_CLS
24*760c253cSXin Li        llvm_next.LLVM_NEXT_TESTING_CLS = cls
25*760c253cSXin Li
26*760c253cSXin Li        def restore_cls():
27*760c253cSXin Li            llvm_next.LLVM_NEXT_TESTING_CLS = old_cls
28*760c253cSXin Li
29*760c253cSXin Li        self.addCleanup(restore_cls)
30*760c253cSXin Li
31*760c253cSXin Li    def test_generate_bb_add_raises_if_no_llvm_next_cls(self):
32*760c253cSXin Li        self.set_llvm_next_cls(())
33*760c253cSXin Li        with self.assertRaisesRegex(
34*760c253cSXin Li            ValueError, "^llvm-next testing requested.*"
35*760c253cSXin Li        ):
36*760c253cSXin Li            bb_add.generate_bb_add_command(
37*760c253cSXin Li                use_llvm_next=True,
38*760c253cSXin Li                disable_werror=False,
39*760c253cSXin Li                extra_cls=(),
40*760c253cSXin Li                bots=_ARBITRARY_BOTS,
41*760c253cSXin Li            )
42*760c253cSXin Li
43*760c253cSXin Li    def test_generate_bb_add_adds_llvm_next_cls(self):
44*760c253cSXin Li        self.set_llvm_next_cls((cros_cls.ChangeListURL(123, 1),))
45*760c253cSXin Li        cmd = bb_add.generate_bb_add_command(
46*760c253cSXin Li            use_llvm_next=True,
47*760c253cSXin Li            disable_werror=False,
48*760c253cSXin Li            extra_cls=(),
49*760c253cSXin Li            bots=_ARBITRARY_BOTS,
50*760c253cSXin Li        )
51*760c253cSXin Li        self.assertEqual(
52*760c253cSXin Li            cmd, ["bb", "add", "-cl", "crrev.com/c/123/1"] + _ARBITRARY_BOTS
53*760c253cSXin Li        )
54*760c253cSXin Li
55*760c253cSXin Li    def test_generate_bb_add_adds_disable_werror_cl(self):
56*760c253cSXin Li        self.set_llvm_next_cls((cros_cls.ChangeListURL(123, 1),))
57*760c253cSXin Li        cmd = bb_add.generate_bb_add_command(
58*760c253cSXin Li            use_llvm_next=False,
59*760c253cSXin Li            disable_werror=True,
60*760c253cSXin Li            extra_cls=(),
61*760c253cSXin Li            bots=_ARBITRARY_BOTS,
62*760c253cSXin Li        )
63*760c253cSXin Li        self.assertEqual(
64*760c253cSXin Li            cmd,
65*760c253cSXin Li            [
66*760c253cSXin Li                "bb",
67*760c253cSXin Li                "add",
68*760c253cSXin Li                "-cl",
69*760c253cSXin Li                llvm_next.DISABLE_WERROR_CL.crrev_url_without_http(),
70*760c253cSXin Li            ]
71*760c253cSXin Li            + _ARBITRARY_BOTS,
72*760c253cSXin Li        )
73*760c253cSXin Li
74*760c253cSXin Li    def test_generate_bb_add_adds_extra_cls(self):
75*760c253cSXin Li        self.set_llvm_next_cls((cros_cls.ChangeListURL(123, 1),))
76*760c253cSXin Li        cmd = bb_add.generate_bb_add_command(
77*760c253cSXin Li            use_llvm_next=False,
78*760c253cSXin Li            disable_werror=False,
79*760c253cSXin Li            extra_cls=(
80*760c253cSXin Li                cros_cls.ChangeListURL(123, 1),
81*760c253cSXin Li                cros_cls.ChangeListURL(126),
82*760c253cSXin Li            ),
83*760c253cSXin Li            bots=_ARBITRARY_BOTS,
84*760c253cSXin Li        )
85*760c253cSXin Li        self.assertEqual(
86*760c253cSXin Li            cmd,
87*760c253cSXin Li            [
88*760c253cSXin Li                "bb",
89*760c253cSXin Li                "add",
90*760c253cSXin Li                "-cl",
91*760c253cSXin Li                "crrev.com/c/123/1",
92*760c253cSXin Li                "-cl",
93*760c253cSXin Li                "crrev.com/c/126",
94*760c253cSXin Li            ]
95*760c253cSXin Li            + _ARBITRARY_BOTS,
96*760c253cSXin Li        )
97*760c253cSXin Li
98*760c253cSXin Li
99*760c253cSXin Liif __name__ == "__main__":
100*760c253cSXin Li    unittest.main()
101