443 lines · python
1# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.2# See https://llvm.org/LICENSE.txt for license information.3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception4"""Tests for compute_projects.py"""5 6import unittest7 8import compute_projects9 10 11class TestComputeProjects(unittest.TestCase):12 def test_llvm(self):13 env_variables = compute_projects.get_env_variables(14 ["llvm/CMakeLists.txt"], "Linux"15 )16 self.assertEqual(17 env_variables["projects_to_build"],18 "bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly",19 )20 self.assertEqual(21 env_variables["project_check_targets"],22 "check-bolt check-clang check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly",23 )24 self.assertEqual(25 env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind"26 )27 self.assertEqual(28 env_variables["runtimes_check_targets"],29 "",30 )31 self.assertEqual(32 env_variables["runtimes_check_targets_needs_reconfig"],33 "check-cxx check-cxxabi check-unwind",34 )35 36 def test_llvm_windows(self):37 env_variables = compute_projects.get_env_variables(38 ["llvm/CMakeLists.txt"], "Windows"39 )40 self.assertEqual(41 env_variables["projects_to_build"],42 "clang;clang-tools-extra;lld;llvm;mlir;polly",43 )44 self.assertEqual(45 env_variables["project_check_targets"],46 "check-clang check-clang-tools check-lld check-llvm check-mlir check-polly",47 )48 self.assertEqual(env_variables["runtimes_to_build"], "")49 self.assertEqual(50 env_variables["runtimes_check_targets"],51 "",52 )53 self.assertEqual(54 env_variables["runtimes_check_targets_needs_reconfig"],55 "",56 )57 58 def test_llvm_mac(self):59 env_variables = compute_projects.get_env_variables(60 ["llvm/CMakeLists.txt"], "Darwin"61 )62 self.assertEqual(63 env_variables["projects_to_build"],64 "clang;clang-tools-extra;lld;llvm;mlir",65 )66 self.assertEqual(67 env_variables["project_check_targets"],68 "check-clang check-clang-tools check-lld check-llvm check-mlir",69 )70 self.assertEqual(env_variables["runtimes_to_build"], "")71 self.assertEqual(72 env_variables["runtimes_check_targets"],73 "",74 )75 self.assertEqual(76 env_variables["runtimes_check_targets_needs_reconfig"],77 "",78 )79 80 def test_clang(self):81 env_variables = compute_projects.get_env_variables(82 ["clang/CMakeLists.txt"], "Linux"83 )84 self.assertEqual(85 env_variables["projects_to_build"],86 "clang;clang-tools-extra;lld;lldb;llvm",87 )88 self.assertEqual(89 env_variables["project_check_targets"],90 "check-clang check-clang-tools check-lldb",91 )92 self.assertEqual(93 env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind"94 )95 self.assertEqual(96 env_variables["runtimes_check_targets"],97 "check-compiler-rt",98 )99 self.assertEqual(100 env_variables["runtimes_check_targets_needs_reconfig"],101 "check-cxx check-cxxabi check-unwind",102 )103 self.assertEqual(104 env_variables["enable_cir"],105 "OFF",106 )107 108 def test_clang_windows(self):109 env_variables = compute_projects.get_env_variables(110 ["clang/CMakeLists.txt"], "Windows"111 )112 self.assertEqual(113 env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm"114 )115 self.assertEqual(116 env_variables["project_check_targets"], "check-clang check-clang-tools"117 )118 self.assertEqual(env_variables["runtimes_to_build"], "compiler-rt")119 self.assertEqual(120 env_variables["runtimes_check_targets"],121 "check-compiler-rt",122 )123 self.assertEqual(124 env_variables["runtimes_check_targets_needs_reconfig"],125 "",126 )127 self.assertEqual(env_variables["enable_cir"], "OFF")128 129 def test_compiler_rt(self):130 env_variables = compute_projects.get_env_variables(131 ["compiler-rt/lib/asan/asan_allocator.cpp"], "Linux"132 )133 self.assertEqual(134 env_variables["projects_to_build"],135 "clang;lld",136 )137 self.assertEqual(138 env_variables["project_check_targets"],139 "",140 )141 self.assertEqual(env_variables["runtimes_to_build"], "compiler-rt")142 self.assertEqual(143 env_variables["runtimes_check_targets"],144 "check-compiler-rt",145 )146 self.assertEqual(147 env_variables["runtimes_check_targets_needs_reconfig"],148 "",149 )150 self.assertEqual(151 env_variables["enable_cir"],152 "OFF",153 )154 155 def test_cir(self):156 env_variables = compute_projects.get_env_variables(157 ["clang/lib/CIR/CMakeLists.txt"], "Linux"158 )159 self.assertEqual(160 env_variables["projects_to_build"],161 "clang;clang-tools-extra;lld;lldb;llvm;mlir",162 )163 self.assertEqual(164 env_variables["project_check_targets"],165 "check-clang check-clang-cir check-clang-tools check-lldb",166 )167 self.assertEqual(168 env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind"169 )170 self.assertEqual(171 env_variables["runtimes_check_targets"],172 "check-compiler-rt",173 )174 self.assertEqual(175 env_variables["runtimes_check_targets_needs_reconfig"],176 "check-cxx check-cxxabi check-unwind",177 )178 self.assertEqual(env_variables["enable_cir"], "ON")179 180 def test_bolt(self):181 env_variables = compute_projects.get_env_variables(182 ["bolt/CMakeLists.txt"], "Linux"183 )184 self.assertEqual(env_variables["projects_to_build"], "bolt;clang;lld;llvm")185 self.assertEqual(env_variables["project_check_targets"], "check-bolt")186 self.assertEqual(env_variables["runtimes_to_build"], "")187 self.assertEqual(env_variables["runtimes_check_targets"], "")188 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")189 190 def test_lldb(self):191 env_variables = compute_projects.get_env_variables(192 ["lldb/CMakeLists.txt"], "Linux"193 )194 self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm")195 self.assertEqual(env_variables["project_check_targets"], "check-lldb")196 self.assertEqual(env_variables["runtimes_to_build"], "")197 self.assertEqual(env_variables["runtimes_check_targets"], "")198 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")199 200 def test_mlir(self):201 env_variables = compute_projects.get_env_variables(202 ["mlir/CMakeLists.txt"], "Linux"203 )204 self.assertEqual(env_variables["projects_to_build"], "clang;flang;llvm;mlir")205 self.assertEqual(206 env_variables["project_check_targets"], "check-flang check-mlir"207 )208 self.assertEqual(env_variables["runtimes_to_build"], "")209 self.assertEqual(env_variables["runtimes_check_targets"], "")210 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")211 self.assertEqual(env_variables["enable_cir"], "OFF")212 213 def test_flang(self):214 env_variables = compute_projects.get_env_variables(215 ["flang/CMakeLists.txt"], "Linux"216 )217 self.assertEqual(env_variables["projects_to_build"], "clang;flang;llvm")218 self.assertEqual(env_variables["project_check_targets"], "check-flang")219 self.assertEqual(env_variables["runtimes_to_build"], "flang-rt")220 self.assertEqual(env_variables["runtimes_check_targets"], "check-flang-rt")221 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")222 self.assertEqual(env_variables["enable_cir"], "OFF")223 224 def test_invalid_subproject(self):225 env_variables = compute_projects.get_env_variables(226 ["llvm-libgcc/CMakeLists.txt"], "Linux"227 )228 self.assertEqual(env_variables["projects_to_build"], "")229 self.assertEqual(env_variables["project_check_targets"], "")230 self.assertEqual(env_variables["runtimes_to_build"], "")231 self.assertEqual(env_variables["runtimes_check_targets"], "")232 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")233 234 def test_top_level_file(self):235 env_variables = compute_projects.get_env_variables(["README.md"], "Linux")236 self.assertEqual(env_variables["projects_to_build"], "")237 self.assertEqual(env_variables["project_check_targets"], "")238 self.assertEqual(env_variables["runtimes_to_build"], "")239 self.assertEqual(env_variables["runtimes_check_targets"], "")240 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")241 242 def test_exclude_libcxx_in_projects(self):243 env_variables = compute_projects.get_env_variables(244 ["libcxx/CMakeLists.txt"], "Linux"245 )246 self.assertEqual(env_variables["projects_to_build"], "")247 self.assertEqual(env_variables["project_check_targets"], "")248 self.assertEqual(env_variables["runtimes_to_build"], "")249 self.assertEqual(env_variables["runtimes_check_targets"], "")250 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")251 252 def test_include_libc_in_runtimes(self):253 env_variables = compute_projects.get_env_variables(254 ["libc/CMakeLists.txt"], "Linux"255 )256 self.assertEqual(env_variables["projects_to_build"], "clang;lld")257 self.assertEqual(env_variables["project_check_targets"], "")258 self.assertEqual(env_variables["runtimes_to_build"], "libc")259 self.assertEqual(env_variables["runtimes_check_targets"], "check-libc")260 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")261 262 def test_exclude_docs(self):263 env_variables = compute_projects.get_env_variables(264 ["llvm/docs/CIBestPractices.rst"], "Linux"265 )266 self.assertEqual(env_variables["projects_to_build"], "")267 self.assertEqual(env_variables["project_check_targets"], "")268 self.assertEqual(env_variables["runtimes_to_build"], "")269 self.assertEqual(env_variables["runtimes_check_targets"], "")270 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")271 272 def test_exclude_gn(self):273 env_variables = compute_projects.get_env_variables(274 ["llvm/utils/gn/build/BUILD.gn"], "Linux"275 )276 self.assertEqual(env_variables["projects_to_build"], "")277 self.assertEqual(env_variables["project_check_targets"], "")278 self.assertEqual(env_variables["runtimes_to_build"], "")279 self.assertEqual(env_variables["runtimes_check_targets"], "")280 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")281 282 def test_ci(self):283 env_variables = compute_projects.get_env_variables(284 [".ci/compute_projects.py"], "Linux"285 )286 self.assertEqual(287 env_variables["projects_to_build"],288 "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",289 )290 self.assertEqual(291 env_variables["project_check_targets"],292 "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly",293 )294 self.assertEqual(295 env_variables["runtimes_to_build"],296 "compiler-rt;flang-rt;libc;libcxx;libcxxabi;libunwind",297 )298 self.assertEqual(299 env_variables["runtimes_check_targets"],300 "check-compiler-rt check-flang-rt check-libc",301 )302 self.assertEqual(303 env_variables["runtimes_check_targets_needs_reconfig"],304 "check-cxx check-cxxabi check-unwind",305 )306 307 def test_windows_ci(self):308 env_variables = compute_projects.get_env_variables(309 [".ci/compute_projects.py"], "Windows"310 )311 self.assertEqual(312 env_variables["projects_to_build"],313 "clang;clang-tools-extra;libclc;lld;llvm;mlir;polly",314 )315 self.assertEqual(316 env_variables["project_check_targets"],317 "check-clang check-clang-cir check-clang-tools check-lld check-llvm check-mlir check-polly",318 )319 self.assertEqual(320 env_variables["runtimes_to_build"],321 "compiler-rt",322 )323 self.assertEqual(324 env_variables["runtimes_check_targets"],325 "check-compiler-rt",326 )327 self.assertEqual(328 env_variables["runtimes_check_targets_needs_reconfig"],329 "",330 )331 332 def test_lldb(self):333 env_variables = compute_projects.get_env_variables(334 ["lldb/CMakeLists.txt"], "Linux"335 )336 self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm")337 self.assertEqual(env_variables["project_check_targets"], "check-lldb")338 self.assertEqual(339 env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind"340 )341 self.assertEqual(env_variables["runtimes_check_targets"], "")342 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")343 344 def test_clang_tools_extra(self):345 env_variables = compute_projects.get_env_variables(346 ["clang-tools-extra/CMakeLists.txt"], "Linux"347 )348 self.assertEqual(349 env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm"350 )351 self.assertEqual(env_variables["project_check_targets"], "check-clang-tools")352 self.assertEqual(env_variables["runtimes_to_build"], "libc")353 self.assertEqual(env_variables["runtimes_check_targets"], "check-libc")354 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")355 356 def test_premerge_workflow(self):357 env_variables = compute_projects.get_env_variables(358 [".github/workflows/premerge.yaml"], "Linux"359 )360 self.assertEqual(361 env_variables["projects_to_build"],362 "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",363 )364 self.assertEqual(365 env_variables["project_check_targets"],366 "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly",367 )368 self.assertEqual(369 env_variables["runtimes_to_build"],370 "compiler-rt;flang-rt;libc;libcxx;libcxxabi;libunwind",371 )372 self.assertEqual(373 env_variables["runtimes_check_targets"],374 "check-compiler-rt check-flang-rt check-libc",375 )376 self.assertEqual(377 env_variables["runtimes_check_targets_needs_reconfig"],378 "check-cxx check-cxxabi check-unwind",379 )380 381 def test_other_github_workflow(self):382 env_variables = compute_projects.get_env_variables(383 [".github/workflows/docs.yml"], "Linux"384 )385 self.assertEqual(env_variables["projects_to_build"], "")386 self.assertEqual(env_variables["project_check_targets"], "")387 self.assertEqual(env_variables["runtimes_to_build"], "")388 self.assertEqual(env_variables["runtimes_check_targets"], "")389 self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")390 391 def test_third_party_benchmark(self):392 env_variables = compute_projects.get_env_variables(393 ["third-party/benchmark/CMakeLists.txt"], "Linux"394 )395 self.assertEqual(396 env_variables["projects_to_build"],397 "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly",398 )399 self.assertEqual(400 env_variables["project_check_targets"],401 "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly",402 )403 self.assertEqual(404 env_variables["runtimes_to_build"],405 "compiler-rt;flang-rt;libc;libcxx;libcxxabi;libunwind",406 )407 self.assertEqual(408 env_variables["runtimes_check_targets"],409 "check-compiler-rt check-flang-rt check-libc",410 )411 self.assertEqual(412 env_variables["runtimes_check_targets_needs_reconfig"],413 "check-cxx check-cxxabi check-unwind",414 )415 416 def test_lit(self):417 env_variables = compute_projects.get_env_variables(418 ["llvm/utils/lit/CMakeLists.txt"], "Linux"419 )420 self.assertEqual(421 env_variables["projects_to_build"],422 "bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly",423 )424 self.assertEqual(425 env_variables["project_check_targets"],426 "check-bolt check-clang check-clang-tools check-flang check-lit check-lld check-lldb check-llvm check-mlir check-polly",427 )428 self.assertEqual(429 env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind"430 )431 self.assertEqual(432 env_variables["runtimes_check_targets"],433 "",434 )435 self.assertEqual(436 env_variables["runtimes_check_targets_needs_reconfig"],437 "check-cxx check-cxxabi check-unwind",438 )439 440 441if __name__ == "__main__":442 unittest.main()443