# 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 """Does some stuff.""" 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"], "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"], "libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-cxx check-cxxabi check-unwind", ) 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"], "libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-cxx check-cxxabi check-unwind", ) 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;compiler-rt;lld;llvm", ) self.assertEqual( env_variables["project_check_targets"], "check-clang check-clang-tools check-compiler-rt", ) self.assertEqual( env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-cxx check-cxxabi check-unwind", ) 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"], "libcxx;libcxxabi;libunwind" ) self.assertEqual( env_variables["runtimes_check_targets"], "check-cxx check-cxxabi check-unwind", ) 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"], "") 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"], "") 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"], "") 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"], "") def test_invalid_subproject(self): env_variables = compute_projects.get_env_variables( [".ci/compute_projects.py"], "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"], "") 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"], "") def test_exclude_runtiems_in_projects(self): env_variables = compute_projects.get_env_variables( [".ci/compute_projects.py", "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"], "") 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"], "") 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"], "") def test_ci(self): env_variables = compute_projects.get_env_variables( [".ci/compute_projects.py"], "Linux" ) self.assertEqual(env_variables["projects_to_build"], "clang;lld;llvm;lldb") self.assertEqual(env_variables["project_check_targets"], "check-clang check-lld check-llvm check-lldb") self.assertEqual(env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind") self.assertEqual(env_variables["runtimes_check_targets"], "check-cxx check-cxxabi check-unwind") if __name__ == "__main__": unittest.main()