From b0a5af1bd2ec8cffd718b437751b7a845c38eee9 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 6 Mar 2023 17:01:38 +0900 Subject: [PATCH] Add another test case for flatpak --- test/run-test.d/functions | 55 ++++++++++++++++ test/run-test.d/remap-flatpak.sh | 104 +++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 test/run-test.d/functions create mode 100644 test/run-test.d/remap-flatpak.sh diff --git a/test/run-test.d/functions b/test/run-test.d/functions new file mode 100644 index 0000000..38e3db9 --- /dev/null +++ b/test/run-test.d/functions @@ -0,0 +1,55 @@ +#! /bin/sh +# -*- sh -*- +# Copyright (C) 2023 fontconfig Authors +# SPDX-License-Identifier: MIT + +set -e + +: "${TMPDIR=/tmp}" + +case "$OSTYPE" in + msys ) MyPWD=$(pwd -W) ;; # On Msys/MinGW, returns a MS Windows style path. + * ) MyPWD=$(pwd) ;; # On any other platforms, returns a Unix style path. +esac + +TESTDIR=${srcdir-"$MyPWD"} +BUILDTESTDIR=${builddir-"$MyPWD"} + +BASEDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +FONTDIR="$BASEDIR"/fonts +CACHEDIR="$BASEDIR"/cache.dir +EXPECTED=${EXPECTED-"out.expected"} + +FCLIST="$LOG_COMPILER ../../fc-list/fc-list$EXEEXT" +FCCACHE="$LOG_COMPILER ../../fc-cache/fc-cache$EXEEXT" +FCMATCH="$LOG_COMPILER ../../fc-match/fc-match$EXEEXT" + +if [ -x "$(command -v bwrap)" ]; then + BWRAP="$(command -v bwrap)" +fi + +FONT1=$TESTDIR/../4x6.pcf +FONT2=$TESTDIR/../8x16.pcf +TEST="" + +clean_exit() { + rc=$? + trap - INT TERM ABRT EXIT + if [ "x$TEST" != "x" ]; then + echo "Aborting from '$TEST' with the exit code $rc" + fi + rm -rf $BASEDIR + exit $rc +} +trap clean_exit INT TERM ABRT EXIT + +prep() { + rm -rf "$CACHEDIR" + rm -rf "$FONTDIR" + mkdir "$FONTDIR" +} + +dotest () { + TEST=$1 + test x"$VERBOSE" = x || echo "Running: $TEST" +} diff --git a/test/run-test.d/remap-flatpak.sh b/test/run-test.d/remap-flatpak.sh new file mode 100644 index 0000000..36d31bd --- /dev/null +++ b/test/run-test.d/remap-flatpak.sh @@ -0,0 +1,104 @@ +#! /bin/sh +# -*- sh -*- +# Copyright (C) 2023 fontconfig Authors +# SPDX-License-Identifier: MIT + +. $(dirname $0)/functions + +dotest "Remap - same family name but different filename" +prep + +TESTRESULT1=$(mktemp "$TMPDIR"/fontconfig.XXXXXXXX) +TESTRESULT2=$(mktemp "$TMPDIR"/fontconfig.XXXXXXXX) +TESTRESULT3=$(mktemp "$TMPDIR"/fontconfig.XXXXXXXX) +TESTFONT1DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTFONT2DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTCACHE1DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTCACHE2DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTBUILD1DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTBUILD2DIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +TESTRUNDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) +mkdir -p "$TESTBUILD1DIR"/build +mkdir -p "$TESTBUILD2DIR"/build +mkdir -p "$TESTRUNDIR"/fonts +mkdir -p "$TESTRUNDIR"/fonts-cache +cp "$FONT1" "$TESTFONT1DIR"/foo.pcf +cp "$FONT1" "$TESTFONT2DIR"/bar.pcf +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTFONT1DIR" +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTFONT1DIR"/* +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTFONT2DIR" +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTFONT2DIR"/* + +cat<<_EOF_>>"$TESTBUILD1DIR"/fonts.conf + + /usr/share/fonts + /usr/lib/fontconfig/cache + +_EOF_ +cat<<_EOF_>>"$TESTBUILD2DIR"/fonts.conf + + /usr/share/fonts + /usr/lib/fontconfig/cache + +_EOF_ +cat<<_EOF_>>"$TESTBUILD2DIR"/bind-fonts.conf + +/usr/share/fonts +$TESTRUNDIR/fonts +/usr/lib/fontconfig/cache +$TESTRUNDIR/fonts-cache + +$TESTRUNDIR/fonts + +_EOF_ + +# Generate host caches +$BWRAP --bind / / --bind "$TESTCACHE1DIR" /usr/lib/fontconfig/cache --bind "$TESTFONT1DIR" /usr/share/fonts --bind "$TESTBUILD1DIR" /usr/share/fontconfig --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD1DIR"/fonts.conf $FCCACHE +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTCACHE1DIR" +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTCACHE1DIR"/* +$BWRAP --bind / / --bind "$TESTCACHE1DIR" /usr/lib/fontconfig/cache --bind "$TESTFONT1DIR" /usr/share/fonts --bind "$TESTBUILD1DIR" /usr/share/fontconfig --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD1DIR"/fonts.conf $FCMATCH Fixed file > "$TESTRESULT1" + +if grep foo.pcf "$TESTRESULT1" > /dev/null; then : ; else + echo "*** Test failed: $TEST" + echo "file property doesn't point to the expected file." + cat "$TESTRESULT1" + exit 1 +fi + +# Generate runtime caches +$BWRAP --bind / / --bind "$TESTCACHE2DIR" /usr/lib/fontconfig/cache --bind "$TESTFONT2DIR" /usr/share/fonts --bind "$TESTBUILD2DIR" /usr/share/fontconfig --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD2DIR"/fonts.conf $FCCACHE +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTCACHE2DIR" +touch -m -t $(date -d @0 +%y%m%d%H%M.%S) "$TESTCACHE2DIR"/* +$BWRAP --bind / / --bind "$TESTCACHE2DIR" /usr/lib/fontconfig/cache --bind "$TESTFONT2DIR" /usr/share/fonts --bind "$TESTBUILD2DIR" /usr/share/fontconfig --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD2DIR"/fonts.conf $FCMATCH Fixed file > "$TESTRESULT2" + +if grep bar.pcf "$TESTRESULT2" > /dev/null; then : ; else + echo "*** Test failed: $TEST" + echo "file property doesn't point to the expected file." + cat "$TESTRESULT2" + exit 1 +fi + +# Ask for fonts on similar environemnt to flatpak +$BWRAP --bind / / --ro-bind "$TESTCACHE2DIR" /usr/lib/fontconfig/cache --ro-bind "$TESTFONT2DIR" /usr/share/fonts --bind "$TESTBUILD2DIR" /usr/share/fontconfig --ro-bind "$TESTRUNDIR" "$TESTRUNDIR" --ro-bind "$TESTCACHE1DIR" "$TESTRUNDIR"/fonts-cache --ro-bind "$TESTFONT1DIR" "$TESTRUNDIR"/fonts --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD2DIR"/bind-fonts.conf $FCMATCH Fixed file > "$TESTRESULT3" +$BWRAP --bind / / --ro-bind "$TESTCACHE2DIR" /usr/lib/fontconfig/cache --ro-bind "$TESTFONT2DIR" /usr/share/fonts --bind "$TESTBUILD2DIR" /usr/share/fontconfig --ro-bind "$TESTRUNDIR" "$TESTRUNDIR" --ro-bind "$TESTCACHE1DIR" "$TESTRUNDIR"/fonts-cache --ro-bind "$TESTFONT1DIR" "$TESTRUNDIR"/fonts --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTBUILD2DIR"/bind-fonts.conf ls $(sed 's/:file=//' "$TESTRESULT3") > /dev/null + +# Check the amount of cache files +if [ $(ls "$TESTCACHE1DIR"|wc -l) == 2 ]; then : ; else + echo "*** Test failed: $TEST" + echo "Too much cache files created at host cache dir." + ls "$TESTCACHE1DIR" + exit 1 +fi +if [ $(ls "$TESTCACHE2DIR"|wc -l) == 2 ]; then : ; else + echo "*** Test failed: $TEST" + echo "Too much cache files created at runtime cache dir." + ls "$TESTCACHE2DIR" + exit 1 +fi + +rm -rf "$TESTFONT1DIR" "$TESTFONT2DIR" "$TESTCACHE1DIR" "$TESTCACHE2DIR" "$TESTBUILD1DIR" "$TESTBUILD2DIR" +rm -f "$TESTRESULT1" "$TESTRESULT2" + +TEST="" + +echo "Success."