run: UBSAN_OPTIONS="halt_on_error=1" make | run: UBSAN_OPTIONS="halt_on_error=1" make | ||||
- name: make check | - name: make check | ||||
run: UBSAN_OPTIONS="halt_on_error=1" make check | run: UBSAN_OPTIONS="halt_on_error=1" make check | ||||
valgrind: | |||||
runs-on: ubuntu-latest | |||||
steps: | |||||
- uses: actions/checkout@v2 | |||||
- name: dependencies | |||||
run: sudo apt-get update && sudo apt-get install libpcaudio-dev libsonic-dev ronn kramdown libtool-bin valgrind | |||||
- name: autoconf | |||||
run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 | |||||
- name: configure | |||||
run: ./configure | |||||
- name: make | |||||
run: VALGRIND="libtool --mode=execute valgrind --track-origins=yes --leak-check=full --error-exitcode=1" make | |||||
- name: make check | |||||
run: VALGRIND="libtool --mode=execute valgrind --track-origins=yes --leak-check=full --error-exitcode=1" make check |
tests_encoding_test_LDADD = src/libespeak-ng.la | tests_encoding_test_LDADD = src/libespeak-ng.la | ||||
tests_encoding_test_SOURCES = tests/encoding.c | tests_encoding_test_SOURCES = tests/encoding.c | ||||
tests/encoding.check: LOG_COMPILER=$(VALGRIND) | |||||
check_PROGRAMS += tests/readclause.test | check_PROGRAMS += tests/readclause.test | ||||
tests_readclause_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | tests_readclause_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | ||||
tests_readclause_test_LDADD = src/libespeak-ng-test.la | tests_readclause_test_LDADD = src/libespeak-ng-test.la | ||||
tests_readclause_test_SOURCES = tests/readclause.c | tests_readclause_test_SOURCES = tests/readclause.c | ||||
tests/readclause.check: LOG_COMPILER=$(VALGRIND) | |||||
check_PROGRAMS += tests/api.test | check_PROGRAMS += tests/api.test | ||||
tests_api_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | tests_api_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | ||||
tests_api_test_LDADD = src/libespeak-ng-test.la | tests_api_test_LDADD = src/libespeak-ng-test.la | ||||
tests_api_test_SOURCES = tests/api.c | tests_api_test_SOURCES = tests/api.c | ||||
tests/api.check: LOG_COMPILER=$(VALGRIND) | |||||
check_PROGRAMS += tests/ieee80.test | check_PROGRAMS += tests/ieee80.test | ||||
tests_ieee80_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | tests_ieee80_test_CFLAGS = -Isrc/libespeak-ng ${AM_CFLAGS} | ||||
tests_ieee80_test_LDADD = src/libespeak-ng-test.la | tests_ieee80_test_LDADD = src/libespeak-ng-test.la | ||||
tests_ieee80_test_SOURCES = tests/ieee80.c | tests_ieee80_test_SOURCES = tests/ieee80.c | ||||
tests/ieee80.check: LOG_COMPILER=$(VALGRIND) | |||||
.test.check: | .test.check: | ||||
@echo " TEST $<" | @echo " TEST $<" | ||||
@ESPEAK_DATA_PATH=$(CURDIR) $< && echo " PASSED $<" | |||||
@ESPEAK_DATA_PATH=$(CURDIR) $(LOG_COMPILER) $< && echo " PASSED $<" | |||||
check: tests/encoding.check \ | check: tests/encoding.check \ | ||||
tests/readclause.check \ | tests/readclause.check \ |
echo "testing ${TEST_LANG} $MESSAGE" | echo "testing ${TEST_LANG} $MESSAGE" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" \ | |||||
$VALGRIND src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
echo "${EXPECTED}" > expected.txt | echo "${EXPECTED}" > expected.txt | ||||
if [ "$MESSAGE" = "Ignore" ] ; then | if [ "$MESSAGE" = "Ignore" ] ; then | ||||
echo "testing ${VOICE}${MESSAGE}" | echo "testing ${VOICE}${MESSAGE}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||||
$VALGRIND src/espeak-ng --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | < actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | ||||
echo "${EXPECTED}" > expected.txt | echo "${EXPECTED}" > expected.txt | ||||
MESSAGE=$4 | MESSAGE=$4 | ||||
echo "testing ${VOICE}${MESSAGE}" | echo "testing ${VOICE}${MESSAGE}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||||
$VALGRIND src/espeak-ng --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | < actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | ||||
if [ "$MESSAGE" = "Ignore" ] ; then | if [ "$MESSAGE" = "Ignore" ] ; then | ||||
echo "testing ${TEST_LANG}" | echo "testing ${TEST_LANG}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" \ | |||||
$VALGRIND src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
< actual.txt grep -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > filtered.txt | < actual.txt grep -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > filtered.txt | ||||
if [ "$MESSAGE" = "Ignore" ] ; then | if [ "$MESSAGE" = "Ignore" ] ; then |
echo "testing ${TEST_NAME}" | echo "testing ${TEST_NAME}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng --stdout -m "${TEST_TEXT}" \ | |||||
$VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | < actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | ||||
echo "${EXPECTED}" > expected.txt | echo "${EXPECTED}" > expected.txt | ||||
echo "testing ${INPUT}" | echo "testing ${INPUT}" | ||||
cp $(dirname $INPUT)/$(basename ${INPUT%.*}).expected expected.txt | cp $(dirname $INPUT)/$(basename ${INPUT%.*}).expected expected.txt | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng -m -q $PARAMETERS -f ${INPUT} \ | |||||
$VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} \ | |||||
> actual.txt || exit 1 | > actual.txt || exit 1 | ||||
diff expected.txt actual.txt || exit 1 | diff expected.txt actual.txt || exit 1 | ||||
} | } |