mirror of https://gerrit.osmocom.org/asn1c
add asn1c compile smoke test
This commit is contained in:
parent
227b944558
commit
30566d1310
|
@ -40,6 +40,14 @@ stamp-h*
|
|||
# /skeletons
|
||||
/skeletons/check-*
|
||||
|
||||
# /tests/
|
||||
/tests/tests-asn1c-smoke/Makefile.am.libasncodec
|
||||
/tests/tests-asn1c-smoke/Makefile.am.sample
|
||||
/tests/tests-asn1c-smoke/*.[acho]
|
||||
/tests/tests-asn1c-smoke/*.asn
|
||||
/tests/tests-asn1c-smoke/*.txt
|
||||
/tests/tests-asn1c-smoke/converter-example
|
||||
|
||||
# /tests/
|
||||
/tests/tests-c-compiler/test-*
|
||||
|
||||
|
|
|
@ -288,6 +288,7 @@ AM_CONDITIONAL([HAVE_PANDOC], [test -n "$PANDOC"])
|
|||
AC_CONFIG_FILES([\
|
||||
tests/tests-c-compiler/check-src/Makefile \
|
||||
tests/tests-asn1c-compiler/Makefile \
|
||||
tests/tests-asn1c-smoke/Makefile \
|
||||
tests/tests-randomized/Makefile \
|
||||
tests/tests-c-compiler/Makefile \
|
||||
tests/tests-skeletons/Makefile \
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
|
||||
# Tests are ordered in the rough order of the time it takes to go through them.
|
||||
SUBDIRS = \
|
||||
tests-asn1c-compiler \
|
||||
tests-skeletons \
|
||||
tests-asn1c-smoke \
|
||||
tests-c-compiler \
|
||||
tests-randomized
|
||||
|
||||
|
|
10
tests/README
10
tests/README
|
@ -1,6 +1,6 @@
|
|||
|
||||
tests-asn1c-compiler - tests behavior of asn1c compiler, textually
|
||||
tests-c-compiler - attempts to compile C results of asn1c output
|
||||
tests-skeletons - verify correctness of "skeletons" code
|
||||
tests-randomized - thorough testing of DER/OER/PER/XER with fuzzing
|
||||
tests-asn1c-compiler - asn1c produces expected textual output
|
||||
tests-asn1c-smoke - asn1c compiler produces compilable code for simple types
|
||||
tests-c-compiler - C code compiles and runs, and produces expected result
|
||||
tests-skeletons - "skeletons" code primitives are correct
|
||||
tests-randomized - fuzz-testing of DER/OER/PER/XER codecs
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
dist_check_SCRIPTS = check-asn1c-smoke.sh
|
||||
TESTS_ENVIRONMENT= MAKE=${MAKE} \
|
||||
top_builddir=${top_builddir} \
|
||||
top_srcdir=${top_srcdir}
|
||||
TESTS = $(dist_check_SCRIPTS)
|
||||
CLEANFILES = Makefile.am.* test* *.[acho]
|
||||
|
||||
EXTRA_DIST = README
|
|
@ -0,0 +1,2 @@
|
|||
Test that asn1c compiler produces compilable code for basic ASN.1 types,
|
||||
while trying to disable different codecs and vary other compiler flags.
|
|
@ -0,0 +1,74 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
top_builddir=${top_builddir:-../..}
|
||||
top_srcdir=${top_srcdir:-../..}
|
||||
|
||||
cleanup() {
|
||||
rm -rf *.[cho] Makefile.am.* *.txt *.asn
|
||||
rm -f converter-example
|
||||
}
|
||||
|
||||
print_state() {
|
||||
local err=$?
|
||||
set +x
|
||||
set +e
|
||||
trap "" EXIT ERR
|
||||
echo "Error $err while processing:"
|
||||
cat test.asn
|
||||
cat status.txt
|
||||
echo "FAILED"
|
||||
exit $err
|
||||
}
|
||||
|
||||
verify() {
|
||||
local type="$1"
|
||||
local flags="$2"
|
||||
|
||||
cleanup
|
||||
|
||||
asncmd="${top_builddir}/asn1c/asn1c -flink-skeletons -S ${top_srcdir}/skeletons $flags test.asn"
|
||||
|
||||
{
|
||||
echo "$asncmd"
|
||||
echo "${MAKE:-make} -f Makefile.am.example"
|
||||
} > status.txt
|
||||
|
||||
echo "Module DEFINITIONS::=BEGIN T::=$type END" > test.asn
|
||||
$asncmd
|
||||
CFLAGS=-O0 ${MAKE:-make} -f Makefile.am.example | tail -10
|
||||
}
|
||||
|
||||
verify_type_with_variants() {
|
||||
local type="$1"
|
||||
for flags in "-no-gen-PER" "-no-gen-OER" "-no-gen-PER -no-gen-OER" ""; do
|
||||
for native in "" "-fwide-types"; do
|
||||
verify "$type" "$flags $native"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
verify_compile_and_link_variants() {
|
||||
for type in INTEGER "ENUMERATED{foo}" NULL BOOLEAN "BIT STRING" \
|
||||
"OBJECT IDENTIFIER" "RELATIVE-OID" "SEQUENCE{f INTEGER}" \
|
||||
"CHOICE{f INTEGER}" "OCTET STRING" IA5String UTF8String \
|
||||
REAL "SET OF INTEGER" "SEQUENCE OF INTEGER"; do
|
||||
verify_type_with_variants "$type"
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
trap print_state EXIT ERR
|
||||
if [ "x$*" = "x" ]; then
|
||||
verify_compile_and_link_variants
|
||||
else
|
||||
for type in "$@"; do
|
||||
verify_type_with_variants "$type"
|
||||
done
|
||||
fi
|
||||
trap '' EXIT ERR
|
||||
|
||||
cleanup
|
Loading…
Reference in New Issue