blob: ffd8de8a91e26b2e34ba2a5c515a68eb059081c5 (
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
load ../lib/common
setup() {
common_setup
# Disable networking for blacklist.txt, and install a cached version instead
cat >> "$XDG_CONFIG_HOME/libretools/libretools.conf" <<-eot
BLACKLIST='phony://example.com'
eot
install -Dm644 /dev/stdin "$XDG_CACHE_HOME/libretools/blacklist.txt" <<-eot
linux:linux-libre:nonfree blobs and firmwares
rubygemsx:rubygemsx:repackaged
skype
eot
}
# Make sure these match pkgbuild-check-nonfree
declare -rig _E_OK=0
declare -rig _E_ERROR=1
declare -rig _E_LIC_UNKNOWN=2
declare -rig _E_LIC_NOGPL=4
declare -rig _E_LIC_NONFREE=8
declare -rig _E_DEP_NONFREE=16
declare -rig _E_PKG_NONFREE=32
# Make sure these match pkgbuild-summarize-nonfree (libremessages)
declare -rig EXIT_SUCCESS=0
declare -rig EXIT_FAILURE=1
# basic operation ##############################################################
@test "pkgbuild-check-nonfree displays usage text" {
# This test seems silly, but it makes sure that it is executable,
# syntactically correct, and loading libraries works.
LC_ALL=C pkgbuild-check-nonfree -h >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
empty $tmpdir/stderr
[[ $status == $_E_OK ]]
}
@test "pkgbuild-check-nonfree errors on invalid flags" {
pkgbuild-check-nonfree -x >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_ERROR ]]
}
@test "pkgbuild-check-nonfree fails when there is no blacklist" {
rm $XDG_CACHE_HOME/libretools/blacklist.txt
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.free >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_ERROR ]]
}
# PKGBUILD codes ###############################################################
# basic _E_OK
@test "pkgbuild-check-nonfree succeeds for free depends" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.free >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_OK ]]
}
# _E_DEP_LIC_UNKNOWN
@test "pkgbuild-check-nonfree warns about unknown licenses" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.lic-unknown >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_LIC_UNKNOWN ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_SUCCESS ]]
}
# _E_DEP_LIC_NOGPL
@test "pkgbuild-check-nonfree warns about GPL-incompatible licenses" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.lic-nogpl >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_LIC_NOGPL ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_SUCCESS ]]
}
# _E_DEP_LIC_NONFREE
@test "pkgbuild-check-nonfree fails on nonfree licenses" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.lic-nonfree >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_LIC_NONFREE ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_FAILURE ]]
}
# _E_DEP_NONFREE
@test "pkgbuild-check-nonfree succeeds for repackaged depend" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.dep-repackaged >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_OK ]]
}
@test "pkgbuild-check-nonfree succeeds for nonfree depend with replacement" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.dep-nonfree-replacement >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_OK ]]
}
@test "pkgbuild-check-nonfree fails for nonfree depend" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.dep-nonfree >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_DEP_NONFREE ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_FAILURE ]]
}
# _E_PKG_NONFREE
@test "pkgbuild-check-nonfree succeeds for repackaged package" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.pkg-repackaged >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_OK ]]
}
@test "pkgbuild-check-nonfree fails for package with replacement" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.pkg-nonfree-replacement >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
echo [[ $status == $_E_PKG_NONFREE ]]
[[ $status == $_E_PKG_NONFREE ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_FAILURE ]]
}
@test "pkgbuild-check-nonfree fails for nonfree package" {
pkgbuild-check-nonfree fixtures/pkgbuild-check-nonfree/PKGBUILD.pkg-nonfree >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $_E_PKG_NONFREE ]]
local pcn_stat=$status
status=0
pkgbuild-summarize-nonfree $pcn_stat >$tmpdir/stdout 2>$tmpdir/stderr || status=$?
empty $tmpdir/stdout
not empty $tmpdir/stderr
[[ $status == $EXIT_FAILURE ]]
}
|