diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..73809fb --- /dev/null +++ b/.coveragerc @@ -0,0 +1,16 @@ +[run] +source_pkgs = + fs2 + everyvoice.model.feature_prediction.FastSpeech2_lightning.fs2 +omit = + *tmp* + */run_tests.py + */tests/* + */__main__.py + +[report] +precision = 2 +exclude_lines = + pragma: no cover + if 0: + if __name__ == .__main__.: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..f973e76 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,61 @@ +name: Run Tests +on: + - push + - pull_request +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + test: + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + pull-requests: write + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.10" + cache: "pip" + + - uses: FedericoCarboni/setup-ffmpeg@v2 + + - run: sudo apt-get install sox + + - name: Fetch everyvoice + run: | + git clone https://github.com/EveryVoiceTTS/EveryVoice + cd EveryVoice + git checkout ${{ github.ref_name }} || git checkout ${{ github.head_ref }} || true + git submodule update --init + cd everyvoice/model/feature_prediction/FastSpeech2_lightning + git fetch origin ${{ github.ref }} + git checkout FETCH_HEAD + + - name: Install everyvoice + run: | + cd EveryVoice + CUDA_TAG=cpu pip install -r requirements.torch.txt --find-links https://download.pytorch.org/whl/torch_stable.html + pip install -e .[dev] + pip install coverage + + - run: pip freeze + + - run: pip list + + - name: Run fs2 unit tests + run: | + cd EveryVoice/everyvoice/model/feature_prediction/FastSpeech2_lightning/ + coverage run -m unittest discover everyvoice.model.feature_prediction.FastSpeech2_lightning.fs2.tests + coverage xml + + - name: Plain text coverage report + run: | + cd EveryVoice/everyvoice/model/feature_prediction/FastSpeech2_lightning/ + coverage report + + - uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: false # optional (default = false) + token: ${{ secrets.CODECOV_TOKEN }}