419 lines
16 KiB
Python
419 lines
16 KiB
Python
# 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;llvm",
|
|
)
|
|
self.assertEqual(
|
|
env_variables["project_check_targets"],
|
|
"check-clang check-clang-tools",
|
|
)
|
|
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;llvm;mlir",
|
|
)
|
|
self.assertEqual(
|
|
env_variables["project_check_targets"],
|
|
"check-clang check-clang-cir check-clang-tools",
|
|
)
|
|
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()
|