
This patch ensures that we run all the tests when someone touches third-party. Some of the projects (like SipHash and Benchmark) do not get used by every project and we could get away with testing less. However, it takes quite a bit of effort to tease out what actually does depend on which library, it is liable to becoming out of date, and it adds complexity. Just testing all the projects is simple. Given the commit frequency to third-party is pretty low (a couple commits per month), we should have no capacity problems here. Fixes #149154 Reviewers: dschuff, gburgessiv, Keenuts, lnihlen, dpaoliello, cmtice Reviewed By: dpaoliello Pull Request: https://github.com/llvm/llvm-project/pull/150251
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()
|