summaryrefslogtreecommitdiff
blob: 93bc124a82af47707133ca43350b39509fbbccb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
source tests-common.sh || exit

inherit llvm

# llvm_check_deps override to disable has_version use.
# in: ${LLVM_SLOT}
# returns 0 if installed (i.e. == LLVM_INSTALLED_SLOT), 1 otherwise
llvm_check_deps() {
	[[ ${LLVM_SLOT} == ${LLVM_INSTALLED_SLOT} ]]
}

# check_prefix <expected> [<args>...]
# Check output of `get_llvm_prefix <args>...`.
check_prefix() {
	local expected=${1}
	shift

	tbegin "get_llvm_prefix ${*}; inst=${LLVM_INSTALLED_SLOT} -> ${expected}"
	prefix=$(get_llvm_prefix "${@}")
	[[ ${prefix} == ${expected} ]] ||
		eerror "got: ${prefix} != exp: ${expected}"
	tend ${?}
}

# check_setup_path <expected>
# Check PATH after pkg_setup.
check_setup_path() {
	local expected=${1}
	shift

	tbegin "pkg_setup; max=${LLVM_MAX_SLOT}; inst=${LLVM_INSTALLED_SLOT} -> PATH=${expected}"
	path=$(llvm_pkg_setup; echo "${PATH}")
	[[ ${path} == ${expected} ]] ||
		eerror "got: ${path} != exp: ${expected}"
	tend ${?}
}


EAPI=7
BROOT=/broot
SYSROOT=/sysroot
ESYSROOT=/sysroot/eprefix
ROOT=/root
EROOT=/root/eprefix

ebegin "Testing check_setup_path without max slot"
eindent
	LLVM_INSTALLED_SLOT=11 \
	check_prefix /sysroot/eprefix/usr/lib/llvm/11
	LLVM_INSTALLED_SLOT=10 \
	check_prefix /sysroot/eprefix/usr/lib/llvm/10
eoutdent

ebegin "Testing check_setup_path with max slot"
eindent
	LLVM_INSTALLED_SLOT=1* \
	check_prefix /sysroot/eprefix/usr/lib/llvm/11 11
	LLVM_INSTALLED_SLOT=1* \
	check_prefix /sysroot/eprefix/usr/lib/llvm/10 10
	LLVM_INSTALLED_SLOT=10 \
	check_prefix /sysroot/eprefix/usr/lib/llvm/10 11
eoutdent

ebegin "Testing check_setup_path option switches"
eindent
	LLVM_INSTALLED_SLOT=11 \
	check_prefix /broot/usr/lib/llvm/11 -b
	LLVM_INSTALLED_SLOT=11 \
	check_prefix /sysroot/eprefix/usr/lib/llvm/11 -d
eoutdent

ebegin "Testing check_setup_path EAPI 6 API"
eindent
	EAPI=6 \
	LLVM_INSTALLED_SLOT=11 \
	check_prefix /usr/lib/llvm/11 -d
eoutdent

BASEPATH=/usr/lib/ccache/bin:/usr/bin:/usr/sbin:/bin:/sbin

# TODO: cross support?
ESYSROOT=

ebegin "Testing pkg_setup with all installed LLVM versions in PATH"
eindent
	LLVM_MAX_SLOT=11 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH}:/usr/lib/llvm/11/bin \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin"

	LLVM_MAX_SLOT=10 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH}:/usr/lib/llvm/11/bin:/usr/lib/llvm/10/bin \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin:/usr/lib/llvm/11/bin"

	LLVM_MAX_SLOT=11 \
	LLVM_INSTALLED_SLOT=10 \
	PATH=${BASEPATH}:/usr/lib/llvm/10/bin \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin"
eoutdent

ebegin "Testing pkg_setup with the other LLVM version in PATH"
eindent
	LLVM_MAX_SLOT=11 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH}:/usr/lib/llvm/10/bin \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin:/usr/lib/llvm/10/bin"

	LLVM_MAX_SLOT=10 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH}:/usr/lib/llvm/11/bin \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin:/usr/lib/llvm/11/bin"
eoutdent

ebegin "Testing pkg_setup with LLVM missing from PATH"
eindent
	LLVM_MAX_SLOT=11 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH} \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin"

	LLVM_MAX_SLOT=10 \
	LLVM_INSTALLED_SLOT=1* \
	PATH=${BASEPATH} \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin"

	LLVM_MAX_SLOT=11 \
	LLVM_INSTALLED_SLOT=10 \
	PATH=${BASEPATH} \
	check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin"
eoutdent

texit