diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-02-10 17:34:25 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-02-10 17:34:25 +0000 |
commit | 0bb42730e8fc9c8e571f12e3189c6c6f8d532c24 (patch) | |
tree | cba6032fbed30be2b0764494607c3ec9dda0c18a /eclass/tests | |
parent | cc901a8ce7c6bfe97e3b4f048619693d360ae348 (diff) |
gentoo auto-resync : 10:02:2024 - 17:34:25
Diffstat (limited to 'eclass/tests')
-rwxr-xr-x | eclass/tests/llvm-r1.sh | 151 | ||||
-rwxr-xr-x | eclass/tests/llvm-utils.sh | 118 |
2 files changed, 269 insertions, 0 deletions
diff --git a/eclass/tests/llvm-r1.sh b/eclass/tests/llvm-r1.sh new file mode 100755 index 000000000000..9958f5bba420 --- /dev/null +++ b/eclass/tests/llvm-r1.sh @@ -0,0 +1,151 @@ +#!/bin/bash +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +source tests-common.sh || exit + +EAPI=8 + +test_globals() { + local compat=${1} + local expected_iuse=${2} + local expected_required_use=${3} + local expected_usedep=${4} + local x + + tbegin "LLVM_COMPAT=( ${compat} )" + + ( + local fail=0 + local LLVM_COMPAT=( ${compat} ) + + inherit llvm-r1 + + if [[ ${IUSE%% } != ${expected_iuse} ]]; then + eerror " IUSE: ${IUSE%% }" + eerror "does not match: ${expected_iuse}" + fail=1 + fi + + if [[ ${REQUIRED_USE} != ${expected_required_use} ]]; then + eerror " REQUIRED_USE: ${REQUIRED_USE}" + eerror "does not match: ${expected_required_use}" + fail=1 + fi + + if [[ ${LLVM_USEDEP} != ${expected_usedep} ]]; then + eerror " LLVM_USEDEP: ${LLVM_USEDEP}" + eerror "does not match: ${expected_usedep}" + fail=1 + fi + + exit "${fail}" + ) + + tend "${?}" +} + +test_gen_dep() { + local arg=${1} + local expected + read -r -d '' expected + + tbegin "llvm_gen_dep ${arg}" + local value=$(llvm_gen_dep "${arg}") + + if [[ ${value} != ${expected} ]]; then + eerror "python_get_usedep ${arg}" + eerror "gave:" + eerror " ${value}" + eerror "expected:" + eerror " ${expected}" + fi + tend ${?} +} + +test_fix_clang_version() { + local var=${1} + local tool=${2} + local version=${3} + local expected=${4} + + eval "${tool}() { + cat <<-EOF + clang version ${version} + Target: x86_64-pc-linux-gnu + Thread model: posix + InstalledDir: /usr/lib/llvm/17/bin + Configuration file: /etc/clang/x86_64-pc-linux-gnu-clang.cfg + EOF + }" + + declare -g ${var}=${tool} + tbegin "llvm_fix_clang_version ${var}=${tool} for ${version}" + llvm_fix_clang_version "${var}" + if [[ ${!var} != ${expected} ]]; then + eerror "llvm_fix_clang_version ${var}" + eerror " gave: ${!var}" + eerror "expected: ${expected}" + fi + tend ${?} +} + +test_fix_tool_path() { + local var=${1} + local tool=${2} + local expected_subst=${3} + local expected=${tool} + + tbegin "llvm_fix_tool_path ${1}=${2} (from llvm? ${expected_subst})" + + local matches=( "${BROOT}"/usr/lib/llvm/*/bin/"${tool}" ) + if [[ ${expected_subst} == 1 ]]; then + if [[ ! -x ${matches[0]} ]]; then + ewarn "- skipping, test requires ${tool}" + return + fi + + expected=${matches[0]} + local -x PATH=${matches[0]%/*} + else + local -x PATH= + fi + + declare -g ${var}=${tool} + llvm_fix_tool_path "${var}" + if [[ ${!var} != ${expected} ]]; then + eerror "llvm_fix_tool_path ${var}" + eerror " gave: ${!var}" + eerror "expected: ${expected}" + fi + tend ${?} +} + +test_globals '14 15 16 17 18' \ + "+llvm_slot_17 llvm_slot_15 llvm_slot_16 llvm_slot_18" \ + "^^ ( llvm_slot_15 llvm_slot_16 llvm_slot_17 llvm_slot_18 )" \ + "llvm_slot_15(-)?,llvm_slot_16(-)?,llvm_slot_17(-)?,llvm_slot_18(-)?" +test_globals '14 15 16' \ + "+llvm_slot_16 llvm_slot_15" \ + "^^ ( llvm_slot_15 llvm_slot_16 )" \ + "llvm_slot_15(-)?,llvm_slot_16(-)?" +test_globals '15 18' \ + "+llvm_slot_15 llvm_slot_18" \ + "^^ ( llvm_slot_15 llvm_slot_18 )" \ + "llvm_slot_15(-)?,llvm_slot_18(-)?" +test_globals '18' \ + "+llvm_slot_18" \ + "^^ ( llvm_slot_18 )" \ + "llvm_slot_18(-)?" + +LLVM_COMPAT=( {14..18} ) +inherit llvm-r1 + +test_gen_dep 'sys-devel/llvm:${LLVM_SLOT} sys-devel/clang:${LLVM_SLOT}' <<-EOF + llvm_slot_15? ( sys-devel/llvm:15 sys-devel/clang:15 ) + llvm_slot_16? ( sys-devel/llvm:16 sys-devel/clang:16 ) + llvm_slot_17? ( sys-devel/llvm:17 sys-devel/clang:17 ) + llvm_slot_18? ( sys-devel/llvm:18 sys-devel/clang:18 ) +EOF + +texit diff --git a/eclass/tests/llvm-utils.sh b/eclass/tests/llvm-utils.sh new file mode 100755 index 000000000000..6fe3da3eda13 --- /dev/null +++ b/eclass/tests/llvm-utils.sh @@ -0,0 +1,118 @@ +#!/bin/bash +# Copyright 2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +source tests-common.sh || exit + +EAPI=8 + +inherit llvm-utils + +test_fix_clang_version() { + local var=${1} + local tool=${2} + local version=${3} + local expected=${4} + + eval "${tool}() { + cat <<-EOF + clang version ${version} + Target: x86_64-pc-linux-gnu + Thread model: posix + InstalledDir: /usr/lib/llvm/17/bin + Configuration file: /etc/clang/x86_64-pc-linux-gnu-clang.cfg + EOF + }" + + declare -g ${var}=${tool} + tbegin "llvm_fix_clang_version ${var}=${tool} for ${version}" + llvm_fix_clang_version "${var}" + if [[ ${!var} != ${expected} ]]; then + eerror "llvm_fix_clang_version ${var}" + eerror " gave: ${!var}" + eerror "expected: ${expected}" + fi + tend ${?} +} + +test_fix_tool_path() { + local var=${1} + local tool=${2} + local expected_subst=${3} + local expected=${tool} + + tbegin "llvm_fix_tool_path ${1}=${2} (from llvm? ${expected_subst})" + + local matches=( "${BROOT}"/usr/lib/llvm/*/bin/"${tool}" ) + if [[ ${expected_subst} == 1 ]]; then + if [[ ! -x ${matches[0]} ]]; then + ewarn "- skipping, test requires ${tool}" + return + fi + + expected=${matches[0]} + local -x PATH=${matches[0]%/*} + else + local -x PATH= + fi + + declare -g ${var}=${tool} + llvm_fix_tool_path "${var}" + if [[ ${!var} != ${expected} ]]; then + eerror "llvm_fix_tool_path ${var}" + eerror " gave: ${!var}" + eerror "expected: ${expected}" + fi + tend ${?} +} + +test_prepend_path() { + local slot=${1} + local -x PATH=${2} + local expected=${3} + + tbegin "llvm_prepend_path ${slot} to PATH=${PATH}" + llvm_prepend_path "${slot}" + if [[ ${PATH} != ${expected} ]]; then + eerror "llvm_prepend_path ${var}" + eerror " gave: ${PATH}" + eerror "expected: ${expected}" + fi + tend ${?} +} + +test_fix_clang_version CC clang 19.0.0git78b4e7c5 clang-19 +test_fix_clang_version CC clang 17.0.6 clang-17 +test_fix_clang_version CXX clang++ 17.0.6 clang++-17 +test_fix_clang_version CC x86_64-pc-linux-gnu-clang 17.0.6 \ + x86_64-pc-linux-gnu-clang-17 +test_fix_clang_version CC clang-17 n/a clang-17 +test_fix_clang_version CC gcc n/a gcc + +test_fix_tool_path AR llvm-ar 1 +test_fix_tool_path RANLIB llvm-ranlib 1 +test_fix_tool_path AR ar 1 +test_fix_tool_path AR ar 0 + +ESYSROOT= +test_prepend_path 17 /usr/bin /usr/bin:/usr/lib/llvm/17/bin +test_prepend_path 17 /usr/lib/llvm/17/bin:/usr/bin /usr/lib/llvm/17/bin:/usr/bin +test_prepend_path 17 /usr/bin:/usr/lib/llvm/17/bin /usr/bin:/usr/lib/llvm/17/bin +test_prepend_path 17 /usr/lib/llvm/17/bin:/usr/bin:/usr/lib/llvm/17/bin \ + /usr/lib/llvm/17/bin:/usr/bin +test_prepend_path 17 /usr/lib/llvm/17/bin:/usr/lib/llvm/17/bin:/usr/bin \ + /usr/lib/llvm/17/bin:/usr/bin +test_prepend_path 17 /usr/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/17/bin \ + /usr/bin:/usr/lib/llvm/17/bin +test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/bin \ + /usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/bin +test_prepend_path 18 /usr/bin:/usr/lib/llvm/17/bin \ + /usr/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin +test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/bin \ + /usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/bin +test_prepend_path 18 /usr/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin \ + /usr/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin +test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/bin:/usr/lib/llvm/16/bin \ + /usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/bin:/usr/lib/llvm/16/bin + +texit |