Imported Upstream version 2.14.2
[platform/upstream/fontconfig.git] / test / run-test.sh
1 #!/bin/bash
2 # fontconfig/test/run-test.sh
3 #
4 # Copyright © 2000 Keith Packard
5 #
6 # Permission to use, copy, modify, distribute, and sell this software and its
7 # documentation for any purpose is hereby granted without fee, provided that
8 # the above copyright notice appear in all copies and that both that
9 # copyright notice and this permission notice appear in supporting
10 # documentation, and that the name of the author(s) not be used in
11 # advertising or publicity pertaining to distribution of the software without
12 # specific, written prior permission.  The authors make no
13 # representations about the suitability of this software for any purpose.  It
14 # is provided "as is" without express or implied warranty.
15 #
16 # THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18 # EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19 # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 # DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 # PERFORMANCE OF THIS SOFTWARE.
23 set -e
24
25 : "${TMPDIR=/tmp}"
26
27 case "$OSTYPE" in
28     msys ) MyPWD=$(pwd -W) ;;  # On Msys/MinGW, returns a MS Windows style path.
29     *    ) MyPWD=$(pwd)    ;;  # On any other platforms, returns a Unix style path.
30 esac
31
32 TESTDIR=${srcdir-"$MyPWD"}
33 BUILDTESTDIR=${builddir-"$MyPWD"}
34
35 BASEDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
36 FONTDIR="$BASEDIR"/fonts
37 CACHEDIR="$BASEDIR"/cache.dir
38 EXPECTED=${EXPECTED-"out.expected"}
39
40 FCLIST="$LOG_COMPILER ../fc-list/fc-list$EXEEXT"
41 FCCACHE="$LOG_COMPILER ../fc-cache/fc-cache$EXEEXT"
42
43 if [ -x "$(command -v bwrap)" ]; then
44     BWRAP="$(command -v bwrap)"
45 fi
46
47 FONT1=$TESTDIR/4x6.pcf
48 FONT2=$TESTDIR/8x16.pcf
49 TEST=""
50
51 clean_exit() {
52     rc=$?
53     trap - INT TERM ABRT EXIT
54     if [ "x$TEST" != "x" ]; then
55         echo "Aborting from '$TEST' with the exit code $rc"
56     fi
57     exit $rc
58 }
59 trap clean_exit INT TERM ABRT EXIT
60
61 check () {
62     {
63         $FCLIST - family pixelsize | sort;
64         echo "=";
65         $FCLIST - family pixelsize | sort;
66         echo "=";
67         $FCLIST - family pixelsize | sort;
68     } > out
69   tr -d '\015' <out >out.tmp; mv out.tmp out
70   if cmp out "$BUILDTESTDIR"/"$EXPECTED" > /dev/null ; then : ; else
71     echo "*** Test failed: $TEST"
72     echo "*** output is in 'out', expected output in '$EXPECTED'"
73     exit 1
74   fi
75   rm -f out
76 }
77
78 prep() {
79   rm -rf "$CACHEDIR"
80   rm -rf "$FONTDIR"
81   mkdir "$FONTDIR"
82 }
83
84 dotest () {
85   TEST=$1
86   test x"$VERBOSE" = x || echo "Running: $TEST"
87 }
88
89 sed "s!@FONTDIR@!$FONTDIR!
90 s!@REMAPDIR@!!
91 s!@CACHEDIR@!$CACHEDIR!" < "$TESTDIR"/fonts.conf.in > fonts.conf
92
93 FONTCONFIG_FILE="$MyPWD"/fonts.conf
94 export FONTCONFIG_FILE
95
96 dotest "Basic check"
97 prep
98 cp "$FONT1" "$FONT2" "$FONTDIR"
99 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
100     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
101 fi
102 check
103
104 dotest "With a subdir"
105 prep
106 cp "$FONT1" "$FONT2" "$FONTDIR"
107 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
108     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
109 fi
110 $FCCACHE "$FONTDIR"
111 check
112
113 dotest "Subdir with a cache file"
114 prep
115 mkdir "$FONTDIR"/a
116 cp "$FONT1" "$FONT2" "$FONTDIR"/a
117 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
118     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"/a
119 fi
120 $FCCACHE "$FONTDIR"/a
121 check
122
123 dotest "Complicated directory structure"
124 prep
125 mkdir "$FONTDIR"/a
126 mkdir "$FONTDIR"/a/a
127 mkdir "$FONTDIR"/b
128 mkdir "$FONTDIR"/b/a
129 cp "$FONT1" "$FONTDIR"/a
130 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
131     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"/a
132 fi
133 cp "$FONT2" "$FONTDIR"/b/a
134 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
135     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"/b/a
136 fi
137 check
138
139 dotest "Subdir with an out-of-date cache file"
140 prep
141 mkdir "$FONTDIR"/a
142 $FCCACHE "$FONTDIR"/a
143 sleep 1
144 cp "$FONT1" "$FONT2" "$FONTDIR"/a
145 check
146
147 dotest "Dir with an out-of-date cache file"
148 prep
149 cp "$FONT1" "$FONTDIR"
150 $FCCACHE "$FONTDIR"
151 sleep 1
152 mkdir "$FONTDIR"/a
153 cp "$FONT2" "$FONTDIR"/a
154 check
155
156 dotest "Keep mtime of the font directory"
157 prep
158 cp "$FONT1" "$FONTDIR"
159 touch -d @0 "$FONTDIR"
160 stat -c '%y' "$FONTDIR" > out1
161 $FCCACHE "$FONTDIR"
162 stat -c '%y' "$FONTDIR" > out2
163 if cmp out1 out2 > /dev/null ; then : ; else
164     echo "*** Test failed: $TEST"
165     echo "mtime was modified"
166     exit 1
167 fi
168
169 if [ x"$BWRAP" != "x" ] && [ "x$EXEEXT" = "x" ]; then
170 dotest "Basic functionality with the bind-mounted cache dir"
171 prep
172 cp "$FONT1" "$FONT2" "$FONTDIR"
173 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
174     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
175 fi
176 $FCCACHE "$FONTDIR"
177 sleep 1
178 ls -l "$CACHEDIR" > out1
179 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
180 # Once font dir is remapped, we could use $FONTDIR as different one in theory.
181 # but we don't use it here and to avoid duplicate entries, set the non-existing
182 # directory here.
183 sed "s!@FONTDIR@!$FONTDIR/a!
184 s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>!
185 s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf
186 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-match/fc-match"$EXEEXT" -f "%{file}\n" ":foundry=Misc" > xxx
187 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/test/test-bz106618"$EXEEXT" | sort > flist1
188 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev find "$TESTTMPDIR"/fonts/ -type f -name '*.pcf' | sort > flist2
189 ls -l "$CACHEDIR" > out2
190 if cmp out1 out2 > /dev/null ; then : ; else
191   echo "*** Test failed: $TEST"
192   echo "cache was created/updated."
193   echo "Before:"
194   cat out1
195   echo "After:"
196   cat out2
197   exit 1
198 fi
199 if [ x"$(cat xxx)" != "x$TESTTMPDIR/fonts/4x6.pcf" ]; then
200   echo "*** Test failed: $TEST"
201   echo "file property doesn't point to the new place: $TESTTMPDIR/fonts/4x6.pcf"
202   exit 1
203 fi
204 if cmp flist1 flist2 > /dev/null ; then : ; else
205   echo "*** Test failed: $TEST"
206   echo "file properties doesn't point to the new places"
207   echo "Expected result:"
208   cat flist2
209   echo "Actual result:"
210   cat flist1
211   exit 1
212 fi
213 rm -rf "$TESTTMPDIR" out1 out2 xxx flist1 flist2 bind-fonts.conf
214
215 dotest "Different directory content between host and sandbox"
216 prep
217 cp "$FONT1" "$FONTDIR"
218 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
219     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
220 fi
221 $FCCACHE "$FONTDIR"
222 sleep 1
223 ls -1 --color=no "$CACHEDIR"/*cache*> out1
224 stat -c '%n %s %y %z' "$(cat out1)" > stat1
225 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
226 TESTTMP2DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
227 cp "$FONT2" "$TESTTMP2DIR"
228 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
229     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$TESTTMP2DIR"
230 fi
231 sed "s!@FONTDIR@!$TESTTMPDIR/fonts</dir><dir salt="'"'"salt-to-make-different"'"'">$FONTDIR!
232 s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>!
233 s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf
234 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind "$TESTTMP2DIR" "$FONTDIR" --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-match/fc-match"$EXEEXT" -f "%{file}\n" ":foundry=Misc" > xxx
235 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind "$TESTTMP2DIR" "$FONTDIR" --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/test/test-bz106618"$EXEEXT" | sort > flist1
236 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind "$TESTTMP2DIR" "$FONTDIR" --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev find "$TESTTMPDIR"/fonts/ -type f -name '*.pcf' | sort > flist2
237 ls -1 --color=no "$CACHEDIR"/*cache* > out2
238 stat -c '%n %s %y %z' "$(cat out1)" > stat2
239 if cmp stat1 stat2 > /dev/null ; then : ; else
240   echo "*** Test failed: $TEST"
241   echo "cache was created/updated."
242   cat stat1 stat2
243   exit 1
244 fi
245 if grep -v -- "$(cat out1)" out2 > /dev/null ; then : ; else
246   echo "*** Test failed: $TEST"
247   echo "cache wasn't created for dir inside sandbox."
248   cat out1 out2
249   exit 1
250 fi
251 if [ x"$(cat xxx)" != "x$TESTTMPDIR/fonts/4x6.pcf" ]; then
252   echo "*** Test failed: $TEST"
253   echo "file property doesn't point to the new place: $TESTTMPDIR/fonts/4x6.pcf"
254   exit 1
255 fi
256 if cmp flist1 flist2 > /dev/null ; then
257   echo "*** Test failed: $TEST"
258   echo "Missing fonts should be available on sandbox"
259   echo "Expected result:"
260   cat flist2
261   echo "Actual result:"
262   cat flist1
263   exit 1
264 fi
265 rm -rf "$TESTTMPDIR" "$TESTTMP2DIR" out1 out2 xxx flist1 flist2 stat1 stat2 bind-fonts.conf
266
267 dotest "Check consistency of MD5 in cache name"
268 prep
269 mkdir -p "$FONTDIR"/sub
270 cp "$FONT1" "$FONTDIR"/sub
271 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
272     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"/sub
273 fi
274 $FCCACHE "$FONTDIR"
275 sleep 1
276 (cd "$CACHEDIR"; ls -1 --color=no ./*cache*) > out1
277 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
278 mkdir -p "$TESTTMPDIR"/cache.dir
279 # Once font dir is remapped, we could use $FONTDIR as different one in theory.
280 # but we don't use it here and to avoid duplicate entries, set the non-existing
281 # directory here.
282 sed "s!@FONTDIR@!$FONTDIR/a!
283 s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>!
284 s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf
285 $BWRAP --bind / / --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-cache/fc-cache"$EXEEXT" "$TESTTMPDIR"/fonts
286 (cd "$TESTTMPDIR"/cache.dir; ls -1 --color=no ./*cache*) > out2
287 if cmp out1 out2 > /dev/null ; then : ; else
288     echo "*** Test failed: $TEST"
289     echo "cache was created unexpectedly."
290     echo "Before:"
291     cat out1
292     echo "After:"
293     cat out2
294     exit 1
295 fi
296 rm -rf "$TESTTMPDIR" out1 out2 bind-fonts.conf
297
298 dotest "Fallback to uuid"
299 prep
300 cp "$FONT1" "$FONTDIR"
301 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
302     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
303 fi
304 touch -d @"$(stat -c %Y "$FONTDIR")" "$FONTDIR"
305 $FCCACHE "$FONTDIR"
306 sleep 1
307 _cache=$(ls -1 --color=no "$CACHEDIR"/*cache*)
308 _mtime=$(stat -c %Y "$FONTDIR")
309 _uuid=$(uuidgen)
310 _newcache=$(echo "$_cache" | sed "s/\([0-9a-f]*\)\(\-.*\)/$_uuid\2/")
311 mv "$_cache" "$_newcache"
312 echo "$_uuid" > "$FONTDIR"/.uuid
313 touch -d @"$_mtime" "$FONTDIR"
314 (cd "$CACHEDIR"; ls -1 --color=no ./*cache*) > out1
315 TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
316 mkdir -p "$TESTTMPDIR"/cache.dir
317 sed "s!@FONTDIR@!$TESTTMPDIR/fonts!
318 s!@REMAPDIR@!<remap-dir as-path="'"'"$FONTDIR"'"'">$TESTTMPDIR/fonts</remap-dir>!
319 s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf
320 $BWRAP --bind / / --bind "$CACHEDIR" "$TESTTMPDIR"/cache.dir --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-match/fc-match"$EXEEXT" -f ""
321 (cd "$CACHEDIR"; ls -1 --color=no ./*cache*) > out2
322 if cmp out1 out2 > /dev/null ; then : ; else
323     echo "*** Test failed: $TEST"
324     echo "cache was created unexpectedly."
325     echo "Before:"
326     cat out1
327     echo "After:"
328     cat out2
329     exit 1
330 fi
331 rm -rf "$TESTTMPDIR" out1 out2 bind-fonts.conf
332
333 else
334     echo "No bubblewrap installed. skipping..."
335 fi # if [ x"$BWRAP" != "x" -a "x$EXEEXT" = "x" ]
336
337 if [ "x$EXEEXT" = "x" ]; then
338 dotest "sysroot option"
339 prep
340 mkdir -p "$MyPWD"/sysroot/"$FONTDIR"
341 mkdir -p "$MyPWD"/sysroot/"$CACHEDIR"
342 mkdir -p "$MyPWD"/sysroot/"$MyPWD"
343 cp "$FONT1" "$MyPWD"/sysroot/"$FONTDIR"
344 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
345     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$MyPWD"/sysroot/"$FONTDIR"
346 fi
347 cp "$MyPWD"/fonts.conf "$MyPWD"/sysroot/"$MyPWD"/fonts.conf
348 $FCCACHE -y "$MyPWD"/sysroot
349
350 dotest "creating cache file on sysroot"
351 md5=$(printf "%s" "$FONTDIR" | md5sum | sed 's/ .*$//')
352 echo "checking for cache file $md5"
353 if ! ls "$MyPWD/sysroot/$CACHEDIR/$md5"*; then
354   echo "*** Test failed: $TEST"
355   echo "No cache for $FONTDIR ($md5)"
356   ls "$MyPWD"/sysroot/"$CACHEDIR"
357   exit 1
358 fi
359
360 rm -rf "$MyPWD"/sysroot
361
362 dotest "read newer caches when multiple places are allowed to store"
363 prep
364 cp "$FONT1" "$FONT2" "$FONTDIR"
365 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
366     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
367 fi
368 MYCACHEBASEDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
369 MYCACHEDIR="$MYCACHEBASEDIR"/cache.dir
370 MYOWNCACHEDIR="$MYCACHEBASEDIR"/owncache.dir
371 MYCONFIG=$(mktemp "$TMPDIR"/fontconfig.XXXXXXXX)
372
373 mkdir -p "$MYCACHEDIR"
374 mkdir -p "$MYOWNCACHEDIR"
375
376 sed "s!@FONTDIR@!$FONTDIR!
377 s!@REMAPDIR@!!
378 s!@CACHEDIR@!$MYCACHEDIR!" < "$TESTDIR"/fonts.conf.in > my-fonts.conf
379
380 FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCCACHE "$FONTDIR"
381
382 sleep 1
383 cat<<EOF>"$MYCONFIG"
384 <fontconfig>
385   <match target="scan">
386     <test name="file"><string>$FONTDIR/4x6.pcf</string></test>
387     <edit name="pixelsize"><int>8</int></edit>
388   </match>
389 </fontconfig>
390 EOF
391 sed "s!@FONTDIR@!$FONTDIR!
392 s!@REMAPDIR@!<include ignore_missing=\"yes\">$MYCONFIG</include>!
393 s!@CACHEDIR@!$MYOWNCACHEDIR!" < "$TESTDIR"/fonts.conf.in > my-fonts.conf
394
395 if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then
396   old_epoch=${SOURCE_DATE_EPOCH}
397   SOURCE_DATE_EPOCH=$(("$SOURCE_DATE_EPOCH" + 1))
398 fi
399 FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCCACHE -f "$FONTDIR"
400 if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then
401   SOURCE_DATE_EPOCH=${old_epoch}
402 fi
403
404 sed "s!@FONTDIR@!$FONTDIR!
405 s!@REMAPDIR@!<include ignore_missing=\"yes\">$MYCONFIG</include>!
406 s!@CACHEDIR@!$MYCACHEDIR</cachedir><cachedir>$MYOWNCACHEDIR!" < "$TESTDIR"/fonts.conf.in > my-fonts.conf
407
408 {
409     FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCLIST - family pixelsize | sort;
410     echo "=";
411     FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCLIST - family pixelsize | sort;
412     echo "=";
413     FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCLIST - family pixelsize | sort;
414 } > my-out
415 tr -d '\015' <my-out >my-out.tmp; mv my-out.tmp my-out
416 sed -e 's/pixelsize=6/pixelsize=8/g' "$BUILDTESTDIR"/"$EXPECTED" > my-out.expected
417
418 if cmp my-out my-out.expected > /dev/null ; then : ; else
419     echo "*** Test failed: $TEST"
420     echo "*** output is in 'my-out', expected output in 'my-out.expected'"
421     echo "Actual Result"
422     cat my-out
423     echo "Expected Result"
424     cat my-out.expected
425     exit 1
426 fi
427
428 rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" my-fonts.conf my-out my-out.expected
429
430 fi # if [ "x$EXEEXT" = "x" ]
431
432 if [ -x "$BUILDTESTDIR"/test-crbug1004254 ]; then
433     dotest "MT-safe global config"
434     prep
435     curl -s -o "$FONTDIR"/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip
436     (cd "$FONTDIR"; unzip noto.zip)
437     if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
438         touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
439     fi
440     "$BUILDTESTDIR"/test-crbug1004254
441 else
442     echo "No test-crbug1004254: skipped"
443 fi
444
445 if [ "x$EXEEXT" = "x" ]; then
446
447 dotest "empty XDG_CACHE_HOME"
448 prep
449 export XDG_CACHE_HOME=""
450 export old_HOME="$HOME"
451 export temp_HOME=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX)
452 export HOME="$temp_HOME"
453 cp "$FONT1" "$FONT2" "$FONTDIR"
454 if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then
455     touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR"
456 fi
457 echo "<fontconfig><dir>$FONTDIR</dir><cachedir prefix=\"xdg\">fontconfig</cachedir></fontconfig>" > my-fonts.conf
458 FONTCONFIG_FILE="$MyPWD"/my-fonts.conf $FCCACHE "$FONTDIR" || :
459 if [ -d "$HOME"/.cache ] && [ -d "$HOME"/.cache/fontconfig ]; then : ; else
460   echo "*** Test failed: $TEST"
461   echo "No \$HOME/.cache/fontconfig directory"
462   ls -a "$HOME"
463   ls -a "$HOME"/.cache
464   exit 1
465 fi
466
467 export HOME="$old_HOME"
468 rm -rf "$temp_HOME" my-fonts.conf
469 unset XDG_CACHE_HOME
470 unset old_HOME
471 unset temp_HOME
472
473 fi # if [ "x$EXEEXT" = "x" ]
474
475 rm -rf "$FONTDIR" "$CACHEFILE" "$CACHEDIR" "$BASEDIR" "$FONTCONFIG_FILE" out
476
477 TEST=""