Add docker test build

This commit is contained in:
Michael Hansen 2022-04-25 15:17:59 -04:00
commit 8b4f7e4517
8 changed files with 135 additions and 1 deletions

View file

@ -3,6 +3,7 @@
!install.sh
!build-dist.sh
!check.sh
!test.sh
!requirements_dev.txt
!.isort.cfg
!pylintrc

2
.gitignore vendored
View file

@ -12,3 +12,5 @@ dist/
.venv/
*.wav
*.spec
/samples

40
Dockerfile.test Normal file
View file

@ -0,0 +1,40 @@
# Copyright 2022 Mycroft AI Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# -----------------------------------------------------------------------------
# Dockerfile for Mimic 3 (https://github.com/MycroftAI/mimic3)
#
# Runs code checks and creates source code distributions for PyPI.
#
# Requires Docker buildx: https://docs.docker.com/buildx/working-with-buildx/
# -----------------------------------------------------------------------------
FROM python:3.9
ARG TARGETARCH
ARG TARGETVARIANT
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /build/mimic3
COPY ./ ./
# Install mimic3
RUN --mount=type=cache,id=pip-venv,target=/root/.cache/pip \
./install.sh
# Run tests
RUN --mount=type=cache,id=voices,target=/root/.local/share/mimic3 \
./test.sh

View file

@ -36,10 +36,15 @@ docker-gpu:
binaries:
echo "$(DOCKER_PLATFORM)" | sed -e 's/,/\n/g' | \
while read -r platform; do \
echo "$${platform}"; \
rm -rf "dist/$${platform}"; \
docker buildx build . -f Dockerfile.binary --platform "$${platform}" --output "type=local,dest=dist/$${platform}"; \
done
debian:
debian/build-debian.sh
test:
echo "$(DOCKER_PLATFORM)" | sed -e 's/,/\n/g' | \
while read -r platform; do \
docker buildx build . -f Dockerfile.test --platform "$${platform}"; \
done

40
test.sh Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Copyright 2022 Mycroft AI Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# -----------------------------------------------------------------------------
#
# Generate samples and compare hashes
#
set -eo pipefail
# Directory of *this* script
this_dir="$( cd "$( dirname "$0" )" && pwd )"
expected_hashes="${this_dir}/tests/sample_hashes.txt"
if [ ! -s "${expected_hashes}" ]; then
echo "Missing ${expected_hashes}";
exit 1;
fi
# Path to virtual environment
: "${venv:=${this_dir}/.venv}"
if [ -d "${venv}" ]; then
# Activate virtual environment if available
source "${venv}/bin/activate"
fi
diff "${expected_hashes}" <(python3 tests/get_sample_hashes.py)

View file

@ -33,6 +33,9 @@ from mimic3_tts import Mimic3Settings, Mimic3TextToSpeechSystem, Voice
# -----------------------------------------------------------------------------
_TEST_SENTENCES = {
"af": """'n Reënboog is 'n boog van gekleurde lig wat ontstaan wanneer die
son teen 'n waterdruppel skyn en die wit lig dan deur middel van
ligbreking in die volledige kleurspektrum opgebreek word.""",
"de": """Der Regenbogen ist ein atmosphärisch-optisches Phänomen, das als
kreisbogenförmiges farbiges Lichtband in einer von der Sonne
beschienenen Regenwand oder -wolke wahrgenommen wird.""",

View file

@ -1,3 +1,4 @@
af_ZA/google_nwu 292fa486a38b96a3e3d1b071e58377620953da12f49b2427cdff82969b933b9b
de_DE/m-ailabs_low eafcf586b582c5ffb58c373a62e34c2e35d3b4b5d9d49288dabfacb50bc4fa8c
de_DE/thorsten-emotion_low d7b765c4cc18364023b1e50d4cef1fc6b6d5a780ea1713d2a6ed60459dcbd02e
de_DE/thorsten_low 60967155b319d1a78c2dade56a4f484cf6996c506f2d24b95dad717fafdad302

42
tests/update-hashes.sh Executable file
View file

@ -0,0 +1,42 @@
#!/usr/bin/env bash
# Copyright 2022 Mycroft AI Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# -----------------------------------------------------------------------------
#
# Updates sample hashes and puts WAVs in samples/ directory.
# These should be manually verified.
#
set -eo pipefail
# Directory of *this* script
this_dir="$( cd "$( dirname "$0" )" && pwd )"
base_dir="$(realpath "${this_dir}/..")"
samples_dir="${base_dir}/samples"
expected_hashes="${base_dir}/tests/sample_hashes.txt"
# Path to virtual environment
: "${venv:=${base_dir}/.venv}"
if [ -d "${venv}" ]; then
# Activate virtual environment if available
source "${venv}/bin/activate"
fi
rm -rf "${samples_dir}"
python3 tests/get_sample_hashes.py \
--output-dir "${samples_dir}" \
> "${expected_hashes}"