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

@@ -1,23 +1,23 @@
#!/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
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 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
@@ -44,53 +44,59 @@ test_phon() {
fi

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
}

# Check generated wav file from processed text
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} \
$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
diff expected.txt sum.txt || (echo "... ignoring error" && true)
echo "... ignoring error"
else
diff expected.txt sum.txt || exit 1
exit 1
fi
fi
}

# Check generated wav file from processed text, where $EXPECTED is grep string
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
@@ -98,27 +104,31 @@ test_phwav() {
TEST_LANG=$1
EXPECTED=$2
TEST_TEXT=$3
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]"
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]"
}

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

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

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
}


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

@@ -5,8 +5,7 @@
##### bs: Bosnian

# 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 'čađavog'
Translate 'lica'
@@ -14,27 +13,21 @@ Translate 'hoće'
Translate 'da'
Translate 'mi'
Translate 'pokaže'
Translate 'štos'
EOF
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос."
Translate 'štos'"

##### en: English

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

##### hr: Croatian

# 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 'čađavog'
Translate 'lica'
@@ -42,30 +35,24 @@ Translate 'hoće'
Translate 'da'
Translate 'mi'
Translate 'pokaže'
Translate 'štos'
EOF
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос."
Translate 'štos'"

##### ja: Japanese

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

##### 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 'билмез'
@@ -77,15 +64,12 @@ Found: 'и' [i_:] \$u \$pause
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

# 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 'čađavog'
Translate 'lica'
@@ -93,7 +77,4 @@ Translate 'hoće'
Translate 'da'
Translate 'mi'
Translate 'pokaže'
Translate 'štos'
EOF
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос."

Translate 'štos'"

+ 17
- 11
tests/ssml.test View File

@@ -11,12 +11,14 @@ test_ssml_audio() {
OPTS=$4

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() {
@@ -30,11 +32,15 @@ test_ssml() {
fi

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

Loading…
Cancel
Save