test: Exercise compiling from components
This could probably use a lot more real world test cases, but it does the job for now.master
parent
a2e597675b
commit
713c8f418f
|
@ -1,3 +1,4 @@
|
||||||
*.log
|
*.log
|
||||||
|
namescomp
|
||||||
rulescomp
|
rulescomp
|
||||||
xkey
|
xkey
|
||||||
|
|
|
@ -3,8 +3,8 @@ AM_CFLAGS = $(X11_CFLAGS) $(CWARNFLAGS)
|
||||||
|
|
||||||
TESTS_ENVIRONMENT = $(SHELL)
|
TESTS_ENVIRONMENT = $(SHELL)
|
||||||
|
|
||||||
check_PROGRAMS = xkey rulescomp
|
check_PROGRAMS = xkey namescomp rulescomp
|
||||||
TESTS = xkey.sh rulescomp.sh
|
TESTS = xkey.sh namescomp.sh rulescomp.sh
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -f *.log
|
rm -f *.log
|
||||||
|
@ -14,3 +14,6 @@ xkey_LDADD = $(top_builddir)/src/libxkbcommon.la
|
||||||
|
|
||||||
rulescomp_SOURCES = rulescomp.c
|
rulescomp_SOURCES = rulescomp.c
|
||||||
rulescomp_LDADD = $(top_builddir)/src/libxkbcommon.la
|
rulescomp_LDADD = $(top_builddir)/src/libxkbcommon.la
|
||||||
|
|
||||||
|
namescomp_SOURCES = namescomp.c
|
||||||
|
namescomp_LDADD = $(top_builddir)/src/libxkbcommon.la
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
Copyright 2009 Dan Nicholson
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the names of the authors or their
|
||||||
|
institutions shall not be used in advertising or otherwise to promote the
|
||||||
|
sale, use or other dealings in this Software without prior written
|
||||||
|
authorization from the authors.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "X11/extensions/XKBcommon.h"
|
||||||
|
#include <X11/extensions/XKBstrcommon.h>
|
||||||
|
#include "../src/xkbcomp/utils.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
XkbComponentNamesRec ktcsg;
|
||||||
|
XkbcDescPtr xkb;
|
||||||
|
|
||||||
|
/* Require rmlvo */
|
||||||
|
if (argc < 6) {
|
||||||
|
fprintf(stderr, "Not enough arguments\n");
|
||||||
|
fprintf(stderr, "Usage: %s KEYCODES TYPES COMPAT SYMBOLS GEOMETRY\n",
|
||||||
|
argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ktcsg.keymap = NULL;
|
||||||
|
ktcsg.keycodes = argv[1];
|
||||||
|
ktcsg.types = argv[2];
|
||||||
|
ktcsg.compat = argv[3];
|
||||||
|
ktcsg.symbols = argv[4];
|
||||||
|
ktcsg.geometry = argv[5];
|
||||||
|
|
||||||
|
uSetErrorFile(NULL);
|
||||||
|
XkbcInitAtoms();
|
||||||
|
|
||||||
|
xkb = XkbcCompileKeymapFromComponents(&ktcsg);
|
||||||
|
|
||||||
|
if (!xkb) {
|
||||||
|
fprintf(stderr, "Failed to compile keymap\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
srcdir=${srcdir-.}
|
||||||
|
builddir=${builddir-.}
|
||||||
|
|
||||||
|
name=namescomp
|
||||||
|
prog="$builddir/$name$EXEEXT"
|
||||||
|
log="$builddir/$name.log"
|
||||||
|
|
||||||
|
compile()
|
||||||
|
{
|
||||||
|
echo "$prog '$1' '$2' '$3' '$4' '$5'" >>"$log"
|
||||||
|
$prog "$1" "$2" "$3" "$4" "$5" >>"$log" 2>&1 || exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
failcompile()
|
||||||
|
{
|
||||||
|
echo "$prog '$1' '$2' '$3' '$4' '$5'" >>"$log"
|
||||||
|
if $prog "$1" "$2" "$3" "$4" "$5" >>"$log" 2>&1; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
rm -f "$log"
|
||||||
|
|
||||||
|
compile "xfree86+aliases(qwerty)" "" "" "" ""
|
||||||
|
compile "xfree86+aliases(qwertz)" "" "" "pc+de" ""
|
||||||
|
compile "xfree86+aliases(qwerty)" "complete" "complete" "pc+us" "pc(pc105)"
|
||||||
|
compile "xfree86+aliases(qwertz)" "complete" "complete" \
|
||||||
|
"pc+de+level3(ralt_switch_for_alts_toggle)+group(alts_toggle)" \
|
||||||
|
"pc(pc104)"
|
||||||
|
|
||||||
|
failcompile "" "" "" "" "" ""
|
||||||
|
failcompile "" "complete" "" "" "" ""
|
||||||
|
failcompile "" "" "complete" "" "" ""
|
||||||
|
failcompile "badnames" "complete" "complete" "pc+us" "pc(pc101)"
|
Loading…
Reference in New Issue