diff options
Diffstat (limited to 'catgets')
-rw-r--r-- | catgets/Depend | 1 | ||||
-rw-r--r-- | catgets/Makefile | 13 | ||||
-rw-r--r-- | catgets/tst-catgets.c | 66 |
3 files changed, 77 insertions, 3 deletions
diff --git a/catgets/Depend b/catgets/Depend new file mode 100644 index 0000000000..88c6f3aa95 --- /dev/null +++ b/catgets/Depend @@ -0,0 +1 @@ +intl diff --git a/catgets/Makefile b/catgets/Makefile index b4fbbf9b16..5c72ecdbaa 100644 --- a/catgets/Makefile +++ b/catgets/Makefile @@ -28,6 +28,8 @@ others = gencat install-bin = gencat extra-objs = $(gencat-modules:=.o) +tests = tst-catgets + gencat-modules = xmalloc # To find xmalloc.c @@ -41,16 +43,21 @@ $(objpfx)gencat: $(gencat-modules:%=$(objpfx)%.o) catgets-CPPFLAGS := -DNLSPATH='"$(msgcatdir)/%L/%N:$(msgcatdir)/%L/LC_MESSAGES/%N:$(msgcatdir)/%l/%N:$(msgcatdir)/%l/LC_MESSAGES/%N:"' \ -DHAVE_CONFIG_H -generated = de.msg de.cat test1.cat test1.h +generated = de.msg test1.cat test1.h +generated-dirs = de + +tst-catgets-ENV = NLSPATH="$(objpfx)%l/%N.cat" LANG=de ifneq ($(cross-compiling),yes) -tests: $(objpfx)de.cat $(objpfx)test1.cat +tests: $(objpfx)de/libc.cat $(objpfx)test1.cat # This test just checks whether the program produces any error or not. # The result is not tested. $(objpfx)test1.cat: test1.msg $(objpfx)gencat $(built-program-cmd) -H $(objpfx)test1.h $@ $< -$(objpfx)de.cat: $(objpfx)de.msg $(objpfx)gencat +$(objpfx)de/libc.cat: $(objpfx)de.msg $(objpfx)gencat + -mkdir $(objpfx)de $(built-program-cmd) $@ $< +$(objpfx)tst-catgets.out: $(objpfx)de/libc.cat # Generate a non-simple input file. $(objpfx)de.msg: $(..)po/de.po diff --git a/catgets/tst-catgets.c b/catgets/tst-catgets.c new file mode 100644 index 0000000000..20e2738232 --- /dev/null +++ b/catgets/tst-catgets.c @@ -0,0 +1,66 @@ +#include <mcheck.h> +#include <nl_types.h> +#include <stdio.h> +#include <string.h> + + +static const char *msgs[] = +{ +#define INPUT(str) +#define OUTPUT(str) str, +#include <intl/msgs.h> +}; +#define nmsgs (sizeof (msgs) / sizeof (msgs[0])) + +#define ROUNDS 5 + +int +main (void) +{ + int rnd; + int result = 0; + + mtrace (); + + /* We do this a few times to stress the memory handling. */ + for (rnd = 0; rnd < ROUNDS; ++rnd) + { + nl_catd cd = catopen ("libc", 0); + int cnt; + + if (cd == (nl_catd) -1) + { + printf ("cannot load catalog: %m\n"); + result = 1; + break; + } + + /* Go through all the messages and compare the result. */ + for (cnt = 0; cnt < nmsgs; ++cnt) + { + char *trans; + + trans = catgets (cd, 1, 1 + cnt, + "+#+# is this comes backs it's an error"); + + if (trans == NULL) + { + printf ("catgets return NULL for %d\n", cnt); + result = 1; + } + else if (strcmp (trans, msgs[cnt]) != 0) + { + printf ("expected \"%s\", got \"%s\"\n", msgs[cnt], trans); + result = 1; + } + } + + if (catclose (cd) != 0) + { + printf ("catclose failed: %m\n"); + result = 1; + } + } + + return result; +} |