Compare commits

...

No commits in common. "c8s" and "c9s" have entirely different histories.
c8s ... c9s

17 changed files with 644 additions and 21 deletions

View File

@ -1,2 +1,2 @@
dd95f8fc0c00af1acecd1a21a1950b98add85e9c SOURCES/bitmap-fonts-0.3.tar.bz2
3ceafc9ef123b16f0e92ce19ec83ea48b2a54232 SOURCES/fixfont-3.5.tar.bz2
dd95f8fc0c00af1acecd1a21a1950b98add85e9c bitmap-fonts-0.3.tar.bz2
3ceafc9ef123b16f0e92ce19ec83ea48b2a54232 fixfont-3.5.tar.bz2

5
.gitignore vendored
View File

@ -1,2 +1,3 @@
SOURCES/bitmap-fonts-0.3.tar.bz2
SOURCES/fixfont-3.5.tar.bz2
bitmap-fonts-0.3.tar.bz2
fixfont.tar.bz2
fixfont-3.5.tar.bz2

View File

@ -7,7 +7,7 @@ terminals.
Name: bitmap-fonts
Version: 0.3
Release: 28%{?dist}
Release: 40%{?dist}
License: GPLv2 and MIT and Lucida
Source0: bitmap-fonts-%{version}.tar.bz2
Source1: fixfont-3.5.tar.bz2
@ -16,27 +16,28 @@ Source3: 66-bitmap-console.conf
Source4: 66-bitmap-fangsongti.conf
Source5: 66-bitmap-fixed.conf
Source6: 66-bitmap-lucida-typewriter.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
Group: User Interface/X
Summary: Selected set of bitmap fonts
BuildRequires: xorg-x11-font-utils
BuildRequires: bdftopcf fonttosfnt
BuildRequires: fontpackages-devel
BuildRequires: python3
BuildRequires: /usr/bin/ftdump
BuildRequires: make
%description
%common_desc
%package -n %{fontname}-fonts-compat
Summary: Compatibility files of bitmap-font families
Group: User Interface/X
Provides: bitmap-fonts = %{version}-%{release}
Summary: Compatibility files of bitmap-font families
Provides: bitmap-fonts = %{version}-%{release}
Requires: %{fontname}-lucida-typewriter-fonts = %{version}-%{release}
Requires: %{fontname}-fangsongti-fonts = %{version}-%{release}
Requires: %{fontname}-console-fonts = %{version}-%{release}
Requires: %{fontname}-fixed-fonts = %{version}-%{release}
Requires: ucs-miscfixed-fonts
Obsoletes: bitmap-fonts < %{version}-%{release}
Obsoletes: bitmap-fonts < %{version}-%{release}
Conflicts: %{fontname}-opentype-fonts-compat
%description -n %{fontname}-fonts-compat
%common_desc
@ -44,16 +45,44 @@ Meta-package for installing all font families of bitmap.
%files -n %{fontname}-fonts-compat
%package -n %{fontname}-opentype-fonts-compat
Summary: Compatibility files of bitmap-font families (opentype version)
Requires: %{fontname}-lucida-typewriter-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-fangsongti-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-console-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-fixed-opentype-fonts = %{version}-%{release}
Requires: ucs-miscfixed-opentype-fonts
Conflicts: %{fontname}-fonts-compat
%description -n %{fontname}-opentype-fonts-compat
%common_desc
Meta-package for installing all font families of opentype bitmap.
%files -n %{fontname}-opentype-fonts-compat
%package -n bitmap-lucida-typewriter-fonts
Summary: Selected CJK bitmap fonts for Anaconda
Requires: fontpackages-filesystem
Provides: %{name}-cjk = %{version}-%{release}
License: Lucida
Conflicts: bitmap-lucida-typewriter-opentype-fonts
%description -n bitmap-lucida-typewriter-fonts
%common_desc
%_font_pkg -n lucida-typewriter -f %{fontconf}-lucida-typewriter.conf lut*
%_font_pkg -n lucida-typewriter -f %{fontconf}-lucida-typewriter.conf lut*.pcf.gz
%doc LU_LEGALNOTICE
%package -n bitmap-lucida-typewriter-opentype-fonts
Summary: Selected CJK bitmap fonts for Anaconda (opentype version)
Requires: fontpackages-filesystem
License: Lucida
Conflicts: bitmap-lucida-typewriter-fonts
%description -n bitmap-lucida-typewriter-opentype-fonts
%common_desc
%_font_pkg -n lucida-typewriter-opentype -f %{fontconf}-lucida-typewriter.conf lut*.otb
%doc LU_LEGALNOTICE
%package -n bitmap-fangsongti-fonts
@ -61,35 +90,72 @@ Summary: Selected CJK bitmap fonts for Anaconda
Requires: fontpackages-filesystem
Provides: %{name}-cjk = %{version}-%{release}
License: MIT
Conflicts: bitmap-fangsongti-opentype-fonts
%description -n %{fontname}-fangsongti-fonts
bitmap-fonts-cjk package contains bitmap fonts used by Anaconda. They are
selected from the xorg packages, and the font encoding are converted from
native encoding to ISO10646. They are only intended to be used in Anaconda.
%_font_pkg -n fangsongti -f %{fontconf}-fangsongti.conf fangsongti*
%_font_pkg -n fangsongti -f %{fontconf}-fangsongti.conf fangsongti*.pcf.gz
%doc LICENSE
%package -n bitmap-fangsongti-opentype-fonts
Summary: Selected CJK bitmap fonts for Anaconda (opentype version)
Requires: fontpackages-filesystem
License: MIT
Conflicts: bitmap-fangsongti-fonts
%description -n %{fontname}-fangsongti-opentype-fonts
%common_desc
%_font_pkg -n fangsongti-opentype -f %{fontconf}-fangsongti.conf fangsongti*.otb
%doc LICENSE
%package -n bitmap-console-fonts
Summary: Selected set of bitmap fonts
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-console-opentype-fonts
%description -n %{fontname}-console-fonts
%common_desc
%_font_pkg -n console -f %{fontconf}-console.conf console8x16*
%_font_pkg -n console -f %{fontconf}-console.conf console8x16*.pcf.gz
%package -n bitmap-console-opentype-fonts
Summary: Selected set of bitmap fonts (opentype version)
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-console-fonts
%description -n %{fontname}-console-opentype-fonts
%common_desc
%_font_pkg -n console-opentype -f %{fontconf}-console.conf console8x16*.otb
%package -n bitmap-fixed-fonts
Summary: Selected set of bitmap fonts
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-fixed-opentype-fonts
%description -n %{fontname}-fixed-fonts
%common_desc
%_font_pkg -n fixed -f %{fontconf}-fixed.conf console9*
%_font_pkg -n fixed -f %{fontconf}-fixed.conf console9*.pcf.gz
%package -n bitmap-fixed-opentype-fonts
Summary: Selected set of bitmap fonts (opentype version)
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-fixed-fonts
%description -n %{fontname}-fixed-opentype-fonts
%common_desc
%_font_pkg -n fixed-opentype -f %{fontconf}-fixed.conf console9*.otb
%prep
%setup -q -a 1
@ -104,9 +170,9 @@ rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
cd fixfont-3.5
pushd fixfont-3.5
make install DESTDIR=$RPM_BUILD_ROOT
popd
mv $RPM_BUILD_ROOT/usr/share/fonts/bitmap-fonts %{buildroot}%{_fontdir}
@ -114,6 +180,24 @@ rm %{buildroot}%{_fontdir}/[0-9]*.pcf
rm %{buildroot}%{_fontdir}/console8x8.pcf
rm README
# Convert to OpenType Bitmap Font
rm [0-9]*.bdf fixfont-3.5/[0-9]*.bdf
for bdf in `ls *.bdf`;
do fonttosfnt -b -c -g 2 -m 2 -o ${bdf%%bdf}otb $bdf;
done
install -m 0644 -p *.otb %{buildroot}%{_fontdir}
pushd fixfont-3.5
for bdf in `ls *.bdf`;
do fonttosfnt -b -c -g 2 -m 2 -o ${bdf%%bdf}otb $bdf;
done
# For console9x15.otb
fonttosfnt -b -c -g 2 -m 2 -o console9x15.otb console9x15.pcf
install -m 0644 -p *.otb %{buildroot}%{_fontdir}
popd
gzip %{buildroot}%{_fontdir}/*.pcf
install -m 0755 -d %{buildroot}%{_fontconfig_templatedir} \
@ -142,10 +226,46 @@ for fconf in %{fontconf}-console.conf \
done
%clean
rm -rf $RPM_BUILD_ROOT
%changelog
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.3-40
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 0.3-39
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Mar 02 2021 Parag Nemade <pnemade AT redhat DOT com> - 0.3-38
- Resolves: rhbz#1933563 - Don't BuildRequires xorg-x11-font-utils
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-37
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Dec 29 2020 Peng Wu <pwu@redhat.com> - 0.3-36
- Rebuilt with fonttosfnt 1.2.1
* Fri Sep 4 2020 Peng Wu <pwu@redhat.com> - 0.3-35
- Use BDF fonts for OpenType conversion
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Feb 6 2020 Peng Wu <pwu@redhat.com> - 0.3-33
- Provide OpenType Bitmap fonts
- Use bitmapfonts2otb.py to combine bitmap fonts
- Add bitmap-*-opentype-fonts sub packages
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.3-28
- Escape macros in %%changelog

62
bitmapfonts2otb.py Normal file
View File

@ -0,0 +1,62 @@
#!/usr/bin/python3
# Automatically group the font files by family names and style names,
# and assume each bitmap font only contains one font face.
#
# Generates one otb file per (family name, style name) tuple, named
# after the tuple.
#
# This tool requires ftdump and fonttosfnt.
# Written by Peng Wu as
# https://pwu.fedorapeople.org/fonts/convertbitmap/convertfont.py
# Some changes by Hans Ulrich Niedermann.
import sys
import subprocess
usage = '''
bitmapfonts2otb.py [BITMAPFONTFILE]...
'''
fontnames = dict()
# get font family name and style name by ftdump
def getfullname(fontname):
output = subprocess.check_output(['ftdump', fontname])
output = output.decode('utf8')
# only contain one font face
assert not 'Face number: 1' in output
result = {}
for row in output.split('\n'):
if ':' in row:
key, value = row.split(': ')
result[key.strip()] = value.strip()
familyname, stylename = result['family'], result['style']
if stylename == 'Regular':
return familyname
else:
return familyname + ' ' + stylename
def generate_fonts():
for fullname, filenames in fontnames.items():
outputfilename = fullname.replace(' ', '-') + '.otb'
argv = ['fonttosfnt', '-b', '-c', '-g', '2', '-m', '2', '-o', outputfilename ]
argv.extend(filenames)
print(outputfilename)
print(' '.join(argv))
print(subprocess.check_output(argv).decode('utf8'))
if __name__ == '__main__':
for bitmapfontname in sys.argv[1:]:
fullname = getfullname(bitmapfontname)
if fullname in fontnames:
fontnames[fullname].append(bitmapfontname)
else:
fontnames[fullname] = [bitmapfontname]
generate_fonts()

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

2
sources Normal file
View File

@ -0,0 +1,2 @@
f07548f9668f178e1a6f6ae39d595c8c bitmap-fonts-0.3.tar.bz2
008073dee211f94105b2ff2790aa45dc fixfont-3.5.tar.bz2

View File

@ -0,0 +1,7 @@
---
role_pkgs_req:
- fontconfig
- fontconfig-devel
- pkg-config
- rsync

View File

@ -0,0 +1,153 @@
#! /bin/bash -efu
debug() {
if [ -n "$DEBUG" ]; then
echo "$*" >&2
fi
}
msg_usage() {
cat <<_EOF_
Run family test.
Usage:
$PROG <options>
Options:
-h, --help Display this help and exit
-v, --verbose Turn on debug
-l, --lang=LANG Test LANG language coverage (default: en)
-f, --family=FILE Set a family name supposed to be assigned for alias.
-g, --alias=STR Set an alias name. (default: sans-serif)
-a, --artifactsdir=DIR Set environment dir to store artifacts
-k, --package=NAME Set a package name for fonts.
_EOF_
}
PROG="${PROG:-${0##*/}}"
DEBUG="${DEBUG:-}"
OPT_LANG="${OPT_LANG:-en}"
OPT_FAMILY="${OPT_FAMILY:-}"
OPT_ARTIFACTS_DIR="${OPT_ARTIFACTS_DIR:-}"
OPT_ALIAS="${OPT_ALIAS:-sans-serif}"
OPT_PACKAGE="${OPT_PACKAGE:-}"
opt=$(getopt -n "$0" --options "hvl:f:t:a:g:k:" --longoptions "help,verbose,lang:,family:,test:,artifactsdir:,alias:,package:" -- "$@")
eval set -- "$opt"
while [[ $# -gt 0 ]]; do
case "$1" in
-k|--package)
OPT_PACKAGE="$2"
shift 2
;;
-g|--alias)
OPT_ALIAS="$2"
shift 2
;;
-a|--artifactsdir)
OPT_ARTIFACTS_DIR="$2"
shift 2
;;
-f|--family)
OPT_FAMILY="$2"
shift 2
;;
-l|--lang)
OPT_LANG="$2"
shift 2
;;
-v|--verbose)
DEBUG="-v"
shift
;;
-h|--help)
msg_usage
exit 0
;;
--)
shift
;;
*)
msg_usage
exit 1
esac
done
if [ -z "$OPT_ARTIFACTS_DIR" ] || [ -z "$OPT_LANG" ] || [ -z "$OPT_FAMILY" ]; then
echo "Use: $PROG -h for help."
exit 0
fi
debug "Alias: $OPT_ALIAS"
debug "Family: $OPT_FAMILY"
debug "Lang: $OPT_LANG"
debug "Artifacts dir: $OPT_ARTIFACTS_DIR"
debug "Package name: $OPT_PACKAGE"
STR_TEST_DASHED=$(echo "${OPT_PACKAGE}_${OPT_ALIAS}" | sed -e 's/\//-/g' -e 's/ /-/g')
debug "Log file: $STR_TEST_DASHED.log"
clean_exit() {
rc=$?;
trap - SIGINT SIGTERM SIGABRT EXIT
echo "Run test $OPT_ALIAS: done."
for pid in $(ps -o pid --no-headers --ppid $$); do
if [ -n "$(ps -p $pid -o pid=)" ]; then
kill -s HUP $pid
fi
done
local log_file_name="$STR_TEST_DASHED.log"
local log_file_path="$OPT_ARTIFACTS_DIR/$log_file_name"
local status
if [[ $rc -eq 127 ]]; then
status="ERROR"
elif grep -q "RESULT: WARN" "$log_file_path"; then
status="ERROR"
elif grep -q "RESULT: FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "RESULT: PASS" "$log_file_path"; then
status="PASS"
elif grep -q "FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "PASS" "$log_file_path"; then
status="PASS"
else
status="ERROR"
fi
echo "$status $OPT_ALIAS" >> "$OPT_ARTIFACTS_DIR/test.log"
mv "$log_file_path" "$OPT_ARTIFACTS_DIR/${status}_${log_file_name}"
local results="$OPT_ARTIFACTS_DIR/results.yml"
local result=$(echo $status | tr '[:upper:]' '[:lower:]')
test -f "$results" || echo 'results:' > "$results"
echo "- {result: $result, test: $OPT_ALIAS}" >> "$results"
exit 0
}
trap clean_exit SIGINT SIGTERM SIGABRT EXIT
cachedir=`pkg-config --variable cachedir fontconfig`
tmpconfd=`mktemp --tmpdir -d fontsci.XXXXXXXX`
conf=$(for i in `rpm -ql $OPT_PACKAGE | grep conf.d`; do
echo "<include>$i</include>"
done)
cat <<_EOF_> $tmpconfd/fonts.conf
<fontconfig>
<dir>/usr/share/fonts</dir>
$conf
<cachedir>$cachedir</cachedir>
</fontconfig>
_EOF_
debug "Config: `cat $tmpconfd/fonts.conf`"
mkdir -p "$OPT_ARTIFACTS_DIR"
export OUTPUTFILE="$(realpath "$OPT_ARTIFACTS_DIR")/$STR_TEST_DASHED-out.log"
logfile_stdout="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED.log"
logfile_stderr="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED-err.log"
exec 3>&1 4>&2 1> >(tee -a "$logfile_stdout" >&3) 2> >(tee -a "$logfile_stderr" >&4)
debug "Check family assignment"
res=`FONTCONFIG_FILE=$tmpconfd/fonts.conf fc-match -f "%{family[0]}" :family=$OPT_ALIAS:lang=$OPT_LANG`
if [ "x$res" = "x$OPT_FAMILY" ]; then
echo "RESULT: PASS: $OPT_FAMILY was assigned to $OPT_ALIAS as expected"
else
echo "RESULT: FAIL: $OPT_FAMILY wasn't assigned to $OPT_ALIAS (actual result: $res)"
fi
rm -rf $tmpconfd

