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
|
# Copyright 2018-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import difflib
import os
import subprocess
import portage
from portage.const import PORTAGE_BIN_PATH
from portage.tests import TestCase
class TestFilterBashEnv(TestCase):
def testTestFilterBashEnv(self):
test_cases = (
(
"RDEPEND BASH.* _EPATCH_ECLASS",
rb"""declare -ir BASHPID="28997"
declare -rx A="portage-2.3.24.tar.bz2"
declare -- DESKTOP_DATABASE_DIR="/usr/share/applications"
declare PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
userland_GNU? ( >=sys-apps/coreutils-6.4 )
) "
declare RDEPEND="
>=app-arch/tar-1.27
dev-lang/python-exec:2"
declare -x PF="portage-2.3.24"
declare -a PYTHON_COMPAT=([0]="pypy" [1]="python3_4" [2]="python3_5" [3]="python3_6" [4]="python2_7")
declare -- _EPATCH_ECLASS="1"
declare -- _EUTILS_ECLASS="1"
declare -- f
get_libdir ()
{
local libdir_var="LIBDIR_${ABI}";
local libdir="lib";
[[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var};
echo "${libdir}"
}
make_wrapper ()
{
cat <<-EOF
export ${var}="\${${var}}:${EPREFIX}${libdir}"
EOF
}
use_if_iuse ()
{
in_iuse $1 || return 1;
use $1
}
""",
rb"""declare -x A="portage-2.3.24.tar.bz2"
declare -- DESKTOP_DATABASE_DIR="/usr/share/applications"
declare PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
userland_GNU? ( >=sys-apps/coreutils-6.4 )
) "
declare -x PF="portage-2.3.24"
declare -a PYTHON_COMPAT=([0]="pypy" [1]="python3_4" [2]="python3_5" [3]="python3_6" [4]="python2_7")
declare -- _EUTILS_ECLASS="1"
declare -- f
get_libdir ()
{
local libdir_var="LIBDIR_${ABI}";
local libdir="lib";
[[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var};
echo "${libdir}"
}
make_wrapper ()
{
cat <<-EOF
export ${var}="\${${var}}:${EPREFIX}${libdir}"
EOF
}
use_if_iuse ()
{
in_iuse $1 || return 1;
use $1
}
""",
),
)
for filter_vars, env_in, env_out in test_cases:
proc = None
try:
proc = subprocess.Popen(
[
portage._python_interpreter,
os.path.join(PORTAGE_BIN_PATH, "filter-bash-environment.py"),
filter_vars,
],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
)
proc.stdin.write(env_in)
proc.stdin.close()
result = proc.stdout.read()
finally:
if proc is not None:
proc.stdin.close()
proc.wait()
proc.stdout.close()
diff = list(
difflib.unified_diff(
env_out.decode("utf_8").splitlines(),
result.decode("utf_8").splitlines(),
)
)
self.assertEqual(diff, [])
|