# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception """Tests for compute_projects.py""" import unittest import compute_projects class TestComputeProjects(unittest.TestCase): def test_llvm(self): env_variables = compute_projects.get_env_variables( ["llvm/CMakeLists.txt"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "bolt;clang;clang-tools-extra;flang;lld;lldb;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-bolt check-clang check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly", ) self.assertEqual( env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) def test_llvm_windows(self): env_variables = compute_projects.get_env_variables( ["llvm/CMakeLists.txt"], "Windows" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-tools check-lld check-llvm check-mlir check-polly", ) self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual( env_variables["runtimes_check_targets"], "", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "", ) def test_llvm_mac(self): env_variables = compute_projects.get_env_variables( ["llvm/CMakeLists.txt"], "Darwin" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm;mlir", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-tools check-lld check-llvm check-mlir", ) self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual( env_variables["runtimes_check_targets"], "", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "", ) def test_clang(self): env_variables = compute_projects.get_env_variables( ["clang/CMakeLists.txt"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;lld;lldb;llvm", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-tools check-lldb", ) self.assertEqual( env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) self.assertEqual( env_variables["enable_cir"], "OFF", ) def test_clang_windows(self): env_variables = compute_projects.get_env_variables( ["clang/CMakeLists.txt"], "Windows" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;llvm" ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-tools" ) self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual( env_variables["runtimes_check_targets"], "", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "", ) self.assertEqual(env_variables["enable_cir"], "OFF") def test_compiler_rt(self): env_variables = compute_projects.get_env_variables( ["compiler-rt/lib/asan/asan_allocator.cpp"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "clang;lld", ) self.assertEqual( env_variables["project_check_targets"], "", ) self.assertEqual(env_variables["runtimes_to_build"], "compiler-rt") self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "", ) self.assertEqual( env_variables["enable_cir"], "OFF", ) def test_cir(self): env_variables = compute_projects.get_env_variables( ["clang/lib/CIR/CMakeLists.txt"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;lld;lldb;llvm;mlir", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-cir check-clang-tools check-lldb", ) self.assertEqual( env_variables["runtimes_to_build"], "compiler-rt;libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) self.assertEqual(env_variables["enable_cir"], "ON") def test_bolt(self): env_variables = compute_projects.get_env_variables( ["bolt/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "bolt;clang;lld;llvm") self.assertEqual(env_variables["project_check_targets"], "check-bolt") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_lldb(self): env_variables = compute_projects.get_env_variables( ["lldb/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm") self.assertEqual(env_variables["project_check_targets"], "check-lldb") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_mlir(self): env_variables = compute_projects.get_env_variables( ["mlir/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;flang;llvm;mlir") self.assertEqual( env_variables["project_check_targets"], "check-flang check-mlir" ) self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") self.assertEqual(env_variables["enable_cir"], "OFF") def test_flang(self): env_variables = compute_projects.get_env_variables( ["flang/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;flang;llvm") self.assertEqual(env_variables["project_check_targets"], "check-flang") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") self.assertEqual(env_variables["enable_cir"], "OFF") def test_invalid_subproject(self): env_variables = compute_projects.get_env_variables( ["llvm-libgcc/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_top_level_file(self): env_variables = compute_projects.get_env_variables(["README.md"], "Linux") self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_exclude_libcxx_in_projects(self): env_variables = compute_projects.get_env_variables( ["libcxx/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_include_libc_in_runtimes(self): env_variables = compute_projects.get_env_variables( ["libc/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;lld") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "libc") self.assertEqual(env_variables["runtimes_check_targets"], "check-libc") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_exclude_docs(self): env_variables = compute_projects.get_env_variables( ["llvm/docs/CIBestPractices.rst"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_exclude_gn(self): env_variables = compute_projects.get_env_variables( ["llvm/utils/gn/build/BUILD.gn"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_ci(self): env_variables = compute_projects.get_env_variables( [".ci/compute_projects.py"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly", ) self.assertEqual( env_variables["runtimes_to_build"], "compiler-rt;libc;libcxx;libcxxabi;libunwind", ) self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt check-libc", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) def test_windows_ci(self): env_variables = compute_projects.get_env_variables( [".ci/compute_projects.py"], "Windows" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;libclc;lld;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-cir check-clang-tools check-lld check-llvm check-mlir check-polly", ) self.assertEqual( env_variables["runtimes_to_build"], "", ) self.assertEqual( env_variables["runtimes_check_targets"], "", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "", ) def test_lldb(self): env_variables = compute_projects.get_env_variables( ["lldb/CMakeLists.txt"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm") self.assertEqual(env_variables["project_check_targets"], "check-lldb") self.assertEqual( env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind" ) self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_clang_tools_extra(self): env_variables = compute_projects.get_env_variables( ["clang-tools-extra/CMakeLists.txt"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm" ) self.assertEqual(env_variables["project_check_targets"], "check-clang-tools") self.assertEqual(env_variables["runtimes_to_build"], "libc") self.assertEqual(env_variables["runtimes_check_targets"], "check-libc") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_premerge_workflow(self): env_variables = compute_projects.get_env_variables( [".github/workflows/premerge.yaml"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly", ) self.assertEqual( env_variables["runtimes_to_build"], "compiler-rt;libc;libcxx;libcxxabi;libunwind", ) self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt check-libc", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) def test_other_github_workflow(self): env_variables = compute_projects.get_env_variables( [".github/workflows/docs.yml"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "") self.assertEqual(env_variables["project_check_targets"], "") self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") def test_third_party_benchmark(self): env_variables = compute_projects.get_env_variables( ["third-party/benchmark/CMakeLists.txt"], "Linux" ) self.assertEqual( env_variables["projects_to_build"], "bolt;clang;clang-tools-extra;flang;libclc;lld;lldb;llvm;mlir;polly", ) self.assertEqual( env_variables["project_check_targets"], "check-bolt check-clang check-clang-cir check-clang-tools check-flang check-lld check-lldb check-llvm check-mlir check-polly", ) self.assertEqual( env_variables["runtimes_to_build"], "compiler-rt;libc;libcxx;libcxxabi;libunwind", ) self.assertEqual( env_variables["runtimes_check_targets"], "check-compiler-rt check-libc", ) self.assertEqual( env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx check-cxxabi check-unwind", ) if __name__ == "__main__": unittest.main()