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