Browse Source

tests: do not use temp files

master
Yury Popov 2 years ago
parent
commit
a0107b4aa1
No account linked to committer's email address
3 changed files with 98 additions and 101 deletions
  1. 69
    59
      tests/common
  2. 12
    31
      tests/language-replace.test
  3. 17
    11
      tests/ssml.test

+ 69
- 59
tests/common View File

#!/bin/sh #!/bin/sh
# Test a command for presence and ability to output the sha1 hash of a file # Test a command for presence and ability to output the sha1 hash of a file
is_hash() { 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
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() { check_hash() {
which $1 &&
$1 </dev/null 2>/dev/null |
awk '{if ($1 != "da39a3ee5e6b4b0d3255bfef95601890afd80709") { exit 1; }}'
# Test some common commands to find the correct one for the system being tested on.
which $1 &&
$1 </dev/null 2>/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 MBROLA synthesizer is installed # test if MBROLA synthesizer is installed
fi fi


echo "testing ${TEST_LANG} $MESSAGE" echo "testing ${TEST_LANG} $MESSAGE"
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" \
> actual.txt || exit 1
echo "${EXPECTED}" > expected.txt
if [ "$MESSAGE" = "Ignore" ] ; then
diff expected.txt actual.txt || (echo "... ignoring error" && true)
else
diff expected.txt actual.txt || exit 1
RESULT=$(
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" || exit 1
)
if [ "x$RESULT" != "x$EXPECTED" ] ; then
echo "$RESULT != $EXPECTED"
if [ "$MESSAGE" = "Ignore" ] ; then
echo "... ignoring error"
else
exit 1
fi
fi fi
} }


# Check generated wav file from processed text # Check generated wav file from processed text
test_wav () { test_wav () {
VOICE=$1
EXPECTED=$2
TEST_TEXT=$3
MESSAGE=$4
VOICE=$1
EXPECTED=$2
TEST_TEXT=$3
MESSAGE=$4


echo "testing ${VOICE}${MESSAGE}"
echo "testing ${VOICE} ${MESSAGE}"
RESULT=$(
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \
> actual.txt || exit 1
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt
echo "${EXPECTED}" > expected.txt
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" | $sha1sum | awk '{ print $1 }' || exit 1
)
if [ "x$RESULT" != "x$EXPECTED" ] ; then
echo "$RESULT != $EXPECTED"
if [ "$MESSAGE" = "Ignore" ] ; then if [ "$MESSAGE" = "Ignore" ] ; then
diff expected.txt sum.txt || (echo "... ignoring error" && true)
echo "... ignoring error"
else else
diff expected.txt sum.txt || exit 1
exit 1
fi fi
fi
} }


# Check generated wav file from processed text, where $EXPECTED is grep string # Check generated wav file from processed text, where $EXPECTED is grep string
test_wav_grep () { test_wav_grep () {
VOICE=$1
EXPECTED=$2
TEST_TEXT=$3
MESSAGE=$4
echo "testing ${VOICE}${MESSAGE}"
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \
> actual.txt || exit 1
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt
if [ "$MESSAGE" = "Ignore" ] ; then
cat sum.txt | grep -E "$EXPECTED" || (echo "... ignoring error" && true)
else
cat sum.txt | grep -E "$EXPECTED" || { printf "wrong hash: "; cat sum.txt; exit 1; }
fi
VOICE=$1
EXPECTED=$2
TEST_TEXT=$3
MESSAGE=$4
echo "testing ${VOICE} ${MESSAGE}"
$()
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \
> actual.txt || exit 1
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt
if [ "$MESSAGE" = "Ignore" ] ; then
cat sum.txt | grep -E "$EXPECTED" || (echo "... ignoring error" && true)
else
cat sum.txt | grep -E "$EXPECTED" || { printf "wrong hash: "; cat sum.txt; exit 1; }
fi
} }


# Check generated wav file from list of phonemes # Check generated wav file from list of phonemes
TEST_LANG=$1 TEST_LANG=$1
EXPECTED=$2 EXPECTED=$2
TEST_TEXT=$3 TEST_TEXT=$3
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]"
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]"
} }


test_replace() { test_replace() {
TEST_LANG=$1 TEST_LANG=$1
TEST_TEXT=$2 TEST_TEXT=$2
MESSAGE=$3
EXPECTED=$3
MESSAGE=$4


if [ "$MESSAGE" = "" ] ; then if [ "$MESSAGE" = "" ] ; then
MESSAGE=$TEST_TEXT MESSAGE=$TEST_TEXT
fi fi


echo "testing ${TEST_LANG}" echo "testing ${TEST_LANG}"
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" \
> actual.txt || exit 1
< actual.txt grep -a -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > filtered.txt
if [ "$MESSAGE" = "Ignore" ] ; then
diff expected.txt filtered.txt || (echo "... ignoring error" && true)
else
diff expected.txt filtered.txt || exit 1
RESULT=$(
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" | \
grep -a -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' || exit 1
)
if [ "x$RESULT" != "x$EXPECTED" ] ; then
echo "$RESULT != $EXPECTED"
if [ "$MESSAGE" = "Ignore" ] ; then
echo "... ignoring error"
else
exit 1
fi
fi fi
} }


