summaryrefslogtreecommitdiff
path: root/test/integration/test-bug-624218-Translation-file-handling
blob: c116278ee911613992c1e8dd16fe92123ee85d7a (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
#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'i386'

insertpackage 'unstable' 'unrelated' 'i386' '1'
insertpackage 'unstable' 'ancientstuff' 'all' '1'
insertpackage 'unstable' 'boringstuff' 'all' '1' '' '' 'shared short description'
insertpackage 'unstable' 'coolstuff' 'all' '1'
insertpackage 'unstable' 'dullstuff' 'all' '1' '' '' 'shared short description'
insertpackage 'unstable' 'evilstuff' 'all' '1'
insertpackage 'unstable' 'foostuff' 'all' '1' '' '' 'shared short description'
insertpackage 'unstable' 'goodstuff' 'all' '1'
insertpackage 'unstable' "longdesc" 'all' '1' '' '' "$(for i in $(seq 0 100); do printf '%s' 'lorem ipsum '; done)"

setupaptarchive --no-update
changetowebserver

testsuccess aptget update
PKGORDER='coolstuff foostuff coolstuff foostuff'
msgtest 'Prepare expectation for' 'aptcache show'
if aptcache show $PKGORDER | grep -v '^ ' > aptcacheshow.out 2>&1; then
	msgpass
else
	cat aptcacheshow.out || true
	msgfail
fi
testsuccessequal '4' grep -c '^Package: ' aptcacheshow.out
msgtest 'Prepare expectation for' 'apt show'
if apt show $PKGORDER | grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' > aptshow.out 2>&1; then
	msgpass
else
	cat aptshow.out || true
	msgfail
fi
testsuccessequal '4' grep -c '^Package: ' aptshow.out
rm -rf rootdir/var/lib/apt/lists

checkaptshow() {
	testsuccess aptcache show $PKGORDER
	sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output
	testequal "$(cat aptcacheshow.out)
" grep -v '^ ' rootdir/tmp/testsuccess.output

	testsuccess apt show $PKGORDER
	sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output
	testequal "$(cat aptshow.out)
" grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output

	if [ -n "$(ls rootdir/var/lib/apt/lists/*Translation* 2>/dev/null)" ]; then
		testsuccess find rootdir/var/lib/apt/lists/ -name '*Translation*' -delete

		testsuccess aptcache show $PKGORDER
		sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output
		testequal "$(cat aptcacheshow.out)
" grep -v '^ ' rootdir/tmp/testsuccess.output

		testsuccess apt show $PKGORDER
		sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output
		testequal "$(cat aptshow.out)
" grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output
	fi
}

translationslisted() {
	msgtest 'No download of non-existent locals' "$1"
	export LC_ALL=""
	testsuccess --nomsg aptget update -o Acquire::Languages=en
	testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists

	msgtest 'Download of existent locals' "$1"
	testsuccess --nomsg aptget update
	cp rootdir/tmp/testsuccess.output testsuccess.output
	testsuccess grep -q -e 'Translation-en ' testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists

	msgtest 'Download of en in LC_ALL=C' "$1"
	export LC_ALL=C
	testsuccess --nomsg aptget update
	cp rootdir/tmp/testsuccess.output testsuccess.output
	testsuccess grep -q -e 'Translation-en ' testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists
	unset LC_ALL

	msgtest 'Download of en as forced language' "$1"
	testsuccess --nomsg aptget update -o Acquire::Languages=en
	cp rootdir/tmp/testsuccess.output testsuccess.output
	testsuccess grep -q -e 'Translation-en ' testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists

	msgtest 'Download of nothing else in forced language' "$1"
	testsuccess --nomsg aptget update -o Acquire::Languages=en
	testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists

	msgtest 'Download no Translation- if forced language is non-existent' "$1"
	testsuccess --nomsg aptget update -o Acquire::Languages=ast_DE
	testfailure grep -q -e 'Translation-' rootdir/tmp/testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists

	msgtest 'Download of nothing if none is forced' "$1"
	testsuccess --nomsg aptget update -o Acquire::Languages=none
	testfailure grep -q -e 'Translation' rootdir/tmp/testsuccess.output
	checkaptshow
	rm -rf rootdir/var/lib/apt/lists
}

translationslisted 'with full Index'

# No Release file at all, so no records about Translation files
# (fallback to guessing)
find aptarchive \( -name 'Release' -o -name 'InRelease' \) -delete
echo 'Acquire::AllowInsecureRepositories "true";' >  rootdir/etc/apt/apt.conf.d/allow-insecure-repositories.conf

msgtest 'Download of en as forced language' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=en
testsuccess grep -q -e 'Translation-en ' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

msgtest 'Download of nothing else in forced language' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=en
testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

msgtest 'Download of ast_DE as forced language' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
testsuccess grep -q -e 'Translation-ast_DE$' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

msgtest 'Download of nothing else in forced language' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
testfailure grep -q -e 'Translation-[^a][^s]' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

msgtest 'Download of nothing if none is forced' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=none
testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

mkdir -p rootdir/var/lib/apt/lists
touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE

msgtest 'Download of builtin files' 'without Index'
testwarning --nomsg aptget update
testsuccess grep -q -e 'Translation-ast_DE' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists

mkdir -p rootdir/var/lib/apt/lists
touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE

msgtest 'Download of nothing (even builtin) if none is forced' 'without Index'
testwarning --nomsg aptget update -o Acquire::Languages=none
testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
checkaptshow
rm -rf rootdir/var/lib/apt/lists