
This patch backports all of the recent changes to the release branch. This will get the CI functioning again. This backport also includes a couple refactorings, but those will probably end up being necessary for backporting future patches. They are relatively safe because they have already been extensively tested on main and only impact the CI.
374 lines
15 KiB
Python
374 lines
15 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"], "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_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"],
|
|
"",
|
|
)
|
|
self.assertEqual(
|
|
env_variables["runtimes_check_targets_needs_reconfig"],
|
|
"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;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"], "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",
|
|
)
|
|
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_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()
|