summaryrefslogtreecommitdiff
path: root/tests/scripts
diff options
context:
space:
mode:
authorDavid Turner <david@freetype.org>2021-06-15 23:12:57 +0200
committerDavid Turner <david@freetype.org>2021-06-16 10:28:47 +0200
commit6f273f68788265b2bf0a127be68062f5eaccbb1b (patch)
tree15ef2ed0fa826f5961e6d5da508509deea23ce8d /tests/scripts
parentc6fcd61228ea349e76aa4f09442c431308da3262 (diff)
downloadfreetype2-6f273f68788265b2bf0a127be68062f5eaccbb1b.tar.gz
[meson] Add first regression test to FreeType
* tests/README.md: documentation explaining how to build and run the tests with the Meson build. * tests/scripts/download-test-fonts.sh: Simple script to download test font files to the 'tests/data/' folder. * meson.build, meson_options.txt, tests/meson.build: Add 'tests' option to enable building and running the test programs, disabled by default. * tests/issue-1063/main.c: Simple regression test to exhibit issue 1063. * .gitignore: Ignore the content of the tests/data/ folder for now.
Diffstat (limited to 'tests/scripts')
-rwxr-xr-xtests/scripts/download-test-fonts.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/scripts/download-test-fonts.sh b/tests/scripts/download-test-fonts.sh
new file mode 100755
index 000000000..1158f10c5
--- /dev/null
+++ b/tests/scripts/download-test-fonts.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/bash
+# Download test fonts used by the FreeType regression test programs.
+# These will be copied to $FREETYPE/tests/data/
+# Each font file contains an 8-hexchar prefix corresponding to its md5sum
+
+set -e
+
+export LANG=C
+export LC_ALL=C
+
+PROGDIR=$(dirname "$0")
+PROGNAME=$(basename "$0")
+
+# Download a file from a given URL
+#
+# $1: URL
+# $2: Destination directory
+# $3: If not empty, destination file name. Default is to take
+# the URL's basename.
+#
+download_file () {
+ local URL=$1
+ local DST_DIR=$2
+ local DST_FILE=$3
+ if [[ -z "$DST_FILE" ]]; then
+ DST_FILE=$(basename "$URL")
+ fi
+ echo "URL: $URL"
+ wget -q -O "$DST_DIR/$DST_FILE" "$URL"
+}
+
+# $1: URL
+# $2: Destination directory
+# $3+: Optional file list, otherwise the full archive is extracted to $2
+download_and_extract_zip () {
+ local URL=$1
+ local DST_DIR=$2
+ shift
+ shift
+ TEMP_DST_DIR=$(mktemp -d)
+ TEMP_DST_NAME="a.zip"
+ download_file "$URL" "$TEMP_DST_DIR" "$TEMP_DST_NAME"
+ unzip -qo "$TEMP_DST_DIR/$TEMP_DST_NAME" -d "$DST_DIR" "$@"
+ rm -rf "$TEMP_DST_DIR"
+}
+
+# $1: File path
+# $2: Expected md5sum
+md5sum_check () {
+ local FILE=$1
+ local EXPECTED=$2
+ local HASH=$(md5sum "$FILE" | cut -d" " -f1)
+ if [[ "$EXPECTED" != "$HASH" ]]; then
+ echo "$FILE: Invalid md5sum $HASH expected $EXPECTED"
+ return 1
+ fi
+}
+
+INSTALL_DIR=$(cd $PROGDIR/.. && pwd)/data
+
+mkdir -p "$INSTALL_DIR"
+
+# See https://gitlab.freedesktop.org/freetype/freetype/-/issues/1063
+download_and_extract_zip "https://github.com/python-pillow/Pillow/files/6622147/As.I.Lay.Dying.zip" "$INSTALL_DIR"
+mv "$INSTALL_DIR/As I Lay Dying.ttf" "$INSTALL_DIR/As.I.Lay.Dying.ttf"
+md5sum_check "$INSTALL_DIR/As.I.Lay.Dying.ttf" e153d60e66199660f7cfe99ef4705ad7