AT_BANNER([Script tests])
-AT_SETUP([gen-options.awk])
-AT_KEYWORDS([gen-options awk script scripts])
+m4_define([TEST_GEN_OPTIONS],
+[AT_KEYWORDS([gen-options awk script scripts])dnl
+AT_DATA([m4_default([$2], [options.def])], [$1])
+AT_CHECK([$AWK -f "$srcdir/scripts/gen-options.awk" dnl
+<m4_default([$2], [options.def]) >options.h])])
-AT_DATA([options.def],
+m4_define([TEST_GEN_OPTIONS_SAMPLE],
[[--option-only
--option-with-val (5)
--option-with-flagval (&x, 5)
--flagval
]])
-AT_CHECK([$AWK -f "$srcdir/scripts/gen-options.awk" <options.def >options.h])
+AT_SETUP([gen-options.awk])
+TEST_GEN_OPTIONS([TEST_GEN_OPTIONS_SAMPLE])
AT_DATA([context.h],
[[struct option { const char *name; int has_arg; int *flag; int val; };
AT_CHECK([$CC -o test2$EXEEXT test2.c && ./test2$EXEEXT],
[0], [expout], [ignore])
+AT_CLEANUP
+
+AT_SETUP([gen-options.awk xgettext annotation])
+TEST_GEN_OPTIONS([TEST_GEN_OPTIONS_SAMPLE])
+
# Check that all help strings are translatable
AT_DATA([messages.awk],
[[BEGIN { lines = -1; }
}
]])
+dnl Antique versions of xgettext which predate the pgettext/msgctx feature
+dnl will produce an output po file with no msgctx lines. So try to spot
+dnl that and skip the test with such versions.
AT_CHECK([xgettext --keyword=PN_:1c,2 options.h
- test -f messages.po || exit 77])
+ test -f messages.po || exit 77
+ grep msgid messages.po >/dev/null &&
+ { grep msgctx messages.po >/dev/null || exit 77; }])
$AWK -f messages.awk options.def | LC_ALL=C sort >expout
AT_CHECK([sed -n '/^msgctxt/{
AT_CLEANUP
AT_SETUP([gen-options.awk packed format])
-AT_KEYWORDS([gen-options awk script scripts])
AT_DATA([test.c], [[#include <stdio.h>
struct option { const char *name; int has_arg; int *flag; int val; };
}
]])
-AT_DATA([single.dat],
-[[--single-option
-]])
-AT_CHECK([$AWK -f "$srcdir/scripts/gen-options.awk" <single.dat >options.h])
+TEST_GEN_OPTIONS([[--single-option
+]], [single.dat])
AT_CHECK([$CC -o single$EXEEXT test.c && ./single$EXEEXT], [0],
[[0
--single-option, 0, 0
]])
-AT_DATA([16bit.dat],
-[[-a, --the-first-option
+TEST_GEN_OPTIONS([[-a, --the-first-option
-b, --the-second-option=ARG
-c, --the-third-option[=ARG]
-d, --the-fourth-option
-]])
-AT_CHECK([$AWK -f "$srcdir/scripts/gen-options.awk" <16bit.dat >options.h])
+]], [16bit.dat])
AT_CHECK([$CC -o 16bit$EXEEXT test.c && ./16bit$EXEEXT], [0],
[[2
--the-first-option, 0, 'a'
sed -n 's/^[[&]]\([[^ ]]*\).*/\1/p' test.def >identifiers
# test 0: sanity test
-AT_DATA([test0.c],
-[[#include "test.h"
+{ cat <<'EOF'
+#include "test.h"
#include <stdio.h>
int main(void)
{
printf("---\n");
-]])
-exec 3<identifiers 4>>test0.c
-while read ident <&3; do
- AS_ECHO([' printf("%s\n---\n", '"strtab+$ident);"]) >&4
-done
-AS_ECHO([' return 0;']) >&4
-AS_ECHO(['}']) >&4
-exec 3<&- 4>&-
+EOF
+while read id; do AS_ECHO([' printf("%s\n---\n", strtab+'"$id"');']); done
+AS_ECHO([' return 0;'])
+AS_ECHO(['}'])
+} <identifiers >test0.c
AT_CHECK([$CC -o test0$EXEEXT test0.c && ./test0$EXEEXT], [0], [---
world
m4_divert_push([PREPARE_TESTS])dnl
test_fix_ltdl () {
$PERL -e 'my $x = 42; exit $x;'; test $? = 42 || exit 77
- $PERL -f "$srcdir/scripts/fix-ltdl.pl" "$@"
+ $PERL "$srcdir/scripts/fix-ltdl.pl" "$@"
}
test_fix_gnulib () {
$PERL -e 'my $x = 42; exit $x;'; test $? = 42 || exit 77
- $PERL -f "$srcdir/scripts/fix-gnulib.pl" "$@"
+ $PERL "$srcdir/scripts/fix-gnulib.pl" "$@"
}
test_gnulib_mk () {
echo;
for arg
do
- sed -n -f - "$srcdir/tests/data/gnulib.mk" <<EOF
-/^## begin gnulib module $arg/,/^## end gnulib module $arg/p
-EOF
+ sed -n -e \
+ "/^## begin gnulib module $arg/,/^## end gnulib module $arg/p" \
+ "$srcdir/tests/data/gnulib.mk"
done
}
m4_divert_pop([PREPARE_TESTS])
AT_SETUP([fix-gnulib.pl SED_HEADER variables])
+AT_KEYWORDS([fix-gnulib perl script scripts])
test_gnulib_mk gen-header >test.mk.in
AT_CHECK([grep SED_HEADER test.mk.in >expout || exit 99])
AT_CLEANUP
AT_SETUP([fix-gnulib.pl %reldir% substitution])
+AT_KEYWORDS([fix-gnulib perl script scripts])
test_gnulib_mk sys_types >test.mk.in
AT_CHECK([grep '%reldir%' test.mk.in >/dev/null || exit 99])
-sed -n -f - test.mk.in >expout <<'EOF'
-${G;p;b}
+sed -n <test.mk.in >expout '
+$G
+$p
+$b
/^## begin gnulib/,/^## end gnulib/!b
-/^#/{p;b}
+/^#/{
+p
+b
+}
s|(srcdir)|(top_srcdir)|
s|%reldir%|lib|
s|BUILT_SOURCES|gnulib_core_headers|
s|sys[[/_]]|lib/&|g
-/^MOSTLYCLEANFILES/{h;b}
-p
-EOF
+/^MOSTLYCLEANFILES/{
+h
+b
+}
+p'
AT_CHECK([test_fix_gnulib -i test.mk.in -o test.mk || exit
sed -n -e '/^## begin gnulib/,/^## end gnulib/p' \
AT_CLEANUP
AT_SETUP([fix-gnulib.pl warning removal])
+AT_KEYWORDS([fix-gnulib perl script scripts])
AT_DATA([test.mk.in], [[
## test begin
AT_CLEANUP
AT_SETUP([fix-gnulib.pl header directory creation])
+AT_KEYWORDS([fix-gnulib perl script scripts])
AT_DATA([extract.sed],
[[/AM_V_GEN/b ok
])])
AT_SETUP([fix-ltdl.pl LIBOBJ mangling (<automake-1.16)])
+AT_KEYWORDS([fix-ltdl perl script scripts])
TEST_FIND_AUTOMAKE([default 1.10 1.11 1.12 1.13 1.14 1.15],
[AS_VERSION_COMPARE(["$amver"], [1.16], [], [continue], [continue])])
AT_CLEANUP
AT_SETUP([fix-ltdl.pl LIBOBJ mangling (>=automake-1.16)])
+AT_KEYWORDS([fix-ltdl perl script scripts])
TEST_FIND_AUTOMAKE([default 1.16 1.17 1.18 1.19],
[AS_VERSION_COMPARE(["$amver"], [1.16], [continue])])