#!/bin/sh # Test a command for presence and ability to output the sha1 hash of a file is_hash() { echo -n "checking for SHA1 hashing command ... " if check_hash sha1sum; then sha1sum=sha1sum elif check_hash sha1; then sha1sum=sha1 elif check_hash shasum; then sha1sum=shasum else echo "no" exit 1 fi } check_hash() { which $1 && $1 /dev/null | awk '{if ($1 != "da39a3ee5e6b4b0d3255bfef95601890afd80709") { exit 1; }}' # Test some common commands to find the correct one for the system being tested on. } # test if Klatt synthesizer is installed is_klatt() { echo -n "checking if klatt is installed ... " if [ "`which klatt`" != "" ]; then echo "yes" else echo "no" exit fi } # test if MBROLA synthesizer is installed is_mbrola() { echo -n "checking if MBROLA is installed ... " if [ "`which mbrola`" != "" ]; then echo "yes" else echo "no" exit fi } # Check processed text by phonetic representation of the output test_phon() { TEST_LANG=$1 EXPECTED=$2 TEST_TEXT=$3 MESSAGE=$4 if [ "$MESSAGE" = "" ] ; then MESSAGE=$TEST_TEXT fi echo "testing ${TEST_LANG} ... $MESSAGE" ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ src/espeak-ng -xq -v ${TEST_LANG} "${TEST_TEXT}" > actual.txt echo "${EXPECTED}" > expected.txt if [ "$MESSAGE" = "broken" ] ; then diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true) else diff expected.txt actual.txt || exit 1 fi } # Check generated wav file from processed text test_wav () { VOICE=$1 EXPECTED=$2 TEST_TEXT=$3 echo "testing ${VOICE} ... " ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ src/espeak-ng --stdout -v ${VOICE} "${TEST_TEXT}" | \ $sha1sum | awk '{ print $1 }' > actual.txt echo "${EXPECTED}" > expected.txt diff expected.txt actual.txt || exit 1 } # Check generated wav file from list of phonemes test_phwav() { TEST_LANG=$1 EXPECTED=$2 TEST_TEXT=$3 test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]" } test_replace() { TEST_LANG=$1 TEST_TEXT=$2 MESSAGE=$3 if [ "$MESSAGE" = "" ] ; then MESSAGE=$TEST_TEXT fi echo "testing ${TEST_LANG}" ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" | grep -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > actual.txt if [ "$MESSAGE" = "broken" ] ; then diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true) else diff expected.txt actual.txt || exit 1 fi } test_commandlineoptions() { TEST_LANG=$1 MESSAGE=$2 OPTIONS=$3 EXPECTED=$4 TEST_TEXT=$5 TEST_BROKEN=${6:-false} if [ "x$MESSAGE" = x- ] ; then echo "testing ${TEST_LANG}" else echo "testing ${TEST_LANG} ($MESSAGE)" fi ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ src/espeak-ng ${OPTIONS} -xq -v ${TEST_LANG} "${TEST_TEXT}" > actual.txt echo "${EXPECTED}" > expected.txt if [ x$TEST_BROKEN = xbroken ] ; then diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true) else diff expected.txt actual.txt || exit 1 fi }