summaryrefslogtreecommitdiff
path: root/eclass/tests/eapi9-pipestatus.sh
blob: 6264b63d9440b4664a697331a1d10380c57bdde1 (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
#!/bin/bash
# Copyright 2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

source tests-common.sh || exit

inherit eapi9-pipestatus

tps() {
	local exp_ret=${1} cmd=${2}
	local have_ret
	tbegin "${cmd} -> ret: ${exp_ret}"
	eval "${cmd}; pipestatus"
	have_ret=$?
	[[ ${have_ret} -eq ${exp_ret} ]]
	tend $? "returned: ${have_ret}"
}

tpsv() {
	local exp_ret=${1} exp_out=${2} cmd=${3}
	local have_ret have_out
	tbegin "${cmd} -> ret: ${exp_ret}, out: ${exp_out}"
	have_out=$(eval "${cmd}; pipestatus -v")
	have_ret=$?
	[[ ${have_ret} -eq ${exp_ret} && ${have_out} == "${exp_out}" ]]
	tend $? "returned: ${have_ret}, output: ${have_out}"
}

txf() {
	local out
	tbegin "XFAIL: $*"
	out=$("$@" 2>&1)
	[[ ${out} == die:* ]]
	tend $? "function did not die"
}

ret() {
	return ${1}
}

tps 0           "true"
tps 1           "false"
tps 0           "true | true"
tps 1           "false | true"
tps 2           "ret 2 | true"
tps 1           "true | false | true"
tps 5           "true | false | ret 5 | true"
tpsv 0 "0 0 0"  "true | true | true"
tpsv 1 "1 0"    "false | true"
tpsv 2 "3 2 0"  "ret 3 | ret 2 | true"

txf pipestatus bad_arg
txf pipestatus -v extra_arg

texit