View File

@ -0,0 +1,197 @@
#! /bin/bash -efu
debug() {
if [ -n "$DEBUG" ]; then
echo "$*" >&2
fi
}
msg_usage() {
cat <<_EOF_
Run language coverage test.
Usage:
$PROG <options>
Options:
-h, --help Display this help and exit
-v, --verbose Turn on debug
-l, --lang=LANG Test LANG language coverage (default: en)
-p, --path=PATH Test fonts on PATH
-n, --name=NAME Set NAME to store a log file.
-a, --artifactsdir=DIR test environment dir to store artifacts
-e, --exclude=FILE Exclude FILE to check.
-i, --include=FILE Include File to check.
_EOF_
}
PROG="${PROG:-${0##*/}}"
DEBUG="${DEBUG:-}"
OPT_LANG="${OPT_LANG:-en}"
OPT_PATH="${OPT_PATH:-}"
OPT_ARTIFACTS_DIR="${OPT_ARTIFACTS_DIR:-}"
OPT_EXCLUDE=()
OPT_INCLUDE=()
OPT_NAME="${OPT_NAME:-}"
opt=$(getopt -n "$0" --options "hvl:p:n:a:e:i:" --longoptions "help,verbose,lang:,path:,name:,artifactsdir:,exclude:,include:" -- "$@")
eval set -- "$opt"
while [[ $# -gt 0 ]]; do
case "$1" in
-n|--name)
OPT_NAME="$2"
shift 2
;;
-i|--include)
OPT_INCLUDE+=("$2")
shift 2
;;
-e|--exclude)
OPT_EXCLUDE+=("$2")
shift 2
;;
-a|--artifactsdir)
OPT_ARTIFACTS_DIR="$2"
shift 2
;;
-p|--path)
OPT_PATH="$2"
shift 2
;;
-l|--lang)
OPT_LANG="$2"
shift 2
;;
-v|--verbose)
DEBUG="-v"
shift
;;
-h|--help)
msg_usage
exit 0
;;
--)
shift
;;
*)
msg_usage
exit 1
esac
done
if [ -z "$OPT_ARTIFACTS_DIR" ] || [ -z "$OPT_LANG" ] || [ -z "$OPT_PATH" ]; then
echo "Use: $PROG -h for help."
exit 0
fi
expand_regex() {
local e ret=()
local path="$1"
shift
(cd $path;
for e; do
debug "$e"
set +f
local x=$(find -regextype posix-egrep -regex "./$e" -print|sed -e 's,^\./,,g')
ret+=($x)
set -f
echo ${ret[@]}
done)
echo ${ret[@]}
}
OPT_INCLUDE=($(expand_regex $OPT_PATH ${OPT_INCLUDE[@]}))
OPT_EXCLUDE=($(expand_regex $OPT_PATH ${OPT_EXCLUDE[@]}))
debug "Path: $OPT_PATH"
debug "Lang: $OPT_LANG"
debug "Artifacts dir: $OPT_ARTIFACTS_DIR"
debug "Exclude: ${OPT_EXCLUDE[@]}"
debug "Include: ${OPT_INCLUDE[@]}"
STR_TEST_DASHED=$(echo "${OPT_NAME:-${OPT_LANG}_${OPT_PATH}}" | sed -e 's/\//-/g')
clean_exit() {
rc=$?;
trap - SIGINT SIGTERM SIGABRT EXIT
echo "Run test $OPT_PATH: done."
for pid in $(ps -o pid --no-headers --ppid $$); do
if [ -n "$(ps -p $pid -o pid=)" ]; then
kill -s HUP $pid
fi
done
local log_file_name="$STR_TEST_DASHED.log"
local log_file_path="$OPT_ARTIFACTS_DIR/$log_file_name"
local status
if [[ $rc -eq 127 ]]; then
status="ERROR"
elif grep -q "RESULT: WARN" "$log_file_path"; then
status="ERROR"
elif grep -q "RESULT: FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "RESULT: PASS" "$log_file_path"; then
status="PASS"
elif grep -q "FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "PASS" "$log_file_path"; then
status="PASS"
else
status="ERROR"
fi
echo "$status $OPT_PATH" >> "$OPT_ARTIFACTS_DIR/test.log"
mv "$log_file_path" "$OPT_ARTIFACTS_DIR/${status}_${log_file_name}"
local results="$OPT_ARTIFACTS_DIR/results.yml"
local result=$(echo $status | tr '[:upper:]' '[:lower:]')
test -f "$results" || echo 'results:' > "$results"
echo "- {result: $result, test: $OPT_PATH}" >> "$results"
exit 0
}
trap clean_exit SIGINT SIGTERM SIGABRT EXIT
mkdir -p "$OPT_ARTIFACTS_DIR"
export OUTPUTFILE="$(realpath "$OPT_ARTIFACTS_DIR")/$STR_TEST_DASHED-out.log"
logfile_stdout="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED.log"
logfile_stderr="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED-err.log"
exec 3>&1 4>&2 1> >(tee -a "$logfile_stdout" >&3) 2> >(tee -a "$logfile_stderr" >&4)
contains() {
local e match="$1"
shift
for e; do [[ "$e" == "$match" ]] && return 1; done
return 0
}
debug "Check language coverage"
set +f
for i in `find $OPT_PATH -regex '.*/*\.\(t1\)?\(ttf\)?\(otf\)?\(ttc\)?\(pcf.*\)?\(pfa\)?'`; do
set -f
debug "$i"
if test -f $i; then
n=`basename $i`
set +e
contains "$n" "${OPT_EXCLUDE[@]}"
ret=$?
set -e
if [ $ret -eq 1 ]; then
debug "ignoring $i"
continue
fi
if [ ${#OPT_INCLUDE[@]} -ne 0 ]; then
set +e
contains "$n" "${OPT_INCLUDE[@]}"
ret=$?
set -e
if [ $ret -eq 0 ]; then
debug "$i isn't targeted file"
continue
fi
fi
debug " $i"
res=`fc-validate -l $OPT_LANG $i`
if echo $res | grep -q Missing; then
echo "RESULT: FAIL: $i doesn't satisfy $OPT_LANG language coverage."
else
echo "RESULT: PASS: $i satisfy $OPT_LANG language coverage."
fi
fi
done

View File

@ -0,0 +1,4 @@
---
dependencies:
- role: str-common-init

View File

@ -0,0 +1,40 @@
---
- block:
- name: language coverage
script: run-lang-coverage-test --lang "{{ item }}" --path "{{ path_prefix }}" --artifactsdir "{{ remote_artifacts }}" {{ "" if coverage.values is not defined or coverage[item].name is not defined else "--name " + coverage[item].name }} {{ "" if coverage.values is not defined or coverage[item].exclude is not defined else '--exclude "' + (coverage[item].exclude | join('" --exclude "')) + '"'}} {{ "" if coverage.values is not defined or coverage[item].include is not defined else '--include "' + (coverage[item].include | join('" --include "')) + '"'}}
with_items:
- "{{ coverage if coverage.keys is not defined else coverage.keys()|list }}"
- name: generic family assignment
when: families is defined
script: run-family-test --lang {{ item.lang }} --family '{{ item.family }}' --alias {{ item.alias }} --artifactsdir {{ remote_artifacts }} --package {{ package if item.package is not defined else item.package }}
with_items:
- "{{ families }}"
- name: Check the results
shell: |
log="{{ remote_artifacts }}/test.log"
if [ ! -f "$log" ]; then
echo ERROR
echo "Test results not found." 1>&2
elif grep ^ERROR "$log" 1>&2; then
echo ERROR
elif grep ^FAIL "$log" 1>&2; then
echo FAIL
elif grep -q ^PASS "$log"; then
echo PASS
else
echo ERROR
echo "No test results found." 1>&2
fi
register: test_results
- name: Set role result
set_fact:
role_result: "{{ test_results.stdout }}"
role_message: "{{ test_results.stderr|d('test execution error.') }}"
role_result_failed: "{{ test_results.stdout != 'PASS' }}"
role_result_msg: "{{ test_results.stderr|d('test execution error.') }}"
- include_role:
name: str-common-final

31
tests/tests.yml Normal file
View File

@ -0,0 +1,31 @@
- hosts: localhost
tags:
- classic
become: yes
roles:
- role: custom-test-fonts
required_packages:
- bitmap-console-fonts
- bitmap-fangsongti-fonts
- bitmap-fixed-fonts
- bitmap-lucida-typewriter-fonts
path_prefix: /usr/share/fonts/bitmap
coverage:
en:
families:
- lang: en
alias: monospace
family: Console
package: bitmap-console-fonts
- lang: en
alias: monospace
family: Fangsong ti
package: bitmap-fangsongti-fonts
- lang: en
alias: monospace
family: Fixed
package: bitmap-fixed-fonts
- lang: en
alias: monospace
family: LucidaTypewriter
package: bitmap-lucida-typewriter-fonts