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