Skip to content

Commit

Permalink
src/tests: Add xkb-latin-layouts case
Browse files Browse the repository at this point in the history
BUG=#2404
  • Loading branch information
fujiwarat committed May 25, 2022
1 parent bca7bf0 commit 16df64e
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -74,6 +74,6 @@ jobs:
--with-ucd-dir='/usr/share/unicode'
--enable-install-tests
"
DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress"
DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress xkb-latin-layouts"
VERBOSE=1
DESTDIR="$HOME/build/$USER/dest"
26 changes: 19 additions & 7 deletions src/tests/Makefile.am
Expand Up @@ -41,8 +41,9 @@ prog_ldadd =\
$(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \
$(NULL)

noinst_PROGRAMS = $(TESTS)
TESTS = \
noinst_PROGRAMS = $(TESTS_C)
noinst_SCRIPTS = $(TESTS_SCRIPT)
TESTS_C = \
ibus-bus \
ibus-config \
ibus-configservice \
Expand All @@ -56,16 +57,25 @@ TESTS = \
ibus-util \
$(NULL)

TESTS_SCRIPT = \
xkb-latin-layouts \
$(NULL)

TESTS = \
$(TESTS_C) \
$(TESTS_SCRIPT) \
$(NULL)

CLEANFILES =

if ENABLE_ENGINE
TESTS += ibus-engine-switch
TESTS_C += ibus-engine-switch
endif

if ENABLE_GTK3
TESTS += ibus-compose
TESTS_C += ibus-compose
if ENABLE_XTEST
TESTS += ibus-keypress
TESTS_C += ibus-keypress
endif
endif

Expand Down Expand Up @@ -99,9 +109,10 @@ CLEANFILES += \
org.freedesktop.IBus.Desktop.Testing.desktop \
$(NULL)

test_execs_PROGRAMS = $(TESTS)
test_execs_PROGRAMS = $(TESTS_C)
test_execs_SCRIPTS = $(TESTS_SCRIPT)
if ENABLE_GTK3
test_execs_SCRIPTS = ibus-compose-locales
test_execs_SCRIPTS += ibus-compose-locales
CLEANFILES += \
ibus-compose-locales \
$(NULL)
Expand Down Expand Up @@ -138,6 +149,7 @@ ibus-desktop-testing-runner: ibus-desktop-testing-runner.in

EXTRA_DIST = \
$(test_metas_in) \
$(TESTS_SCRIPT) \
runtest \
ibus-compose.emoji \
ibus-compose.env \
Expand Down
1 change: 1 addition & 0 deletions src/tests/runtest
Expand Up @@ -35,6 +35,7 @@ ibus-engine-switch
ibus-compose
ibus-keypress
test-stress
xkb-latin-layouts
"
IBUS_SCHEMA_FILE='org.freedesktop.ibus.gschema.xml'
GTK_QUERY_MODULE=gtk-query-immodules-3.0-32
Expand Down
130 changes: 130 additions & 0 deletions src/tests/xkb-latin-layouts
@@ -0,0 +1,130 @@
#!/bin/bash

PROGNAME=`basename $0`
VERSION=0.1
# POSIX sh has no 'echo -e'
: ${ECHO:='/usr/bin/echo'}
TMPDIR=
INSTALLED_SCHEMAS_DIR=


usage()
{
$ECHO -e \
"This test runs setxkbmap command for gsettings xkb-latin-layouts value\n" \
"$PROGNAME [OPTIONS…]\n" \
"\n" \
"OPTIONS:\n" \
"-h, --help This help\n" \
"-v, --version Show version\n" \
"-D, --schemasdir=DIR Load the latest schema file in DIR\n" \
""
}


parse_args()
{
# This is GNU getopt. "sudo port getopt" in BSD?
ARGS=`getopt -o hD:Tv --long \
help,schemasdir:,tap,version\
-- "$@"`;
eval set -- "$ARGS"
while [ 1 ] ; do
case "$1" in
-h | --help ) usage; exit 0;;
-D | --schemasdir ) INSTALLED_SCHEMAS_DIR="$2"; shift 2;;
-T | --tap ) shift;; # ignore the option
-v | --version ) $ECHO -e "$VERSION"; exit 0;;
-- ) shift; break;;
* ) shift;;
esac
done
}


init()
{
set -e

# gnome-continuous doesn't have a machine-id set, which
# breaks dbus-launch. There's dbus-run-session which is
# better, but not everyone has it yet.
export DBUS_FATAL_WARNINGS=0
export TMPDIR=$(mktemp -d --tmpdir="$PWD")
export XDG_CONFIG_HOME="$TMPDIR/config"
export XDG_CACHE_HOME="$TMPDIR/cache"
export GSETTINGS_SCHEMA_DIR="$TMPDIR/schemas"
mkdir -p $XDG_CONFIG_HOME $XDG_CACHE_HOME $GSETTINGS_SCHEMA_DIR

eval `dbus-launch --sh-syntax`

trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID; setxkbmap -layout us' ERR

# in case that schema is not installed on the system
glib-compile-schemas --targetdir "$GSETTINGS_SCHEMA_DIR" "$INSTALLED_SCHEMAS_DIR"
}


finit()
{
# dbus-launch and gsettings run /usr/lib*/gvfsd-fuse $TMPDIR/cache/gvfs -f
# via systemd since gvfs 1.45.90 in Fedora 33
# and rm $TMPDIR could be failed until umount would be called.
if [ -d $TMPDIR/cache/gvfs ] ; then
umount $TMPDIR/cache/gvfs
fi
rm -rf $TMPDIR

kill $DBUS_SESSION_BUS_PID
exit 0
}


test_xkb_keymaps()
{
# Loop over top level schemas since "gsettings list-recursively" only
# looks for direct children.
xkb_latin_layouts=`gsettings get org.freedesktop.ibus.general xkb-latin-layouts`
while read keymap ; do
eval keymap="$keymap"
HAS_VARIANT=$($ECHO "$keymap" | grep '(' 2> /dev/null) ||:
if [ "x$HAS_VARIANT" != "x" ] ; then
layout=$($ECHO "$keymap" | sed -e 's/\([^(]*\)([^)]*)/\1/')
variant=$($ECHO "$keymap" | sed -e 's/[^(]*(\([^)]*\))/\1/')
$ECHO setxkbmap -layout $layout -variant $variant
setxkbmap -layout $layout -variant $variant
else
layout="$keymap"
$ECHO setxkbmap -layout $layout
setxkbmap -layout $layout
fi
if [ $? -ne 0 ] ; then
$ECHO "Error in layout $layout variant $variant"
setxkbmap -layout us
exit 1
fi
done << EOF_READ_XKB
`$ECHO $xkb_latin_layouts | sed -e 's/^\[//' -e 's/\]$//' | tr "," "\n"`
EOF_READ_XKB

setxkbmap -layout us
}


main()
{
parse_args "$@"

if [ x"$INSTALLED_SCHEMAS_DIR" != x ] ; then
init
fi

test_xkb_keymaps

if [ x"$INSTALLED_SCHEMAS_DIR" != x ] ; then
finit
fi
}


main "$@"

0 comments on commit 16df64e

Please sign in to comment.