--- a +++ b/.github/workflows/tests.yml @@ -0,0 +1,58 @@ +name: tests +concurrency: + group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} + cancel-in-progress: true +on: + push: + branches: + - "master" + pull_request: + branches: + - '*' # all branches, including forks + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ "ubuntu-latest", "macos-latest", "windows-latest" ] + python-version: ["3.9", "3.10", "3.11"] + steps: + ## Install Braindecode + - name: Checking Out Repository + uses: actions/checkout@v4 + # Cache MNE Data + # The cache key here is fixed except for os + # so if you download a new mne dataset in the code, best to manually increment the key below + - name: Create/Restore MNE Data Cache + id: cache-mne_data + uses: actions/cache@v3 + with: + path: ~/mne_data + key: ${{ runner.os }}-v3 + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Show Python Version + run: python --version + # Update pip + - name: Update pip + run: python -m pip install --upgrade pip + - name: Install Braindecode from Current Checkout + run: pip install -e .[moabb,tests,bids] + # Show Braindecode Version + - run: python -c "import braindecode; print(braindecode.__version__)" + + ## Run Tests + - name: Run Tests # See https://stackoverflow.com/a/59959080/1469195 for the cov-report logic + run: pytest --cov=braindecode test/ --cov-report term --cov-report xml:coverage.xml + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v4 + if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == '3.9'}} + with: + fail_ci_if_error: true + file: ./coverage.xml + path_to_write_report: ./codecov_report.txt + env_vars: OS,PYTHON + token: ${{ secrets.CODECOV_TOKEN }}