name: tests on: push: branches: - main pull_request: types: [opened, synchronize, reopened] jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: [3.9, "3.10", "3.11"] subset: ["data_tests", "inference_tests", "test_aux", "test_text", "test_tts", "test_tts2", "test_vocoder", "test_xtts", "test_zoo0", "test_zoo1", "test_zoo2"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} architecture: x64 cache: 'pip' cache-dependency-path: 'requirements*' - name: check OS run: cat /etc/os-release - name: set ENV run: export TRAINER_TELEMETRY=0 - name: Install Espeak if: contains(fromJSON('["inference_tests", "test_text", "test_tts", "test_tts2", "test_xtts", "test_zoo0", "test_zoo1", "test_zoo2"]'), matrix.subset) run: | sudo apt-get update sudo apt-get install espeak espeak-ng - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends git make gcc make system-deps - name: Install/upgrade Python setup deps run: python3 -m pip install --upgrade pip setuptools wheel uv - name: Replace scarf urls if: contains(fromJSON('["data_tests", "inference_tests", "test_aux", "test_tts", "test_tts2", "test_xtts", "test_zoo0", "test_zoo1", "test_zoo2"]'), matrix.subset) run: | sed -i 's/https:\/\/coqui.gateway.scarf.sh\//https:\/\/github.com\/coqui-ai\/TTS\/releases\/download\//g' TTS/.models.json - name: Install TTS run: | python3 -m uv pip install --system "TTS[all] @ ." python3 setup.py egg_info - name: Unit tests run: make ${{ matrix.subset }} - name: Upload coverage data uses: actions/upload-artifact@v4 with: name: coverage-data-${{ matrix.subset }}-${{ matrix.python-version }} path: .coverage.* if-no-files-found: ignore coverage: if: always() needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - uses: actions/download-artifact@v4 with: pattern: coverage-data-* merge-multiple: true - name: Combine coverage run: | python -Im pip install --upgrade coverage[toml] python -Im coverage combine python -Im coverage html --skip-covered --skip-empty python -Im coverage report --format=markdown >> $GITHUB_STEP_SUMMARY