+ 12
- 31
tests/language-replace.test View File

##### bs: Bosnian ##### bs: Bosnian


# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos.
cat > expected.txt <<EOF
Translate 'ljubazni'
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni'
Translate 'fenjerdžija' Translate 'fenjerdžija'
Translate 'čađavog' Translate 'čađavog'
Translate 'lica' Translate 'lica'
Translate 'da' Translate 'da'
Translate 'mi' Translate 'mi'
Translate 'pokaže' Translate 'pokaže'
Translate 'štos'
EOF
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос."
Translate 'štos'"


##### en: English ##### en: English


cat > expected.txt <<EOF
Translate 'aeon'
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history." "Translate 'aeon'
Found: 'mediaeval' Found: 'mediaeval'
Translate 'oeconomy' Translate 'oeconomy'
Found: 'phoenix' Found: 'phoenix'
Found: 'lost' Found: 'lost'
Translate 'history'
EOF
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history."
Translate 'history'"


##### hr: Croatian ##### hr: Croatian


# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos.
cat > expected.txt <<EOF
Translate 'ljubazni'
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni'
Translate 'fenjerdžija' Translate 'fenjerdžija'
Translate 'čađavog' Translate 'čađavog'
Translate 'lica' Translate 'lica'
Translate 'da' Translate 'da'
Translate 'mi' Translate 'mi'
Translate 'pokaže' Translate 'pokaže'
Translate 'štos'
EOF
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос."
Translate 'štos'"


##### ja: Japanese ##### ja: Japanese


# いろはにほへと. ちりぬるを. わかよたれそ. つねならむ. うゐのおくやま. けふこえて. あさきゆめみし. ゑひもせすん. # いろはにほへと. ちりぬるを. わかよたれそ. つねならむ. うゐのおくやま. けふこえて. あさきゆめみし. ゑひもせすん.
cat > expected.txt <<EOF
Translate 'いろはにほへと'
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン." "Translate 'いろはにほへと'
Translate 'ちりぬるを' Translate 'ちりぬるを'
Translate 'わかよたれそ' Translate 'わかよたれそ'
Translate 'つねならむ' Translate 'つねならむ'
Translate 'うゐのおくやま' Translate 'うゐのおくやま'
Translate 'けふこえて' Translate 'けふこえて'
Translate 'あさきゆめみし' Translate 'あさきゆめみし'
Translate 'ゑひもせすん'
EOF
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン."
Translate 'ゑひもせすん'"


##### mk: Macedonian ##### mk: Macedonian


# Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех. # Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех.
cat > expected.txt <<EOF
Translate 'ѕидарски'
test_replace mk "Dzidarski pejzaž: šugav bilmez so čudenje džvaka ćofte i kelj na tuđ ceh." "Translate 'ѕидарски'
Translate 'пејзаж' Translate 'пејзаж'
Translate 'шугав' Translate 'шугав'
Translate 'билмез' Translate 'билмез'
Translate 'кељ' Translate 'кељ'
Translate 'на' Translate 'на'
Translate 'туѓ' Translate 'туѓ'
Translate 'цех'
EOF
test_replace mk "Dzidarski pejzaž: šugav bilmez so čudenje džvaka ćofte i kelj na tuđ ceh."
Translate 'цех'"


##### sr: Serbian ##### sr: Serbian


# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos.
cat > expected.txt <<EOF
Translate 'ljubazni'
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni'
Translate 'fenjerdžija' Translate 'fenjerdžija'
Translate 'čađavog' Translate 'čađavog'
Translate 'lica' Translate 'lica'
Translate 'da' Translate 'da'
Translate 'mi' Translate 'mi'
Translate 'pokaže' Translate 'pokaže'
Translate 'štos'
EOF
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос."

Translate 'štos'"

+ 17
- 11
tests/ssml.test View File

OPTS=$4 OPTS=$4


echo "testing ${TEST_NAME}" echo "testing ${TEST_NAME}"
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} \
> actual.txt || exit 1
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt
echo "${EXPECTED}" > expected.txt
diff expected.txt sum.txt || exit 1
RESULT=$(
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} | $sha1sum | awk '{ print $1 }' || exit 1
)
if [ "x$RESULT" != "x$EXPECTED" ] ; then
echo "$RESULT != $EXPECTED"
exit 1
fi
} }


test_ssml() { test_ssml() {
fi fi


echo "testing ${INPUT}" echo "testing ${INPUT}"
cp $(dirname $INPUT)/$(basename ${INPUT%.*}).expected expected.txt
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} \
> actual.txt || exit 1
diff expected.txt actual.txt || exit 1
EXPECTED=$(cat $(dirname $INPUT)/$(basename ${INPUT%.*}).expected)
RESULT=$(
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \
$VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} || exit 1
)
if [ "x$RESULT" != "x$EXPECTED" ] ; then
echo "$RESULT != $EXPECTED"
exit 1
fi
} }


for i in `dirname $0`/ssml/*.ssml ; do test_ssml $i; done for i in `dirname $0`/ssml/*.ssml ; do test_ssml $i; done

Loading…
Cancel
Save